Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Side by Side Diff: skia/ext/alpha_proxy_canvas.cc

Issue 22867046: Optimize alpha software PictureDrawQuads. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove default arguments Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "skia/ext/alpha_proxy_canvas.h"
6
7 namespace skia {
8
9 AlphaProxyCanvas::AlphaProxyCanvas(SkCanvas* target,
10 float opacity,
11 bool allow_filter)
12 : SkProxyCanvas(target), opacity_(opacity), allow_filter_(allow_filter) {}
13
14 AlphaProxyCanvas::~AlphaProxyCanvas() {}
15
16 int AlphaProxyCanvas::saveLayer(const SkRect* bounds,
17 const SkPaint* paint,
18 SkCanvas::SaveFlags flags) {
19 SkPaint new_paint = AlphaPaint(paint);
20 return INHERITED::saveLayer(bounds, &new_paint, flags);
21 }
22
23 void AlphaProxyCanvas::drawPaint(const SkPaint& paint) {
24 INHERITED::drawPaint(AlphaPaint(&paint));
25 }
26
27 void AlphaProxyCanvas::drawPoints(SkCanvas::PointMode mode,
28 size_t count,
29 const SkPoint pts[],
30 const SkPaint& paint) {
31 INHERITED::drawPoints(mode, count, pts, AlphaPaint(&paint));
32 }
33
34 void AlphaProxyCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
35 INHERITED::drawRect(rect, AlphaPaint(&paint));
36 }
37
38 void AlphaProxyCanvas::drawOval(const SkRect& oval, const SkPaint& paint) {
39 INHERITED::drawOval(oval, AlphaPaint(&paint));
40 }
41
42 void AlphaProxyCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
43 INHERITED::drawRRect(rrect, AlphaPaint(&paint));
44 }
45
46 void AlphaProxyCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
47 INHERITED::drawPath(path, AlphaPaint(&paint));
48 }
49
50 void AlphaProxyCanvas::drawBitmap(const SkBitmap& bitmap,
51 SkScalar left,
52 SkScalar top,
53 const SkPaint* paint) {
54 SkPaint new_paint = AlphaPaint(paint);
55 INHERITED::drawBitmap(bitmap, left, top, &new_paint);
56 }
57
58 void AlphaProxyCanvas::drawBitmapRectToRect(const SkBitmap& bitmap,
59 const SkRect* src,
60 const SkRect& dst,
61 const SkPaint* paint) {
62 SkPaint new_paint = AlphaPaint(paint);
63 INHERITED::drawBitmapRectToRect(bitmap, src, dst, &new_paint);
64 }
65
66 void AlphaProxyCanvas::drawBitmapMatrix(const SkBitmap& bitmap,
67 const SkMatrix& m,
68 const SkPaint* paint) {
69 SkPaint new_paint = AlphaPaint(paint);
70 INHERITED::drawBitmapMatrix(bitmap, m, &new_paint);
71 }
72
73 void AlphaProxyCanvas::drawBitmapNine(const SkBitmap& bitmap,
74 const SkIRect& center,
75 const SkRect& dst,
76 const SkPaint* paint) {
77 SkPaint new_paint = AlphaPaint(paint);
78 INHERITED::drawBitmapNine(bitmap, center, dst, &new_paint);
79 }
80
81 void AlphaProxyCanvas::drawSprite(const SkBitmap& bitmap,
82 int left,
83 int top,
84 const SkPaint* paint) {
85 SkPaint new_paint = AlphaPaint(paint);
86 INHERITED::drawSprite(bitmap, left, top, &new_paint);
87 }
88
89 void AlphaProxyCanvas::drawText(const void* text,
90 size_t byteLength,
91 SkScalar x,
92 SkScalar y,
93 const SkPaint& paint) {
94 INHERITED::drawText(text, byteLength, x, y, AlphaPaint(&paint));
95 }
96
97 void AlphaProxyCanvas::drawPosText(const void* text,
98 size_t byteLength,
99 const SkPoint pos[],
100 const SkPaint& paint) {
101 INHERITED::drawPosText(text, byteLength, pos, AlphaPaint(&paint));
102 }
103
104 void AlphaProxyCanvas::drawPosTextH(const void* text,
105 size_t byteLength,
106 const SkScalar xpos[],
107 SkScalar constY,
108 const SkPaint& paint) {
109 INHERITED::drawPosTextH(text, byteLength, xpos, constY, AlphaPaint(&paint));
110 }
111
112 void AlphaProxyCanvas::drawTextOnPath(const void* text,
113 size_t byteLength,
114 const SkPath& path,
115 const SkMatrix* matrix,
116 const SkPaint& paint) {
117 INHERITED::drawTextOnPath(text, byteLength, path, matrix, AlphaPaint(&paint));
118 }
119
120 void AlphaProxyCanvas::drawVertices(SkCanvas::VertexMode vmode,
121 int vertexCount,
122 const SkPoint vertices[],
123 const SkPoint texs[],
124 const SkColor colors[],
125 SkXfermode* xmode,
126 const uint16_t indices[],
127 int indexCount,
128 const SkPaint& paint) {
129 INHERITED::drawVertices(vmode,
130 vertexCount,
131 vertices,
132 texs,
133 colors,
134 xmode,
135 indices,
136 indexCount,
137 AlphaPaint(&paint));
138 }
139
140 SkPaint AlphaProxyCanvas::AlphaPaint(const SkPaint* paint) const {
141 SkPaint alpha_paint;
142 if (paint)
143 alpha_paint = *paint;
144 if (opacity_ != 1.f) {
145 alpha_paint.setAlpha(alpha_paint.getAlpha() * opacity_);
146 alpha_paint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
enne (OOO) 2013/08/27 00:25:52 I am most skeptical about this particular line. H
aelias_OOO_until_Jul13 2013/08/27 07:02:28 We can't. I added a DCHECK the mode is already Sr
147 }
148 if (!allow_filter_)
149 alpha_paint.setFilterBitmap(false);
150 return alpha_paint;
151 }
152
153 } // namespace skia
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698