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

Side by Side Diff: src/core/SkPaint.cpp

Issue 677453002: Remove android specific genID from SkPaint. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « include/core/SkPaint.h ('k') | tests/PaintTest.cpp » ('j') | 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 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkPaint.h" 8 #include "SkPaint.h"
9 #include "SkAnnotation.h" 9 #include "SkAnnotation.h"
10 #include "SkAutoKern.h" 10 #include "SkAutoKern.h"
(...skipping 21 matching lines...) Expand all
32 #include "SkTextFormatParams.h" 32 #include "SkTextFormatParams.h"
33 #include "SkTextToPathIter.h" 33 #include "SkTextToPathIter.h"
34 #include "SkTLazy.h" 34 #include "SkTLazy.h"
35 #include "SkTypeface.h" 35 #include "SkTypeface.h"
36 #include "SkXfermode.h" 36 #include "SkXfermode.h"
37 37
38 // define this to get a printf for out-of-range parameter in setters 38 // define this to get a printf for out-of-range parameter in setters
39 // e.g. setTextSize(-1) 39 // e.g. setTextSize(-1)
40 //#define SK_REPORT_API_RANGE_CHECK 40 //#define SK_REPORT_API_RANGE_CHECK
41 41
42 #ifdef SK_BUILD_FOR_ANDROID
43 #define GEN_ID_INC fGenerationID++
44 #define GEN_ID_INC_EVAL(expression) if (expression) { fGenerationID++; }
45 #else
46 #define GEN_ID_INC
47 #define GEN_ID_INC_EVAL(expression)
48 #endif
49
50 SkPaint::SkPaint() { 42 SkPaint::SkPaint() {
51 fTypeface = NULL; 43 fTypeface = NULL;
52 fPathEffect = NULL; 44 fPathEffect = NULL;
53 fShader = NULL; 45 fShader = NULL;
54 fXfermode = NULL; 46 fXfermode = NULL;
55 fMaskFilter = NULL; 47 fMaskFilter = NULL;
56 fColorFilter = NULL; 48 fColorFilter = NULL;
57 fRasterizer = NULL; 49 fRasterizer = NULL;
58 fLooper = NULL; 50 fLooper = NULL;
59 fImageFilter = NULL; 51 fImageFilter = NULL;
60 fAnnotation = NULL; 52 fAnnotation = NULL;
61 53
62 fTextSize = SkPaintDefaults_TextSize; 54 fTextSize = SkPaintDefaults_TextSize;
63 fTextScaleX = SK_Scalar1; 55 fTextScaleX = SK_Scalar1;
64 fTextSkewX = 0; 56 fTextSkewX = 0;
65 fColor = SK_ColorBLACK; 57 fColor = SK_ColorBLACK;
66 fWidth = 0; 58 fWidth = 0;
67 fMiterLimit = SkPaintDefaults_MiterLimit; 59 fMiterLimit = SkPaintDefaults_MiterLimit;
68 60
69 // Zero all bitfields, then set some non-zero defaults. 61 // Zero all bitfields, then set some non-zero defaults.
70 fBitfieldsUInt = 0; 62 fBitfieldsUInt = 0;
71 fBitfields.fFlags = SkPaintDefaults_Flags; 63 fBitfields.fFlags = SkPaintDefaults_Flags;
72 fBitfields.fCapType = kDefault_Cap; 64 fBitfields.fCapType = kDefault_Cap;
73 fBitfields.fJoinType = kDefault_Join; 65 fBitfields.fJoinType = kDefault_Join;
74 fBitfields.fTextAlign = kLeft_Align; 66 fBitfields.fTextAlign = kLeft_Align;
75 fBitfields.fStyle = kFill_Style; 67 fBitfields.fStyle = kFill_Style;
76 fBitfields.fTextEncoding = kUTF8_TextEncoding; 68 fBitfields.fTextEncoding = kUTF8_TextEncoding;
77 fBitfields.fHinting = SkPaintDefaults_Hinting; 69 fBitfields.fHinting = SkPaintDefaults_Hinting;
78
79 #ifdef SK_BUILD_FOR_ANDROID
80 fGenerationID = 0;
81 #endif
82 } 70 }
83 71
84 SkPaint::SkPaint(const SkPaint& src) { 72 SkPaint::SkPaint(const SkPaint& src) {
85 #define COPY(field) field = src.field 73 #define COPY(field) field = src.field
86 #define REF_COPY(field) field = SkSafeRef(src.field) 74 #define REF_COPY(field) field = SkSafeRef(src.field)
87 75
88 REF_COPY(fTypeface); 76 REF_COPY(fTypeface);
89 REF_COPY(fPathEffect); 77 REF_COPY(fPathEffect);
90 REF_COPY(fShader); 78 REF_COPY(fShader);
91 REF_COPY(fXfermode); 79 REF_COPY(fXfermode);
92 REF_COPY(fMaskFilter); 80 REF_COPY(fMaskFilter);
93 REF_COPY(fColorFilter); 81 REF_COPY(fColorFilter);
94 REF_COPY(fRasterizer); 82 REF_COPY(fRasterizer);
95 REF_COPY(fLooper); 83 REF_COPY(fLooper);
96 REF_COPY(fImageFilter); 84 REF_COPY(fImageFilter);
97 REF_COPY(fAnnotation); 85 REF_COPY(fAnnotation);
98 86
99 COPY(fTextSize); 87 COPY(fTextSize);
100 COPY(fTextScaleX); 88 COPY(fTextScaleX);
101 COPY(fTextSkewX); 89 COPY(fTextSkewX);
102 COPY(fColor); 90 COPY(fColor);
103 COPY(fWidth); 91 COPY(fWidth);
104 COPY(fMiterLimit); 92 COPY(fMiterLimit);
105 COPY(fBitfields); 93 COPY(fBitfields);
106 94
107 #ifdef SK_BUILD_FOR_ANDROID
108 COPY(fGenerationID);
109 #endif
110
111 #undef COPY 95 #undef COPY
112 #undef REF_COPY 96 #undef REF_COPY
113 } 97 }
114 98
115 SkPaint::~SkPaint() { 99 SkPaint::~SkPaint() {
116 SkSafeUnref(fTypeface); 100 SkSafeUnref(fTypeface);
117 SkSafeUnref(fPathEffect); 101 SkSafeUnref(fPathEffect);
118 SkSafeUnref(fShader); 102 SkSafeUnref(fShader);
119 SkSafeUnref(fXfermode); 103 SkSafeUnref(fXfermode);
120 SkSafeUnref(fMaskFilter); 104 SkSafeUnref(fMaskFilter);
(...skipping 25 matching lines...) Expand all
146 REF_COPY(fImageFilter); 130 REF_COPY(fImageFilter);
147 REF_COPY(fAnnotation); 131 REF_COPY(fAnnotation);
148 132
149 COPY(fTextSize); 133 COPY(fTextSize);
150 COPY(fTextScaleX); 134 COPY(fTextScaleX);
151 COPY(fTextSkewX); 135 COPY(fTextSkewX);
152 COPY(fColor); 136 COPY(fColor);
153 COPY(fWidth); 137 COPY(fWidth);
154 COPY(fMiterLimit); 138 COPY(fMiterLimit);
155 COPY(fBitfields); 139 COPY(fBitfields);
156 #ifdef SK_BUILD_FOR_ANDROID
157 ++fGenerationID;
158 #endif
159 140
160 return *this; 141 return *this;
161 142
162 #undef COPY 143 #undef COPY
163 #undef REF_COPY 144 #undef REF_COPY
164 } 145 }
165 146
166 bool operator==(const SkPaint& a, const SkPaint& b) { 147 bool operator==(const SkPaint& a, const SkPaint& b) {
167 #define EQUAL(field) (a.field == b.field) 148 #define EQUAL(field) (a.field == b.field)
168 // Don't check fGenerationID, which can be different for logically equal pai nts.
169 return EQUAL(fTypeface) 149 return EQUAL(fTypeface)
170 && EQUAL(fPathEffect) 150 && EQUAL(fPathEffect)
171 && EQUAL(fShader) 151 && EQUAL(fShader)
172 && EQUAL(fXfermode) 152 && EQUAL(fXfermode)
173 && EQUAL(fMaskFilter) 153 && EQUAL(fMaskFilter)
174 && EQUAL(fColorFilter) 154 && EQUAL(fColorFilter)
175 && EQUAL(fRasterizer) 155 && EQUAL(fRasterizer)
176 && EQUAL(fLooper) 156 && EQUAL(fLooper)
177 && EQUAL(fImageFilter) 157 && EQUAL(fImageFilter)
178 && EQUAL(fAnnotation) 158 && EQUAL(fAnnotation)
179 && EQUAL(fTextSize) 159 && EQUAL(fTextSize)
180 && EQUAL(fTextScaleX) 160 && EQUAL(fTextScaleX)
181 && EQUAL(fTextSkewX) 161 && EQUAL(fTextSkewX)
182 && EQUAL(fColor) 162 && EQUAL(fColor)
183 && EQUAL(fWidth) 163 && EQUAL(fWidth)
184 && EQUAL(fMiterLimit) 164 && EQUAL(fMiterLimit)
185 && EQUAL(fBitfieldsUInt) 165 && EQUAL(fBitfieldsUInt)
186 ; 166 ;
187 #undef EQUAL 167 #undef EQUAL
188 } 168 }
189 169
190 void SkPaint::reset() { 170 void SkPaint::reset() {
191 SkPaint init; 171 SkPaint init;
192
193 #ifdef SK_BUILD_FOR_ANDROID
194 uint32_t oldGenerationID = fGenerationID;
195 #endif
196 *this = init; 172 *this = init;
197 #ifdef SK_BUILD_FOR_ANDROID
198 fGenerationID = oldGenerationID + 1;
199 #endif
200 } 173 }
201 174
202 #ifdef SK_BUILD_FOR_ANDROID
203 uint32_t SkPaint::getGenerationID() const {
204 return fGenerationID;
205 }
206
207 void SkPaint::setGenerationID(uint32_t generationID) {
208 fGenerationID = generationID;
209 }
210 #endif
211
212 void SkPaint::setFilterLevel(FilterLevel level) { 175 void SkPaint::setFilterLevel(FilterLevel level) {
213 GEN_ID_INC_EVAL((unsigned) level != fBitfields.fFilterLevel);
214 fBitfields.fFilterLevel = level; 176 fBitfields.fFilterLevel = level;
215 } 177 }
216 178
217 void SkPaint::setHinting(Hinting hintingLevel) { 179 void SkPaint::setHinting(Hinting hintingLevel) {
218 GEN_ID_INC_EVAL((unsigned) hintingLevel != fBitfields.fHinting);
219 fBitfields.fHinting = hintingLevel; 180 fBitfields.fHinting = hintingLevel;
220 } 181 }
221 182
222 void SkPaint::setFlags(uint32_t flags) { 183 void SkPaint::setFlags(uint32_t flags) {
223 GEN_ID_INC_EVAL(flags != fBitfields.fFlags);
224 fBitfields.fFlags = flags; 184 fBitfields.fFlags = flags;
225 } 185 }
226 186
227 void SkPaint::setAntiAlias(bool doAA) { 187 void SkPaint::setAntiAlias(bool doAA) {
228 this->setFlags(SkSetClearMask(fBitfields.fFlags, doAA, kAntiAlias_Flag)); 188 this->setFlags(SkSetClearMask(fBitfields.fFlags, doAA, kAntiAlias_Flag));
229 } 189 }
230 190
231 void SkPaint::setDither(bool doDither) { 191 void SkPaint::setDither(bool doDither) {
232 this->setFlags(SkSetClearMask(fBitfields.fFlags, doDither, kDither_Flag)); 192 this->setFlags(SkSetClearMask(fBitfields.fFlags, doDither, kDither_Flag));
233 } 193 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 void SkPaint::setDevKernText(bool doDevKern) { 231 void SkPaint::setDevKernText(bool doDevKern) {
272 this->setFlags(SkSetClearMask(fBitfields.fFlags, doDevKern, kDevKernText_Fla g)); 232 this->setFlags(SkSetClearMask(fBitfields.fFlags, doDevKern, kDevKernText_Fla g));
273 } 233 }
274 234
275 void SkPaint::setDistanceFieldTextTEMP(bool doDistanceFieldText) { 235 void SkPaint::setDistanceFieldTextTEMP(bool doDistanceFieldText) {
276 this->setFlags(SkSetClearMask(fBitfields.fFlags, doDistanceFieldText, kDista nceFieldTextTEMP_Flag)); 236 this->setFlags(SkSetClearMask(fBitfields.fFlags, doDistanceFieldText, kDista nceFieldTextTEMP_Flag));
277 } 237 }
278 238
279 void SkPaint::setStyle(Style style) { 239 void SkPaint::setStyle(Style style) {
280 if ((unsigned)style < kStyleCount) { 240 if ((unsigned)style < kStyleCount) {
281 GEN_ID_INC_EVAL((unsigned)style != fBitfields.fStyle);
282 fBitfields.fStyle = style; 241 fBitfields.fStyle = style;
283 } else { 242 } else {
284 #ifdef SK_REPORT_API_RANGE_CHECK 243 #ifdef SK_REPORT_API_RANGE_CHECK
285 SkDebugf("SkPaint::setStyle(%d) out of range\n", style); 244 SkDebugf("SkPaint::setStyle(%d) out of range\n", style);
286 #endif 245 #endif
287 } 246 }
288 } 247 }
289 248
290 void SkPaint::setColor(SkColor color) { 249 void SkPaint::setColor(SkColor color) {
291 GEN_ID_INC_EVAL(color != fColor);
292 fColor = color; 250 fColor = color;
293 } 251 }
294 252
295 void SkPaint::setAlpha(U8CPU a) { 253 void SkPaint::setAlpha(U8CPU a) {
296 this->setColor(SkColorSetARGB(a, SkColorGetR(fColor), 254 this->setColor(SkColorSetARGB(a, SkColorGetR(fColor),
297 SkColorGetG(fColor), SkColorGetB(fColor))); 255 SkColorGetG(fColor), SkColorGetB(fColor)));
298 } 256 }
299 257
300 void SkPaint::setARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) { 258 void SkPaint::setARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) {
301 this->setColor(SkColorSetARGB(a, r, g, b)); 259 this->setColor(SkColorSetARGB(a, r, g, b));
302 } 260 }
303 261
304 void SkPaint::setStrokeWidth(SkScalar width) { 262 void SkPaint::setStrokeWidth(SkScalar width) {
305 if (width >= 0) { 263 if (width >= 0) {
306 GEN_ID_INC_EVAL(width != fWidth);
307 fWidth = width; 264 fWidth = width;
308 } else { 265 } else {
309 #ifdef SK_REPORT_API_RANGE_CHECK 266 #ifdef SK_REPORT_API_RANGE_CHECK
310 SkDebugf("SkPaint::setStrokeWidth() called with negative value\n"); 267 SkDebugf("SkPaint::setStrokeWidth() called with negative value\n");
311 #endif 268 #endif
312 } 269 }
313 } 270 }
314 271
315 void SkPaint::setStrokeMiter(SkScalar limit) { 272 void SkPaint::setStrokeMiter(SkScalar limit) {
316 if (limit >= 0) { 273 if (limit >= 0) {
317 GEN_ID_INC_EVAL(limit != fMiterLimit);
318 fMiterLimit = limit; 274 fMiterLimit = limit;
319 } else { 275 } else {
320 #ifdef SK_REPORT_API_RANGE_CHECK 276 #ifdef SK_REPORT_API_RANGE_CHECK
321 SkDebugf("SkPaint::setStrokeMiter() called with negative value\n"); 277 SkDebugf("SkPaint::setStrokeMiter() called with negative value\n");
322 #endif 278 #endif
323 } 279 }
324 } 280 }
325 281
326 void SkPaint::setStrokeCap(Cap ct) { 282 void SkPaint::setStrokeCap(Cap ct) {
327 if ((unsigned)ct < kCapCount) { 283 if ((unsigned)ct < kCapCount) {
328 GEN_ID_INC_EVAL((unsigned)ct != fBitfields.fCapType);
329 fBitfields.fCapType = SkToU8(ct); 284 fBitfields.fCapType = SkToU8(ct);
330 } else { 285 } else {
331 #ifdef SK_REPORT_API_RANGE_CHECK 286 #ifdef SK_REPORT_API_RANGE_CHECK
332 SkDebugf("SkPaint::setStrokeCap(%d) out of range\n", ct); 287 SkDebugf("SkPaint::setStrokeCap(%d) out of range\n", ct);
333 #endif 288 #endif
334 } 289 }
335 } 290 }
336 291
337 void SkPaint::setStrokeJoin(Join jt) { 292 void SkPaint::setStrokeJoin(Join jt) {
338 if ((unsigned)jt < kJoinCount) { 293 if ((unsigned)jt < kJoinCount) {
339 GEN_ID_INC_EVAL((unsigned)jt != fBitfields.fJoinType);
340 fBitfields.fJoinType = SkToU8(jt); 294 fBitfields.fJoinType = SkToU8(jt);
341 } else { 295 } else {
342 #ifdef SK_REPORT_API_RANGE_CHECK 296 #ifdef SK_REPORT_API_RANGE_CHECK
343 SkDebugf("SkPaint::setStrokeJoin(%d) out of range\n", jt); 297 SkDebugf("SkPaint::setStrokeJoin(%d) out of range\n", jt);
344 #endif 298 #endif
345 } 299 }
346 } 300 }
347 301
348 /////////////////////////////////////////////////////////////////////////////// 302 ///////////////////////////////////////////////////////////////////////////////
349 303
350 void SkPaint::setTextAlign(Align align) { 304 void SkPaint::setTextAlign(Align align) {
351 if ((unsigned)align < kAlignCount) { 305 if ((unsigned)align < kAlignCount) {
352 GEN_ID_INC_EVAL((unsigned)align != fBitfields.fTextAlign);
353 fBitfields.fTextAlign = SkToU8(align); 306 fBitfields.fTextAlign = SkToU8(align);
354 } else { 307 } else {
355 #ifdef SK_REPORT_API_RANGE_CHECK 308 #ifdef SK_REPORT_API_RANGE_CHECK
356 SkDebugf("SkPaint::setTextAlign(%d) out of range\n", align); 309 SkDebugf("SkPaint::setTextAlign(%d) out of range\n", align);
357 #endif 310 #endif
358 } 311 }
359 } 312 }
360 313
361 void SkPaint::setTextSize(SkScalar ts) { 314 void SkPaint::setTextSize(SkScalar ts) {
362 if (ts >= 0) { 315 if (ts >= 0) {
363 GEN_ID_INC_EVAL(ts != fTextSize);
364 fTextSize = ts; 316 fTextSize = ts;
365 } else { 317 } else {
366 #ifdef SK_REPORT_API_RANGE_CHECK 318 #ifdef SK_REPORT_API_RANGE_CHECK
367 SkDebugf("SkPaint::setTextSize() called with negative value\n"); 319 SkDebugf("SkPaint::setTextSize() called with negative value\n");
368 #endif 320 #endif
369 } 321 }
370 } 322 }
371 323
372 void SkPaint::setTextScaleX(SkScalar scaleX) { 324 void SkPaint::setTextScaleX(SkScalar scaleX) {
373 GEN_ID_INC_EVAL(scaleX != fTextScaleX);
374 fTextScaleX = scaleX; 325 fTextScaleX = scaleX;
375 } 326 }
376 327
377 void SkPaint::setTextSkewX(SkScalar skewX) { 328 void SkPaint::setTextSkewX(SkScalar skewX) {
378 GEN_ID_INC_EVAL(skewX != fTextSkewX);
379 fTextSkewX = skewX; 329 fTextSkewX = skewX;
380 } 330 }
381 331
382 void SkPaint::setTextEncoding(TextEncoding encoding) { 332 void SkPaint::setTextEncoding(TextEncoding encoding) {
383 if ((unsigned)encoding <= kGlyphID_TextEncoding) { 333 if ((unsigned)encoding <= kGlyphID_TextEncoding) {
384 GEN_ID_INC_EVAL((unsigned)encoding != fBitfields.fTextEncoding);
385 fBitfields.fTextEncoding = encoding; 334 fBitfields.fTextEncoding = encoding;
386 } else { 335 } else {
387 #ifdef SK_REPORT_API_RANGE_CHECK 336 #ifdef SK_REPORT_API_RANGE_CHECK
388 SkDebugf("SkPaint::setTextEncoding(%d) out of range\n", encoding); 337 SkDebugf("SkPaint::setTextEncoding(%d) out of range\n", encoding);
389 #endif 338 #endif
390 } 339 }
391 } 340 }
392 341
393 /////////////////////////////////////////////////////////////////////////////// 342 ///////////////////////////////////////////////////////////////////////////////
394 343
395 SkTypeface* SkPaint::setTypeface(SkTypeface* font) { 344 SkTypeface* SkPaint::setTypeface(SkTypeface* font) {
396 SkRefCnt_SafeAssign(fTypeface, font); 345 SkRefCnt_SafeAssign(fTypeface, font);
397 GEN_ID_INC;
398 return font; 346 return font;
399 } 347 }
400 348
401 SkRasterizer* SkPaint::setRasterizer(SkRasterizer* r) { 349 SkRasterizer* SkPaint::setRasterizer(SkRasterizer* r) {
402 SkRefCnt_SafeAssign(fRasterizer, r); 350 SkRefCnt_SafeAssign(fRasterizer, r);
403 GEN_ID_INC;
404 return r; 351 return r;
405 } 352 }
406 353
407 SkDrawLooper* SkPaint::setLooper(SkDrawLooper* looper) { 354 SkDrawLooper* SkPaint::setLooper(SkDrawLooper* looper) {
408 SkRefCnt_SafeAssign(fLooper, looper); 355 SkRefCnt_SafeAssign(fLooper, looper);
409 GEN_ID_INC;
410 return looper; 356 return looper;
411 } 357 }
412 358
413 SkImageFilter* SkPaint::setImageFilter(SkImageFilter* imageFilter) { 359 SkImageFilter* SkPaint::setImageFilter(SkImageFilter* imageFilter) {
414 SkRefCnt_SafeAssign(fImageFilter, imageFilter); 360 SkRefCnt_SafeAssign(fImageFilter, imageFilter);
415 GEN_ID_INC;
416 return imageFilter; 361 return imageFilter;
417 } 362 }
418 363
419 SkAnnotation* SkPaint::setAnnotation(SkAnnotation* annotation) { 364 SkAnnotation* SkPaint::setAnnotation(SkAnnotation* annotation) {
420 SkRefCnt_SafeAssign(fAnnotation, annotation); 365 SkRefCnt_SafeAssign(fAnnotation, annotation);
421 GEN_ID_INC;
422 return annotation; 366 return annotation;
423 } 367 }
424 368
425 /////////////////////////////////////////////////////////////////////////////// 369 ///////////////////////////////////////////////////////////////////////////////
426 370
427 static SkScalar mag2(SkScalar x, SkScalar y) { 371 static SkScalar mag2(SkScalar x, SkScalar y) {
428 return x * x + y * y; 372 return x * x + y * y;
429 } 373 }
430 374
431 static bool tooBig(const SkMatrix& m, SkScalar ma2max) { 375 static bool tooBig(const SkMatrix& m, SkScalar ma2max) {
(...skipping 1621 matching lines...) Expand 10 before | Expand all | Expand 10 after
2053 SkString tag; 1997 SkString tag;
2054 buffer.readUInt(); 1998 buffer.readUInt();
2055 buffer.readString(&tag); 1999 buffer.readString(&tag);
2056 buffer.readBool(); 2000 buffer.readBool();
2057 } 2001 }
2058 } 2002 }
2059 2003
2060 /////////////////////////////////////////////////////////////////////////////// 2004 ///////////////////////////////////////////////////////////////////////////////
2061 2005
2062 SkShader* SkPaint::setShader(SkShader* shader) { 2006 SkShader* SkPaint::setShader(SkShader* shader) {
2063 GEN_ID_INC_EVAL(shader != fShader);
2064 SkRefCnt_SafeAssign(fShader, shader); 2007 SkRefCnt_SafeAssign(fShader, shader);
2065 return shader; 2008 return shader;
2066 } 2009 }
2067 2010
2068 SkColorFilter* SkPaint::setColorFilter(SkColorFilter* filter) { 2011 SkColorFilter* SkPaint::setColorFilter(SkColorFilter* filter) {
2069 GEN_ID_INC_EVAL(filter != fColorFilter);
2070 SkRefCnt_SafeAssign(fColorFilter, filter); 2012 SkRefCnt_SafeAssign(fColorFilter, filter);
2071 return filter; 2013 return filter;
2072 } 2014 }
2073 2015
2074 SkXfermode* SkPaint::setXfermode(SkXfermode* mode) { 2016 SkXfermode* SkPaint::setXfermode(SkXfermode* mode) {
2075 GEN_ID_INC_EVAL(mode != fXfermode);
2076 SkRefCnt_SafeAssign(fXfermode, mode); 2017 SkRefCnt_SafeAssign(fXfermode, mode);
2077 return mode; 2018 return mode;
2078 } 2019 }
2079 2020
2080 SkXfermode* SkPaint::setXfermodeMode(SkXfermode::Mode mode) { 2021 SkXfermode* SkPaint::setXfermodeMode(SkXfermode::Mode mode) {
2081 SkSafeUnref(fXfermode); 2022 SkSafeUnref(fXfermode);
2082 fXfermode = SkXfermode::Create(mode); 2023 fXfermode = SkXfermode::Create(mode);
2083 GEN_ID_INC;
2084 return fXfermode; 2024 return fXfermode;
2085 } 2025 }
2086 2026
2087 SkPathEffect* SkPaint::setPathEffect(SkPathEffect* effect) { 2027 SkPathEffect* SkPaint::setPathEffect(SkPathEffect* effect) {
2088 GEN_ID_INC_EVAL(effect != fPathEffect);
2089 SkRefCnt_SafeAssign(fPathEffect, effect); 2028 SkRefCnt_SafeAssign(fPathEffect, effect);
2090 return effect; 2029 return effect;
2091 } 2030 }
2092 2031
2093 SkMaskFilter* SkPaint::setMaskFilter(SkMaskFilter* filter) { 2032 SkMaskFilter* SkPaint::setMaskFilter(SkMaskFilter* filter) {
2094 GEN_ID_INC_EVAL(filter != fMaskFilter);
2095 SkRefCnt_SafeAssign(fMaskFilter, filter); 2033 SkRefCnt_SafeAssign(fMaskFilter, filter);
2096 return filter; 2034 return filter;
2097 } 2035 }
2098 2036
2099 /////////////////////////////////////////////////////////////////////////////// 2037 ///////////////////////////////////////////////////////////////////////////////
2100 2038
2101 bool SkPaint::getFillPath(const SkPath& src, SkPath* dst, 2039 bool SkPaint::getFillPath(const SkPath& src, SkPath* dst,
2102 const SkRect* cullRect) const { 2040 const SkRect* cullRect) const {
2103 SkStrokeRec rec(*this); 2041 SkStrokeRec rec(*this);
2104 2042
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
2462 } 2400 }
2463 2401
2464 uint32_t SkPaint::getHash() const { 2402 uint32_t SkPaint::getHash() const {
2465 // We're going to hash 10 pointers and 7 32-bit values, finishing up with fB itfields, 2403 // We're going to hash 10 pointers and 7 32-bit values, finishing up with fB itfields,
2466 // so fBitfields should be 10 pointers and 6 32-bit values from the start. 2404 // so fBitfields should be 10 pointers and 6 32-bit values from the start.
2467 SK_COMPILE_ASSERT(offsetof(SkPaint, fBitfields) == 10 * sizeof(void*) + 6 * sizeof(uint32_t), 2405 SK_COMPILE_ASSERT(offsetof(SkPaint, fBitfields) == 10 * sizeof(void*) + 6 * sizeof(uint32_t),
2468 SkPaint_notPackedTightly); 2406 SkPaint_notPackedTightly);
2469 return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(this), 2407 return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(this),
2470 offsetof(SkPaint, fBitfields) + sizeof(fBitfields )); 2408 offsetof(SkPaint, fBitfields) + sizeof(fBitfields ));
2471 } 2409 }
OLDNEW
« no previous file with comments | « include/core/SkPaint.h ('k') | tests/PaintTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698