void SkBlurDrawLooper::toString(SkString* str) const { str->append("SkBlurDrawLooper: "); str->append("dx: "); str->appendScalar(fDx); str->append(" dy: "); str->appendScalar(fDy); str->append(" color: "); str->appendHex(fBlurColor); str->append(" flags: ("); if (kNone_BlurFlag == fBlurFlags) { str->append("None"); } else { bool needsSeparator = false; SkAddFlagToString(str, SkToBool(kIgnoreTransform_BlurFlag & fBlurFlags), "IgnoreTransform", &needsSeparator); SkAddFlagToString(str, SkToBool(kOverrideColor_BlurFlag & fBlurFlags), "OverrideColor", &needsSeparator); SkAddFlagToString(str, SkToBool(kHighQuality_BlurFlag & fBlurFlags), "HighQuality", &needsSeparator); } str->append(")"); // TODO: add optional "fBlurFilter->toString(str);" when SkMaskFilter::toString is added // alternatively we could cache the radius in SkBlurDrawLooper and just add it here }
void SkLayerDrawLooper::toString(SkString* str) const { str->appendf("SkLayerDrawLooper (%d): ", fCount); Rec* rec = fRecs; for (int i = 0; i < fCount; i++) { str->appendf("%d: paintBits: (", i); if (0 == rec->fInfo.fPaintBits) { str->append("None"); } else if (kEntirePaint_Bits == rec->fInfo.fPaintBits) { str->append("EntirePaint"); } else { bool needSeparator = false; SkAddFlagToString(str, SkToBool(kStyle_Bit & rec->fInfo.fPaintBits), "Style", &needSeparator); SkAddFlagToString(str, SkToBool(kTextSkewX_Bit & rec->fInfo.fPaintBits), "TextSkewX", &needSeparator); SkAddFlagToString(str, SkToBool(kPathEffect_Bit & rec->fInfo.fPaintBits), "PathEffect", &needSeparator); SkAddFlagToString(str, SkToBool(kMaskFilter_Bit & rec->fInfo.fPaintBits), "MaskFilter", &needSeparator); SkAddFlagToString(str, SkToBool(kShader_Bit & rec->fInfo.fPaintBits), "Shader", &needSeparator); SkAddFlagToString(str, SkToBool(kColorFilter_Bit & rec->fInfo.fPaintBits), "ColorFilter", &needSeparator); SkAddFlagToString(str, SkToBool(kXfermode_Bit & rec->fInfo.fPaintBits), "Xfermode", &needSeparator); } str->append(") "); static const char* gModeStrings[SkXfermode::kLastMode+1] = { "kClear", "kSrc", "kDst", "kSrcOver", "kDstOver", "kSrcIn", "kDstIn", "kSrcOut", "kDstOut", "kSrcATop", "kDstATop", "kXor", "kPlus", "kMultiply", "kScreen", "kOverlay", "kDarken", "kLighten", "kColorDodge", "kColorBurn", "kHardLight", "kSoftLight", "kDifference", "kExclusion" }; str->appendf("mode: %s ", gModeStrings[rec->fInfo.fColorMode]); str->append("offset: ("); str->appendScalar(rec->fInfo.fOffset.fX); str->append(", "); str->appendScalar(rec->fInfo.fOffset.fY); str->append(") "); str->append("postTranslate: "); if (rec->fInfo.fPostTranslate) { str->append("true "); } else { str->append("false "); } rec->fPaint.toString(str); rec = rec->fNext; } }
void SkLayerDrawLooper::toString(SkString* str) const { str->appendf("SkLayerDrawLooper (%d): ", fCount); Rec* rec = fRecs; for (int i = 0; i < fCount; i++) { str->appendf("%d: ", i); str->append("flagsMask: ("); if (0 == rec->fInfo.fFlagsMask) { str->append("None"); } else { bool needSeparator = false; SkAddFlagToString(str, SkToBool(SkPaint::kAntiAlias_Flag & rec->fInfo.fFlagsMask), "AntiAlias", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kFilterBitmap_Flag & rec->fInfo.fFlagsMask), "FilterBitmap", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kDither_Flag & rec->fInfo.fFlagsMask), "Dither", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kUnderlineText_Flag & rec->fInfo.fFlagsMask), "UnderlineText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kStrikeThruText_Flag & rec->fInfo.fFlagsMask), "StrikeThruText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kFakeBoldText_Flag & rec->fInfo.fFlagsMask), "FakeBoldText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kLinearText_Flag & rec->fInfo.fFlagsMask), "LinearText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kSubpixelText_Flag & rec->fInfo.fFlagsMask), "SubpixelText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kDevKernText_Flag & rec->fInfo.fFlagsMask), "DevKernText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kLCDRenderText_Flag & rec->fInfo.fFlagsMask), "LCDRenderText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kEmbeddedBitmapText_Flag & rec->fInfo.fFlagsMask), "EmbeddedBitmapText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kAutoHinting_Flag & rec->fInfo.fFlagsMask), "Autohinted", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kVerticalText_Flag & rec->fInfo.fFlagsMask), "VerticalText", &needSeparator); SkAddFlagToString(str, SkToBool(SkPaint::kGenA8FromLCD_Flag & rec->fInfo.fFlagsMask), "GenA8FromLCD", &needSeparator); } str->append(") "); str->append("paintBits: ("); if (0 == rec->fInfo.fPaintBits) { str->append("None"); } else if (kEntirePaint_Bits == rec->fInfo.fPaintBits) { str->append("EntirePaint"); } else { bool needSeparator = false; SkAddFlagToString(str, SkToBool(kStyle_Bit & rec->fInfo.fPaintBits), "Style", &needSeparator); SkAddFlagToString(str, SkToBool(kTextSkewX_Bit & rec->fInfo.fPaintBits), "TextSkewX", &needSeparator); SkAddFlagToString(str, SkToBool(kPathEffect_Bit & rec->fInfo.fPaintBits), "PathEffect", &needSeparator); SkAddFlagToString(str, SkToBool(kMaskFilter_Bit & rec->fInfo.fPaintBits), "MaskFilter", &needSeparator); SkAddFlagToString(str, SkToBool(kShader_Bit & rec->fInfo.fPaintBits), "Shader", &needSeparator); SkAddFlagToString(str, SkToBool(kColorFilter_Bit & rec->fInfo.fPaintBits), "ColorFilter", &needSeparator); SkAddFlagToString(str, SkToBool(kXfermode_Bit & rec->fInfo.fPaintBits), "Xfermode", &needSeparator); } str->append(") "); static const char* gModeStrings[SkXfermode::kLastMode+1] = { "kClear", "kSrc", "kDst", "kSrcOver", "kDstOver", "kSrcIn", "kDstIn", "kSrcOut", "kDstOut", "kSrcATop", "kDstATop", "kXor", "kPlus", "kMultiply", "kScreen", "kOverlay", "kDarken", "kLighten", "kColorDodge", "kColorBurn", "kHardLight", "kSoftLight", "kDifference", "kExclusion" }; str->appendf("mode: %s ", gModeStrings[rec->fInfo.fColorMode]); str->append("offset: ("); str->appendScalar(rec->fInfo.fOffset.fX); str->append(", "); str->appendScalar(rec->fInfo.fOffset.fY); str->append(") "); str->append("postTranslate: "); if (rec->fInfo.fPostTranslate) { str->append("true "); } else { str->append("false "); } rec->fPaint.toString(str); rec = rec->fNext; } }