| Index: src/core/SkPaint.cpp
|
| diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
|
| index 62db71445ee160c6917ff8f6cd103c21f47a845e..8fc7c1959566e1d0569eb1cde00a5e29fd5aeab3 100644
|
| --- a/src/core/SkPaint.cpp
|
| +++ b/src/core/SkPaint.cpp
|
| @@ -82,22 +82,22 @@ SkPaint::SkPaint() {
|
| fImageFilter = NULL;
|
| fAnnotation = NULL;
|
|
|
| - fTextSize = SkPaintDefaults_TextSize;
|
| - fTextScaleX = SK_Scalar1;
|
| - fTextSkewX = 0;
|
| - fColor = SK_ColorBLACK;
|
| - fWidth = 0;
|
| - fMiterLimit = SkPaintDefaults_MiterLimit;
|
| + 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;
|
| + fBitfieldsUInt = 0;
|
| + fBitfields.fFlags = SkPaintDefaults_Flags;
|
| + fBitfields.fCapType = kDefault_Cap;
|
| + fBitfields.fJoinType = kDefault_Join;
|
| + fBitfields.fTextAlign = kLeft_Align;
|
| + fBitfields.fStyle = kFill_Style;
|
| + fBitfields.fTextEncoding = kUTF8_TextEncoding;
|
| + fBitfields.fHinting = SkPaintDefaults_Hinting;
|
|
|
| fDirtyBits = 0;
|
| #ifdef SK_BUILD_FOR_ANDROID
|
| @@ -213,7 +213,7 @@ bool operator==(const SkPaint& a, const SkPaint& b) {
|
| && EQUAL(fColor)
|
| && EQUAL(fWidth)
|
| && EQUAL(fMiterLimit)
|
| - && EQUAL(fBitfields)
|
| + && EQUAL(fBitfieldsUInt)
|
| #ifdef SK_BUILD_FOR_ANDROID
|
| && EQUAL(fPaintOptionsAndroid)
|
| #endif
|
| @@ -258,76 +258,76 @@ void SkPaint::setPaintOptionsAndroid(const SkPaintOptionsAndroid& options) {
|
| #endif
|
|
|
| void SkPaint::setFilterLevel(FilterLevel level) {
|
| - GEN_ID_INC_EVAL((unsigned) level != fFilterLevel);
|
| - fFilterLevel = level;
|
| + GEN_ID_INC_EVAL((unsigned) level != fBitfields.fFilterLevel);
|
| + fBitfields.fFilterLevel = level;
|
| }
|
|
|
| void SkPaint::setHinting(Hinting hintingLevel) {
|
| - GEN_ID_INC_EVAL((unsigned) hintingLevel != fHinting);
|
| - fHinting = hintingLevel;
|
| + GEN_ID_INC_EVAL((unsigned) hintingLevel != fBitfields.fHinting);
|
| + fBitfields.fHinting = hintingLevel;
|
| }
|
|
|
| void SkPaint::setFlags(uint32_t flags) {
|
| - GEN_ID_INC_EVAL(fFlags != flags);
|
| - fFlags = flags;
|
| + GEN_ID_INC_EVAL(flags != fBitfields.fFlags);
|
| + fBitfields.fFlags = flags;
|
| }
|
|
|
| void SkPaint::setAntiAlias(bool doAA) {
|
| - this->setFlags(SkSetClearMask(fFlags, doAA, kAntiAlias_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doAA, kAntiAlias_Flag));
|
| }
|
|
|
| void SkPaint::setDither(bool doDither) {
|
| - this->setFlags(SkSetClearMask(fFlags, doDither, kDither_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doDither, kDither_Flag));
|
| }
|
|
|
| void SkPaint::setSubpixelText(bool doSubpixel) {
|
| - this->setFlags(SkSetClearMask(fFlags, doSubpixel, kSubpixelText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doSubpixel, kSubpixelText_Flag));
|
| }
|
|
|
| void SkPaint::setLCDRenderText(bool doLCDRender) {
|
| - this->setFlags(SkSetClearMask(fFlags, doLCDRender, kLCDRenderText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doLCDRender, kLCDRenderText_Flag));
|
| }
|
|
|
| void SkPaint::setEmbeddedBitmapText(bool doEmbeddedBitmapText) {
|
| - this->setFlags(SkSetClearMask(fFlags, doEmbeddedBitmapText, kEmbeddedBitmapText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doEmbeddedBitmapText, kEmbeddedBitmapText_Flag));
|
| }
|
|
|
| void SkPaint::setAutohinted(bool useAutohinter) {
|
| - this->setFlags(SkSetClearMask(fFlags, useAutohinter, kAutoHinting_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, useAutohinter, kAutoHinting_Flag));
|
| }
|
|
|
| void SkPaint::setLinearText(bool doLinearText) {
|
| - this->setFlags(SkSetClearMask(fFlags, doLinearText, kLinearText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doLinearText, kLinearText_Flag));
|
| }
|
|
|
| void SkPaint::setVerticalText(bool doVertical) {
|
| - this->setFlags(SkSetClearMask(fFlags, doVertical, kVerticalText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doVertical, kVerticalText_Flag));
|
| }
|
|
|
| void SkPaint::setUnderlineText(bool doUnderline) {
|
| - this->setFlags(SkSetClearMask(fFlags, doUnderline, kUnderlineText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doUnderline, kUnderlineText_Flag));
|
| }
|
|
|
| void SkPaint::setStrikeThruText(bool doStrikeThru) {
|
| - this->setFlags(SkSetClearMask(fFlags, doStrikeThru, kStrikeThruText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doStrikeThru, kStrikeThruText_Flag));
|
| }
|
|
|
| void SkPaint::setFakeBoldText(bool doFakeBold) {
|
| - this->setFlags(SkSetClearMask(fFlags, doFakeBold, kFakeBoldText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doFakeBold, kFakeBoldText_Flag));
|
| }
|
|
|
| void SkPaint::setDevKernText(bool doDevKern) {
|
| - this->setFlags(SkSetClearMask(fFlags, doDevKern, kDevKernText_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doDevKern, kDevKernText_Flag));
|
| }
|
|
|
| void SkPaint::setDistanceFieldTextTEMP(bool doDistanceFieldText) {
|
| - this->setFlags(SkSetClearMask(fFlags, doDistanceFieldText, kDistanceFieldTextTEMP_Flag));
|
| + this->setFlags(SkSetClearMask(fBitfields.fFlags, doDistanceFieldText, kDistanceFieldTextTEMP_Flag));
|
| }
|
|
|
| void SkPaint::setStyle(Style style) {
|
| if ((unsigned)style < kStyleCount) {
|
| - GEN_ID_INC_EVAL((unsigned)style != fStyle);
|
| - fStyle = style;
|
| + GEN_ID_INC_EVAL((unsigned)style != fBitfields.fStyle);
|
| + fBitfields.fStyle = style;
|
| } else {
|
| #ifdef SK_REPORT_API_RANGE_CHECK
|
| SkDebugf("SkPaint::setStyle(%d) out of range\n", style);
|
| @@ -376,8 +376,8 @@ void SkPaint::setStrokeMiter(SkScalar limit) {
|
|
|
| void SkPaint::setStrokeCap(Cap ct) {
|
| if ((unsigned)ct < kCapCount) {
|
| - GEN_ID_INC_EVAL((unsigned)ct != fCapType);
|
| - fCapType = SkToU8(ct);
|
| + GEN_ID_INC_EVAL((unsigned)ct != fBitfields.fCapType);
|
| + fBitfields.fCapType = SkToU8(ct);
|
| } else {
|
| #ifdef SK_REPORT_API_RANGE_CHECK
|
| SkDebugf("SkPaint::setStrokeCap(%d) out of range\n", ct);
|
| @@ -387,8 +387,8 @@ void SkPaint::setStrokeCap(Cap ct) {
|
|
|
| void SkPaint::setStrokeJoin(Join jt) {
|
| if ((unsigned)jt < kJoinCount) {
|
| - GEN_ID_INC_EVAL((unsigned)jt != fJoinType);
|
| - fJoinType = SkToU8(jt);
|
| + GEN_ID_INC_EVAL((unsigned)jt != fBitfields.fJoinType);
|
| + fBitfields.fJoinType = SkToU8(jt);
|
| } else {
|
| #ifdef SK_REPORT_API_RANGE_CHECK
|
| SkDebugf("SkPaint::setStrokeJoin(%d) out of range\n", jt);
|
| @@ -400,8 +400,8 @@ void SkPaint::setStrokeJoin(Join jt) {
|
|
|
| void SkPaint::setTextAlign(Align align) {
|
| if ((unsigned)align < kAlignCount) {
|
| - GEN_ID_INC_EVAL((unsigned)align != fTextAlign);
|
| - fTextAlign = SkToU8(align);
|
| + GEN_ID_INC_EVAL((unsigned)align != fBitfields.fTextAlign);
|
| + fBitfields.fTextAlign = SkToU8(align);
|
| } else {
|
| #ifdef SK_REPORT_API_RANGE_CHECK
|
| SkDebugf("SkPaint::setTextAlign(%d) out of range\n", align);
|
| @@ -435,8 +435,8 @@ void SkPaint::setTextSkewX(SkScalar skewX) {
|
|
|
| void SkPaint::setTextEncoding(TextEncoding encoding) {
|
| if ((unsigned)encoding <= kGlyphID_TextEncoding) {
|
| - GEN_ID_INC_EVAL((unsigned)encoding != fTextEncoding);
|
| - fTextEncoding = encoding;
|
| + GEN_ID_INC_EVAL((unsigned)encoding != fBitfields.fTextEncoding);
|
| + fBitfields.fTextEncoding = encoding;
|
| } else {
|
| #ifdef SK_REPORT_API_RANGE_CHECK
|
| SkDebugf("SkPaint::setTextEncoding(%d) out of range\n", encoding);
|
| @@ -953,7 +953,7 @@ SkDrawCacheProc SkPaint::getDrawCacheProc() const {
|
| };
|
|
|
| unsigned index = this->getTextEncoding();
|
| - if (fFlags & kSubpixelText_Flag) {
|
| + if (fBitfields.fFlags & kSubpixelText_Flag) {
|
| index += 4;
|
| }
|
|
|
| @@ -2658,10 +2658,6 @@ bool SkPaint::nothingToDraw() const {
|
| return false;
|
| }
|
|
|
| -void SkPaint::setBitfields(uint32_t bitfields) {
|
| - fBitfields = bitfields;
|
| -}
|
| -
|
| inline static unsigned popcount(uint8_t x) {
|
| // As in Hacker's delight, adapted for just 8 bits.
|
| x = (x & 0x55) + ((x >> 1) & 0x55); // a b c d w x y z -> a+b c+d w+x y+z
|
| @@ -2679,7 +2675,7 @@ void SkPaint::FlatteningTraits::Flatten(SkWriteBuffer& buffer, const SkPaint& pa
|
| SkASSERT(flatBytes <= 32);
|
| uint32_t* u32 = buffer.reserve(flatBytes);
|
| *u32++ = dirty;
|
| - *u32++ = paint.getBitfields();
|
| + *u32++ = paint.fBitfieldsUInt;
|
| if (0 == dirty) {
|
| return;
|
| }
|
| @@ -2712,7 +2708,7 @@ void SkPaint::FlatteningTraits::Flatten(SkWriteBuffer& buffer, const SkPaint& pa
|
|
|
| void SkPaint::FlatteningTraits::Unflatten(SkReadBuffer& buffer, SkPaint* paint) {
|
| const uint32_t dirty = buffer.readUInt();
|
| - paint->setBitfields(buffer.readUInt());
|
| + paint->fBitfieldsUInt = buffer.readUInt();
|
| if (dirty == 0) {
|
| return;
|
| }
|
|
|