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

Side by Side Diff: src/effects/SkLayerDrawLooper.cpp

Issue 181433009: try to deprecate fFlagsMask from SkLayerDrawLooper (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « include/effects/SkLayerDrawLooper.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "SkCanvas.h" 8 #include "SkCanvas.h"
9 #include "SkColor.h" 9 #include "SkColor.h"
10 #include "SkReadBuffer.h" 10 #include "SkReadBuffer.h"
11 #include "SkWriteBuffer.h" 11 #include "SkWriteBuffer.h"
12 #include "SkLayerDrawLooper.h" 12 #include "SkLayerDrawLooper.h"
13 #include "SkString.h" 13 #include "SkString.h"
14 #include "SkStringUtils.h" 14 #include "SkStringUtils.h"
15 #include "SkUnPreMultiply.h" 15 #include "SkUnPreMultiply.h"
16 16
17 SkLayerDrawLooper::LayerInfo::LayerInfo() { 17 SkLayerDrawLooper::LayerInfo::LayerInfo() {
18 fFlagsMask = 0; // ignore our paint flags 18 #ifdef SK_SUPPORT_LEGACY_LAYERDRAWLOOPER_PAINTFLAGS
19 fFlagsMask = 0; // ignore layerinfo's paint flags
20 #endif
19 fPaintBits = 0; // ignore our paint fields 21 fPaintBits = 0; // ignore our paint fields
20 fColorMode = SkXfermode::kDst_Mode; // ignore our color 22 fColorMode = SkXfermode::kDst_Mode; // ignore our color
21 fOffset.set(0, 0); 23 fOffset.set(0, 0);
22 fPostTranslate = false; 24 fPostTranslate = false;
23 } 25 }
24 26
25 SkLayerDrawLooper::SkLayerDrawLooper() 27 SkLayerDrawLooper::SkLayerDrawLooper()
26 : fRecs(NULL), 28 : fRecs(NULL),
27 fTopRec(NULL), 29 fTopRec(NULL),
28 fCount(0), 30 fCount(0),
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 } 97 }
96 } 98 }
97 } 99 }
98 100
99 // Even with kEntirePaint_Bits, we always ensure that the master paint's 101 // Even with kEntirePaint_Bits, we always ensure that the master paint's
100 // text-encoding is respected, since that controls how we interpret the 102 // text-encoding is respected, since that controls how we interpret the
101 // text/length parameters of a draw[Pos]Text call. 103 // text/length parameters of a draw[Pos]Text call.
102 void SkLayerDrawLooper::ApplyInfo(SkPaint* dst, const SkPaint& src, 104 void SkLayerDrawLooper::ApplyInfo(SkPaint* dst, const SkPaint& src,
103 const LayerInfo& info) { 105 const LayerInfo& info) {
104 106
107 #ifdef SK_SUPPORT_LEGACY_LAYERDRAWLOOPER_PAINTFLAGS
105 uint32_t mask = info.fFlagsMask; 108 uint32_t mask = info.fFlagsMask;
106 dst->setFlags((dst->getFlags() & ~mask) | (src.getFlags() & mask)); 109 dst->setFlags((dst->getFlags() & ~mask) | (src.getFlags() & mask));
110 #endif
107 dst->setColor(xferColor(src.getColor(), dst->getColor(), info.fColorMode)); 111 dst->setColor(xferColor(src.getColor(), dst->getColor(), info.fColorMode));
108 112
109 BitFlags bits = info.fPaintBits; 113 BitFlags bits = info.fPaintBits;
110 SkPaint::TextEncoding encoding = dst->getTextEncoding(); 114 SkPaint::TextEncoding encoding = dst->getTextEncoding();
111 115
112 if (0 == bits) { 116 if (0 == bits) {
113 return; 117 return;
114 } 118 }
115 if (kEntirePaint_Bits == bits) { 119 if (kEntirePaint_Bits == bits) {
116 // we've already computed these, so save it from the assignment 120 // we've already computed these, so save it from the assignment
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 count += 1; 208 count += 1;
205 } 209 }
206 SkASSERT(count == fCount); 210 SkASSERT(count == fCount);
207 } 211 }
208 #endif 212 #endif
209 213
210 buffer.writeInt(fCount); 214 buffer.writeInt(fCount);
211 215
212 Rec* rec = fRecs; 216 Rec* rec = fRecs;
213 for (int i = 0; i < fCount; i++) { 217 for (int i = 0; i < fCount; i++) {
218 #ifdef SK_SUPPORT_LEGACY_LAYERDRAWLOOPER_PAINTFLAGS
214 buffer.writeInt(rec->fInfo.fFlagsMask); 219 buffer.writeInt(rec->fInfo.fFlagsMask);
220 #else
221 buffer.writeInt(0); // remove eventually, when we can bump the version
222 #endif
215 buffer.writeInt(rec->fInfo.fPaintBits); 223 buffer.writeInt(rec->fInfo.fPaintBits);
216 buffer.writeInt(rec->fInfo.fColorMode); 224 buffer.writeInt(rec->fInfo.fColorMode);
217 buffer.writePoint(rec->fInfo.fOffset); 225 buffer.writePoint(rec->fInfo.fOffset);
218 buffer.writeBool(rec->fInfo.fPostTranslate); 226 buffer.writeBool(rec->fInfo.fPostTranslate);
219 buffer.writePaint(rec->fPaint); 227 buffer.writePaint(rec->fPaint);
220 rec = rec->fNext; 228 rec = rec->fNext;
221 } 229 }
222 } 230 }
223 231
224 SkFlattenable* SkLayerDrawLooper::CreateProc(SkReadBuffer& buffer) { 232 SkFlattenable* SkLayerDrawLooper::CreateProc(SkReadBuffer& buffer) {
225 int count = buffer.readInt(); 233 int count = buffer.readInt();
226 234
227 Builder builder; 235 Builder builder;
228 for (int i = 0; i < count; i++) { 236 for (int i = 0; i < count; i++) {
229 LayerInfo info; 237 LayerInfo info;
238 #ifdef SK_SUPPORT_LEGACY_LAYERDRAWLOOPER_PAINTFLAGS
230 info.fFlagsMask = buffer.readInt(); 239 info.fFlagsMask = buffer.readInt();
240 #else
241 (void)buffer.readInt();
242 #endif
231 info.fPaintBits = buffer.readInt(); 243 info.fPaintBits = buffer.readInt();
232 info.fColorMode = (SkXfermode::Mode)buffer.readInt(); 244 info.fColorMode = (SkXfermode::Mode)buffer.readInt();
233 buffer.readPoint(&info.fOffset); 245 buffer.readPoint(&info.fOffset);
234 info.fPostTranslate = buffer.readBool(); 246 info.fPostTranslate = buffer.readBool();
235 buffer.readPaint(builder.addLayerOnTop(info)); 247 buffer.readPaint(builder.addLayerOnTop(info));
236 } 248 }
237 SkLayerDrawLooper* looper = builder.detachLooper(); 249 SkLayerDrawLooper* looper = builder.detachLooper();
238 SkASSERT(count == looper->fCount); 250 SkASSERT(count == looper->fCount);
239 251
240 #ifdef SK_DEBUG 252 #ifdef SK_DEBUG
(...skipping 12 matching lines...) Expand all
253 } 265 }
254 266
255 #ifdef SK_DEVELOPER 267 #ifdef SK_DEVELOPER
256 void SkLayerDrawLooper::toString(SkString* str) const { 268 void SkLayerDrawLooper::toString(SkString* str) const {
257 str->appendf("SkLayerDrawLooper (%d): ", fCount); 269 str->appendf("SkLayerDrawLooper (%d): ", fCount);
258 270
259 Rec* rec = fRecs; 271 Rec* rec = fRecs;
260 for (int i = 0; i < fCount; i++) { 272 for (int i = 0; i < fCount; i++) {
261 str->appendf("%d: ", i); 273 str->appendf("%d: ", i);
262 274
275 #ifdef SK_SUPPORT_LEGACY_LAYERDRAWLOOPER_PAINTFLAGS
263 str->append("flagsMask: ("); 276 str->append("flagsMask: (");
264 if (0 == rec->fInfo.fFlagsMask) { 277 if (0 == rec->fInfo.fFlagsMask) {
265 str->append("None"); 278 str->append("None");
266 } else { 279 } else {
267 bool needSeparator = false; 280 bool needSeparator = false;
268 SkAddFlagToString(str, SkToBool(SkPaint::kAntiAlias_Flag & rec->fInf o.fFlagsMask), 281 SkAddFlagToString(str, SkToBool(SkPaint::kAntiAlias_Flag & rec->fInf o.fFlagsMask),
269 "AntiAlias", &needSeparator); 282 "AntiAlias", &needSeparator);
270 // SkAddFlagToString(str, SkToBool(SkPaint::kFilterBitmap_Flag & rec- >fInfo.fFlagsMask), "FilterBitmap", &needSeparator); 283 // SkAddFlagToString(str, SkToBool(SkPaint::kFilterBitmap_Flag & rec- >fInfo.fFlagsMask), "FilterBitmap", &needSeparator);
271 SkAddFlagToString(str, SkToBool(SkPaint::kDither_Flag & rec->fInfo.f FlagsMask), 284 SkAddFlagToString(str, SkToBool(SkPaint::kDither_Flag & rec->fInfo.f FlagsMask),
272 "Dither", &needSeparator); 285 "Dither", &needSeparator);
(...skipping 13 matching lines...) Expand all
286 "LCDRenderText", &needSeparator); 299 "LCDRenderText", &needSeparator);
287 SkAddFlagToString(str, SkToBool(SkPaint::kEmbeddedBitmapText_Flag & rec->fInfo.fFlagsMask), 300 SkAddFlagToString(str, SkToBool(SkPaint::kEmbeddedBitmapText_Flag & rec->fInfo.fFlagsMask),
288 "EmbeddedBitmapText", &needSeparator); 301 "EmbeddedBitmapText", &needSeparator);
289 SkAddFlagToString(str, SkToBool(SkPaint::kAutoHinting_Flag & rec->fI nfo.fFlagsMask), 302 SkAddFlagToString(str, SkToBool(SkPaint::kAutoHinting_Flag & rec->fI nfo.fFlagsMask),
290 "Autohinted", &needSeparator); 303 "Autohinted", &needSeparator);
291 SkAddFlagToString(str, SkToBool(SkPaint::kVerticalText_Flag & rec->f Info.fFlagsMask), 304 SkAddFlagToString(str, SkToBool(SkPaint::kVerticalText_Flag & rec->f Info.fFlagsMask),
292 "VerticalText", &needSeparator); 305 "VerticalText", &needSeparator);
293 SkAddFlagToString(str, SkToBool(SkPaint::kGenA8FromLCD_Flag & rec->f Info.fFlagsMask), 306 SkAddFlagToString(str, SkToBool(SkPaint::kGenA8FromLCD_Flag & rec->f Info.fFlagsMask),
294 "GenA8FromLCD", &needSeparator); 307 "GenA8FromLCD", &needSeparator);
295 } 308 }
309 #endif
296 str->append(") "); 310 str->append(") ");
297 311
298 str->append("paintBits: ("); 312 str->append("paintBits: (");
299 if (0 == rec->fInfo.fPaintBits) { 313 if (0 == rec->fInfo.fPaintBits) {
300 str->append("None"); 314 str->append("None");
301 } else if (kEntirePaint_Bits == rec->fInfo.fPaintBits) { 315 } else if (kEntirePaint_Bits == rec->fInfo.fPaintBits) {
302 str->append("EntirePaint"); 316 str->append("EntirePaint");
303 } else { 317 } else {
304 bool needSeparator = false; 318 bool needSeparator = false;
305 SkAddFlagToString(str, SkToBool(kStyle_Bit & rec->fInfo.fPaintBits), "Style", 319 SkAddFlagToString(str, SkToBool(kStyle_Bit & rec->fInfo.fPaintBits), "Style",
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 SkLayerDrawLooper* looper = SkNEW(SkLayerDrawLooper); 418 SkLayerDrawLooper* looper = SkNEW(SkLayerDrawLooper);
405 looper->fCount = fCount; 419 looper->fCount = fCount;
406 looper->fRecs = fRecs; 420 looper->fRecs = fRecs;
407 421
408 fCount = 0; 422 fCount = 0;
409 fRecs = NULL; 423 fRecs = NULL;
410 fTopRec = NULL; 424 fTopRec = NULL;
411 425
412 return looper; 426 return looper;
413 } 427 }
OLDNEW
« no previous file with comments | « include/effects/SkLayerDrawLooper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698