Index: src/core/SkPaint.cpp |
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp |
index 241175e4e08f044cf7e65410c05e581775dab07a..21ba47109488d50cb3f2e2c3c7332e70fbb111e6 100644 |
--- a/src/core/SkPaint.cpp |
+++ b/src/core/SkPaint.cpp |
@@ -35,6 +35,34 @@ |
#include "SkTypeface.h" |
#include "SkXfermode.h" |
+#define SkPaintParts_SafeAssign(field, value) SkRefCnt_SafeAssign(fParts.field, value) |
+ |
+bool SkPaintParts::operator==(const SkPaintParts& other) const { |
+#define EQUAL(field) (this->field == other.field) |
+ return EQUAL(fTypeface) |
+ && EQUAL(fPathEffect) |
+ && EQUAL(fShader) |
+ && EQUAL(fXfermode) |
+ && EQUAL(fMaskFilter) |
+ && EQUAL(fColorFilter) |
+ && EQUAL(fRasterizer) |
+ && EQUAL(fLooper) |
+ && EQUAL(fImageFilter) |
+ && EQUAL(fAnnotation) |
+ && EQUAL(fTextSize) |
+ && EQUAL(fTextScaleX) |
+ && EQUAL(fTextSkewX) |
+ && EQUAL(fColor) |
+ && EQUAL(fWidth) |
+ && EQUAL(fMiterLimit) |
+ && EQUAL(fBitfields) |
+ ; |
+#undef EQUAL |
+} |
+ |
+/////////// |
+ |
+ |
enum { |
kColor_DirtyBit = 1 << 0, |
kTextSize_DirtyBit = 1 << 1, |
@@ -71,33 +99,20 @@ enum { |
#endif |
SkPaint::SkPaint() { |
- fTypeface = NULL; |
- fPathEffect = NULL; |
- fShader = NULL; |
- fXfermode = NULL; |
- fMaskFilter = NULL; |
- fColorFilter = NULL; |
- fRasterizer = NULL; |
- fLooper = NULL; |
- fImageFilter = NULL; |
- fAnnotation = NULL; |
- |
- fTextSize = SkPaintDefaults_TextSize; |
- fTextScaleX = SK_Scalar1; |
- fTextSkewX = 0; |
- fColor = SK_ColorBLACK; |
- fWidth = 0; |
- fMiterLimit = SkPaintDefaults_MiterLimit; |
- |
- // Zero all bitfields, then set some non-zero defaults. |
- fBitfields = 0; |
- fFlags = SkPaintDefaults_Flags; |
- fCapType = kDefault_Cap; |
- fJoinType = kDefault_Join; |
- fTextAlign = kLeft_Align; |
- fStyle = kFill_Style; |
- fTextEncoding = kUTF8_TextEncoding; |
- fHinting = SkPaintDefaults_Hinting; |
+ // set any non-zero values in fParts |
+ |
+ fParts.fTextSize = SkPaintDefaults_TextSize; |
+ fParts.fTextScaleX = SK_Scalar1; |
+ fParts.fColor = SK_ColorBLACK; |
+ fParts.fMiterLimit = SkPaintDefaults_MiterLimit; |
+ |
+ fParts.fFlags = SkPaintDefaults_Flags; |
+ fParts.fCapType = SkPaintParts::kDefault_Cap; |
+ fParts.fJoinType = SkPaintParts::kDefault_Join; |
+ fParts.fTextAlign = SkPaintParts::kLeft_Align; |
+ fParts.fStyle = SkPaintParts::kFill_Style; |
+ fParts.fTextEncoding = kUTF8_TextEncoding; |
+ fParts.fHinting = SkPaintDefaults_Hinting; |
fDirtyBits = 0; |
#ifdef SK_BUILD_FOR_ANDROID |
@@ -107,8 +122,8 @@ SkPaint::SkPaint() { |
} |
SkPaint::SkPaint(const SkPaint& src) { |
-#define COPY(field) field = src.field |
-#define REF_COPY(field) field = SkSafeRef(src.field) |
+#define COPY(field) fParts.field = src.fParts.field |
+#define REF_COPY(field) fParts.field = SkSafeRef(src.fParts.field) |
REF_COPY(fTypeface); |
REF_COPY(fPathEffect); |
@@ -128,7 +143,8 @@ SkPaint::SkPaint(const SkPaint& src) { |
COPY(fWidth); |
COPY(fMiterLimit); |
COPY(fBitfields); |
- COPY(fDirtyBits); |
+ |
+ fDirtyBits = src.fDirtyBits; |
#ifdef SK_BUILD_FOR_ANDROID |
new (&fPaintOptionsAndroid) SkPaintOptionsAndroid(src.fPaintOptionsAndroid); |
@@ -140,21 +156,21 @@ SkPaint::SkPaint(const SkPaint& src) { |
} |
SkPaint::~SkPaint() { |
- SkSafeUnref(fTypeface); |
- SkSafeUnref(fPathEffect); |
- SkSafeUnref(fShader); |
- SkSafeUnref(fXfermode); |
- SkSafeUnref(fMaskFilter); |
- SkSafeUnref(fColorFilter); |
- SkSafeUnref(fRasterizer); |
- SkSafeUnref(fLooper); |
- SkSafeUnref(fImageFilter); |
- SkSafeUnref(fAnnotation); |
+ SkSafeUnref(fParts.fTypeface); |
+ SkSafeUnref(fParts.fPathEffect); |
+ SkSafeUnref(fParts.fShader); |
+ SkSafeUnref(fParts.fXfermode); |
+ SkSafeUnref(fParts.fMaskFilter); |
+ SkSafeUnref(fParts.fColorFilter); |
+ SkSafeUnref(fParts.fRasterizer); |
+ SkSafeUnref(fParts.fLooper); |
+ SkSafeUnref(fParts.fImageFilter); |
+ SkSafeUnref(fParts.fAnnotation); |
} |
SkPaint& SkPaint::operator=(const SkPaint& src) { |
-#define COPY(field) field = src.field |
-#define REF_COPY(field) SkSafeUnref(field); field = SkSafeRef(src.field) |
+#define COPY(field) fParts.field = src.fParts.field |
+#define REF_COPY(field) SkSafeUnref(fParts.field); fParts.field = SkSafeRef(src.fParts.field) |
SkASSERT(&src); |
@@ -176,7 +192,8 @@ SkPaint& SkPaint::operator=(const SkPaint& src) { |
COPY(fWidth); |
COPY(fMiterLimit); |
COPY(fBitfields); |
- COPY(fDirtyBits); |
+ |
+ fDirtyBits = src.fDirtyBits; |
#ifdef SK_BUILD_FOR_ANDROID |
fPaintOptionsAndroid.~SkPaintOptionsAndroid(); |
@@ -191,30 +208,15 @@ SkPaint& SkPaint::operator=(const SkPaint& src) { |
} |
bool operator==(const SkPaint& a, const SkPaint& b) { |
-#define EQUAL(field) (a.field == b.field) |
- // Don't check fGenerationID or fDirtyBits, which can be different for logically equal paints. |
- return EQUAL(fTypeface) |
- && EQUAL(fPathEffect) |
- && EQUAL(fShader) |
- && EQUAL(fXfermode) |
- && EQUAL(fMaskFilter) |
- && EQUAL(fColorFilter) |
- && EQUAL(fRasterizer) |
- && EQUAL(fLooper) |
- && EQUAL(fImageFilter) |
- && EQUAL(fAnnotation) |
- && EQUAL(fTextSize) |
- && EQUAL(fTextScaleX) |
- && EQUAL(fTextSkewX) |
- && EQUAL(fColor) |
- && EQUAL(fWidth) |
- && EQUAL(fMiterLimit) |
- && EQUAL(fBitfields) |
+ if (a.fParts != b.fParts) { |
+ return false; |
+ } |
#ifdef SK_BUILD_FOR_ANDROID |
- && EQUAL(fPaintOptionsAndroid) |
+ if (fPaintOptionsAndroid != b.fPaintOptionsAndroid) { |
+ return false; |
+ } |
#endif |
- ; |
-#undef EQUAL |
+ return true; |
} |
void SkPaint::reset() { |
@@ -255,75 +257,75 @@ void SkPaint::setPaintOptionsAndroid(const SkPaintOptionsAndroid& options) { |
void SkPaint::setFilterLevel(FilterLevel level) { |
GEN_ID_INC_EVAL((unsigned) level != fFilterLevel); |
- fFilterLevel = level; |
+ fParts.setFilterLevel(static_cast<SkPaintParts::FilterLevel>(level)); |
} |
void SkPaint::setHinting(Hinting hintingLevel) { |
GEN_ID_INC_EVAL((unsigned) hintingLevel != fHinting); |
- fHinting = hintingLevel; |
+ fParts.setHinting(static_cast<SkPaintParts::Hinting>(hintingLevel)); |
} |
void SkPaint::setFlags(uint32_t flags) { |
GEN_ID_INC_EVAL(fFlags != flags); |
- fFlags = flags; |
+ fParts.setFlags(flags); |
} |
void SkPaint::setAntiAlias(bool doAA) { |
- this->setFlags(SkSetClearMask(fFlags, doAA, kAntiAlias_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doAA, kAntiAlias_Flag)); |
} |
void SkPaint::setDither(bool doDither) { |
- this->setFlags(SkSetClearMask(fFlags, doDither, kDither_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doDither, kDither_Flag)); |
} |
void SkPaint::setSubpixelText(bool doSubpixel) { |
- this->setFlags(SkSetClearMask(fFlags, doSubpixel, kSubpixelText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doSubpixel, kSubpixelText_Flag)); |
} |
void SkPaint::setLCDRenderText(bool doLCDRender) { |
- this->setFlags(SkSetClearMask(fFlags, doLCDRender, kLCDRenderText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doLCDRender, kLCDRenderText_Flag)); |
} |
void SkPaint::setEmbeddedBitmapText(bool doEmbeddedBitmapText) { |
- this->setFlags(SkSetClearMask(fFlags, doEmbeddedBitmapText, kEmbeddedBitmapText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doEmbeddedBitmapText, kEmbeddedBitmapText_Flag)); |
} |
void SkPaint::setAutohinted(bool useAutohinter) { |
- this->setFlags(SkSetClearMask(fFlags, useAutohinter, kAutoHinting_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), useAutohinter, kAutoHinting_Flag)); |
} |
void SkPaint::setLinearText(bool doLinearText) { |
- this->setFlags(SkSetClearMask(fFlags, doLinearText, kLinearText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doLinearText, kLinearText_Flag)); |
} |
void SkPaint::setVerticalText(bool doVertical) { |
- this->setFlags(SkSetClearMask(fFlags, doVertical, kVerticalText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doVertical, kVerticalText_Flag)); |
} |
void SkPaint::setUnderlineText(bool doUnderline) { |
- this->setFlags(SkSetClearMask(fFlags, doUnderline, kUnderlineText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doUnderline, kUnderlineText_Flag)); |
} |
void SkPaint::setStrikeThruText(bool doStrikeThru) { |
- this->setFlags(SkSetClearMask(fFlags, doStrikeThru, kStrikeThruText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doStrikeThru, kStrikeThruText_Flag)); |
} |
void SkPaint::setFakeBoldText(bool doFakeBold) { |
- this->setFlags(SkSetClearMask(fFlags, doFakeBold, kFakeBoldText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doFakeBold, kFakeBoldText_Flag)); |
} |
void SkPaint::setDevKernText(bool doDevKern) { |
- this->setFlags(SkSetClearMask(fFlags, doDevKern, kDevKernText_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doDevKern, kDevKernText_Flag)); |
} |
void SkPaint::setDistanceFieldTextTEMP(bool doDistanceFieldText) { |
- this->setFlags(SkSetClearMask(fFlags, doDistanceFieldText, kDistanceFieldTextTEMP_Flag)); |
+ this->setFlags(SkSetClearMask(fParts.getFlags(), doDistanceFieldText, kDistanceFieldTextTEMP_Flag)); |
} |
void SkPaint::setStyle(Style style) { |
if ((unsigned)style < kStyleCount) { |
GEN_ID_INC_EVAL((unsigned)style != fStyle); |
- fStyle = style; |
+ fParts.setStyle(static_cast<SkPaintParts::Style>(style)); |
} else { |
#ifdef SK_REPORT_API_RANGE_CHECK |
SkDebugf("SkPaint::setStyle(%d) out of range\n", style); |
@@ -333,13 +335,13 @@ void SkPaint::setStyle(Style style) { |
void SkPaint::setColor(SkColor color) { |
GEN_ID_INC_EVAL(color != fColor); |
- fColor = color; |
+ fParts.setColor(color); |
fDirtyBits |= kColor_DirtyBit; |
} |
void SkPaint::setAlpha(U8CPU a) { |
- this->setColor(SkColorSetARGB(a, SkColorGetR(fColor), |
- SkColorGetG(fColor), SkColorGetB(fColor))); |
+ const SkColor c = fParts.getColor(); |
+ this->setColor(SkColorSetARGB(a, SkColorGetR(c), SkColorGetG(c), SkColorGetB(c))); |
} |
void SkPaint::setARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) { |
@@ -349,7 +351,7 @@ void SkPaint::setARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) { |
void SkPaint::setStrokeWidth(SkScalar width) { |
if (width >= 0) { |
GEN_ID_INC_EVAL(width != fWidth); |
- fWidth = width; |
+ fParts.setStrokeWidth(width); |
fDirtyBits |= kStrokeWidth_DirtyBit; |
} else { |
#ifdef SK_REPORT_API_RANGE_CHECK |
@@ -361,7 +363,7 @@ void SkPaint::setStrokeWidth(SkScalar width) { |
void SkPaint::setStrokeMiter(SkScalar limit) { |
if (limit >= 0) { |
GEN_ID_INC_EVAL(limit != fMiterLimit); |
- fMiterLimit = limit; |
+ fParts.setStrokeMiter(limit); |
fDirtyBits |= kStrokeMiter_DirtyBit; |
} else { |
#ifdef SK_REPORT_API_RANGE_CHECK |
@@ -373,7 +375,7 @@ void SkPaint::setStrokeMiter(SkScalar limit) { |
void SkPaint::setStrokeCap(Cap ct) { |
if ((unsigned)ct < kCapCount) { |
GEN_ID_INC_EVAL((unsigned)ct != fCapType); |
- fCapType = SkToU8(ct); |
+ fParts.setStrokeCap(static_cast<SkPaintParts::Cap>(ct)); |
} else { |
#ifdef SK_REPORT_API_RANGE_CHECK |
SkDebugf("SkPaint::setStrokeCap(%d) out of range\n", ct); |
@@ -384,7 +386,7 @@ void SkPaint::setStrokeCap(Cap ct) { |
void SkPaint::setStrokeJoin(Join jt) { |
if ((unsigned)jt < kJoinCount) { |
GEN_ID_INC_EVAL((unsigned)jt != fJoinType); |
- fJoinType = SkToU8(jt); |
+ fParts.setStrokeJoin(static_cast<SkPaintParts::Join>(jt)); |
} else { |
#ifdef SK_REPORT_API_RANGE_CHECK |
SkDebugf("SkPaint::setStrokeJoin(%d) out of range\n", jt); |
@@ -397,7 +399,7 @@ void SkPaint::setStrokeJoin(Join jt) { |
void SkPaint::setTextAlign(Align align) { |
if ((unsigned)align < kAlignCount) { |
GEN_ID_INC_EVAL((unsigned)align != fTextAlign); |
- fTextAlign = SkToU8(align); |
+ fParts.setTextAlign(static_cast<SkPaintParts::Align>(align)); |
} else { |
#ifdef SK_REPORT_API_RANGE_CHECK |
SkDebugf("SkPaint::setTextAlign(%d) out of range\n", align); |
@@ -408,7 +410,7 @@ void SkPaint::setTextAlign(Align align) { |
void SkPaint::setTextSize(SkScalar ts) { |
if (ts >= 0) { |
GEN_ID_INC_EVAL(ts != fTextSize); |
- fTextSize = ts; |
+ fParts.setTextSize(ts); |
fDirtyBits |= kTextSize_DirtyBit; |
} else { |
#ifdef SK_REPORT_API_RANGE_CHECK |
@@ -419,20 +421,20 @@ void SkPaint::setTextSize(SkScalar ts) { |
void SkPaint::setTextScaleX(SkScalar scaleX) { |
GEN_ID_INC_EVAL(scaleX != fTextScaleX); |
- fTextScaleX = scaleX; |
+ fParts.setTextScaleX(scaleX); |
fDirtyBits |= kTextScaleX_DirtyBit; |
} |
void SkPaint::setTextSkewX(SkScalar skewX) { |
GEN_ID_INC_EVAL(skewX != fTextSkewX); |
- fTextSkewX = skewX; |
+ fParts.setTextSkewX(skewX); |
fDirtyBits |= kTextSkewX_DirtyBit; |
} |
void SkPaint::setTextEncoding(TextEncoding encoding) { |
if ((unsigned)encoding <= kGlyphID_TextEncoding) { |
GEN_ID_INC_EVAL((unsigned)encoding != fTextEncoding); |
- fTextEncoding = encoding; |
+ fParts.setTextEncoding(static_cast<SkPaintParts::TextEncoding>(encoding)); |
} else { |
#ifdef SK_REPORT_API_RANGE_CHECK |
SkDebugf("SkPaint::setTextEncoding(%d) out of range\n", encoding); |
@@ -448,36 +450,36 @@ inline static uint32_t set_mask(uint32_t dst, uint32_t bitmask, bool value) { |
} |
SkTypeface* SkPaint::setTypeface(SkTypeface* font) { |
- SkRefCnt_SafeAssign(fTypeface, font); |
GEN_ID_INC; |
+ SkPaintParts_SafeAssign(fTypeface, font); |
fDirtyBits = set_mask(fDirtyBits, kTypeface_DirtyBit, font != NULL); |
return font; |
} |
SkRasterizer* SkPaint::setRasterizer(SkRasterizer* r) { |
- SkRefCnt_SafeAssign(fRasterizer, r); |
GEN_ID_INC; |
+ SkPaintParts_SafeAssign(fRasterizer, r); |
fDirtyBits = set_mask(fDirtyBits, kRasterizer_DirtyBit, r != NULL); |
return r; |
} |
SkDrawLooper* SkPaint::setLooper(SkDrawLooper* looper) { |
- SkRefCnt_SafeAssign(fLooper, looper); |
GEN_ID_INC; |
+ SkPaintParts_SafeAssign(fLooper, looper); |
fDirtyBits = set_mask(fDirtyBits, kLooper_DirtyBit, looper != NULL); |
return looper; |
} |
SkImageFilter* SkPaint::setImageFilter(SkImageFilter* imageFilter) { |
- SkRefCnt_SafeAssign(fImageFilter, imageFilter); |
GEN_ID_INC; |
+ SkPaintParts_SafeAssign(fImageFilter, imageFilter); |
fDirtyBits = set_mask(fDirtyBits, kImageFilter_DirtyBit, imageFilter != NULL); |
return imageFilter; |
} |
SkAnnotation* SkPaint::setAnnotation(SkAnnotation* annotation) { |
- SkRefCnt_SafeAssign(fAnnotation, annotation); |
GEN_ID_INC; |
+ SkPaintParts_SafeAssign(fAnnotation, annotation); |
fDirtyBits = set_mask(fDirtyBits, kAnnotation_DirtyBit, annotation != NULL); |
return annotation; |
} |
@@ -959,7 +961,7 @@ SkDrawCacheProc SkPaint::getDrawCacheProc() const { |
}; |
unsigned index = this->getTextEncoding(); |
- if (fFlags & kSubpixelText_Flag) { |
+ if (this->getFlags() & kSubpixelText_Flag) { |
index += 4; |
} |
@@ -987,7 +989,7 @@ SkScalar SkPaint::setupForAsPaths() { |
this->setFlags(flags); |
this->setHinting(SkPaint::kNo_Hinting); |
- SkScalar textSize = fTextSize; |
+ SkScalar textSize = this->getTextSize(); |
this->setTextSize(kCanonicalTextSizeForPaths); |
return textSize / kCanonicalTextSizeForPaths; |
} |
@@ -1203,7 +1205,7 @@ size_t SkPaint::breakText(const void* textD, size_t length, SkScalar maxWidth, |
return 0; |
} |
- if (0 == fTextSize) { |
+ if (0 == this->getTextSize()) { |
if (measuredWidth) { |
*measuredWidth = 0; |
} |
@@ -1945,7 +1947,7 @@ void SkPaint::descriptorProc(const SkDeviceProperties* deviceProperties, |
} |
#endif |
- proc(fTypeface, desc, context); |
+ proc(this->getTypeface(), desc, context); |
} |
SkGlyphCache* SkPaint::detachCache(const SkDeviceProperties* deviceProperties, |
@@ -2147,9 +2149,9 @@ void SkPaint::flatten(SkWriteBuffer& buffer) const { |
buffer.writeFlattenable(this->getLooper()); |
buffer.writeFlattenable(this->getImageFilter()); |
- if (fAnnotation) { |
+ if (this->getAnnotation()) { |
buffer.writeBool(true); |
- fAnnotation->writeToBuffer(buffer); |
+ this->getAnnotation()->writeToBuffer(buffer); |
} else { |
buffer.writeBool(false); |
} |
@@ -2234,43 +2236,43 @@ void SkPaint::unflatten(SkReadBuffer& buffer) { |
SkShader* SkPaint::setShader(SkShader* shader) { |
GEN_ID_INC_EVAL(shader != fShader); |
- SkRefCnt_SafeAssign(fShader, shader); |
+ SkPaintParts_SafeAssign(fShader, shader); |
fDirtyBits = set_mask(fDirtyBits, kShader_DirtyBit, shader != NULL); |
return shader; |
} |
SkColorFilter* SkPaint::setColorFilter(SkColorFilter* filter) { |
GEN_ID_INC_EVAL(filter != fColorFilter); |
- SkRefCnt_SafeAssign(fColorFilter, filter); |
+ SkPaintParts_SafeAssign(fColorFilter, filter); |
fDirtyBits = set_mask(fDirtyBits, kColorFilter_DirtyBit, filter != NULL); |
return filter; |
} |
SkXfermode* SkPaint::setXfermode(SkXfermode* mode) { |
GEN_ID_INC_EVAL(mode != fXfermode); |
- SkRefCnt_SafeAssign(fXfermode, mode); |
+ SkPaintParts_SafeAssign(fXfermode, mode); |
fDirtyBits = set_mask(fDirtyBits, kXfermode_DirtyBit, mode != NULL); |
return mode; |
} |
SkXfermode* SkPaint::setXfermodeMode(SkXfermode::Mode mode) { |
- SkSafeUnref(fXfermode); |
- fXfermode = SkXfermode::Create(mode); |
+ SkSafeUnref(fParts.fXfermode); |
+ fParts.fXfermode = SkXfermode::Create(mode); |
GEN_ID_INC; |
- fDirtyBits = set_mask(fDirtyBits, kXfermode_DirtyBit, fXfermode != NULL); |
- return fXfermode; |
+ fDirtyBits = set_mask(fDirtyBits, kXfermode_DirtyBit, fParts.fXfermode != NULL); |
+ return fParts.fXfermode; |
} |
SkPathEffect* SkPaint::setPathEffect(SkPathEffect* effect) { |
GEN_ID_INC_EVAL(effect != fPathEffect); |
- SkRefCnt_SafeAssign(fPathEffect, effect); |
+ SkPaintParts_SafeAssign(fPathEffect, effect); |
fDirtyBits = set_mask(fDirtyBits, kPathEffect_DirtyBit, effect != NULL); |
return effect; |
} |
SkMaskFilter* SkPaint::setMaskFilter(SkMaskFilter* filter) { |
GEN_ID_INC_EVAL(filter != fMaskFilter); |
- SkRefCnt_SafeAssign(fMaskFilter, filter); |
+ SkPaintParts_SafeAssign(fMaskFilter, filter); |
fDirtyBits = set_mask(fDirtyBits, kMaskFilter_DirtyBit, filter != NULL); |
return filter; |
} |
@@ -2284,7 +2286,8 @@ bool SkPaint::getFillPath(const SkPath& src, SkPath* dst, |
const SkPath* srcPtr = &src; |
SkPath tmpPath; |
- if (fPathEffect && fPathEffect->filterPath(&tmpPath, src, &rec, cullRect)) { |
+ SkPathEffect* pe = this->getPathEffect(); |
+ if (pe && pe->filterPath(&tmpPath, src, &rec, cullRect)) { |
srcPtr = &tmpPath; |
} |
@@ -2621,11 +2624,11 @@ bool SkTextToPathIter::next(const SkPath** path, SkScalar* xpos) { |
/////////////////////////////////////////////////////////////////////////////// |
bool SkPaint::nothingToDraw() const { |
- if (fLooper) { |
+ if (this->getLooper()) { |
return false; |
} |
SkXfermode::Mode mode; |
- if (SkXfermode::AsMode(fXfermode, &mode)) { |
+ if (SkXfermode::AsMode(this->getXfermode(), &mode)) { |
switch (mode) { |
case SkXfermode::kSrcOver_Mode: |
case SkXfermode::kSrcATop_Mode: |
@@ -2643,7 +2646,7 @@ bool SkPaint::nothingToDraw() const { |
} |
void SkPaint::setBitfields(uint32_t bitfields) { |
- fBitfields = bitfields; |
+ fParts.fBitfields = bitfields; |
} |
inline static unsigned popcount(uint8_t x) { |