this->fInfo.push(SkObjectParser::BitmapToString(bitmap));
this->fInfo.push(SkObjectParser::ScalarToString(left, "SkScalar left: "));
this->fInfo.push(SkObjectParser::ScalarToString(top, "SkScalar top: "));
+ if (NULL != paint) {
+ this->fInfo.push(SkObjectParser::PaintToString(*paint));
+ }
}
void DrawBitmap::execute(SkCanvas* canvas) {
this->fInfo.push(SkObjectParser::BitmapToString(bitmap));
this->fInfo.push(SkObjectParser::MatrixToString(matrix));
- if (paint) this->fInfo.push(SkObjectParser::PaintToString(*paint));
+ if (NULL != paint) {
+ this->fInfo.push(SkObjectParser::PaintToString(*paint));
+ }
}
void DrawBitmapMatrix::execute(SkCanvas* canvas) {
this->fInfo.push(SkObjectParser::BitmapToString(bitmap));
this->fInfo.push(SkObjectParser::IRectToString(center));
this->fInfo.push(SkObjectParser::RectToString(dst, "Dst: "));
- if (paint) this->fInfo.push(SkObjectParser::PaintToString(*paint));
+ if (NULL != paint) {
+ this->fInfo.push(SkObjectParser::PaintToString(*paint));
+ }
}
void DrawBitmapNine::execute(SkCanvas* canvas) {
this->fResizedBitmap = resizedBitmap;
this->fInfo.push(SkObjectParser::BitmapToString(bitmap));
- if (src) this->fInfo.push(SkObjectParser::RectToString(*src, "Src: "));
+ if (NULL != src) {
+ this->fInfo.push(SkObjectParser::RectToString(*src, "Src: "));
+ }
this->fInfo.push(SkObjectParser::RectToString(dst, "Dst: "));
- if (paint) this->fInfo.push(SkObjectParser::PaintToString(*paint));
+ if (NULL != paint) {
+ this->fInfo.push(SkObjectParser::PaintToString(*paint));
+ }
}
void DrawBitmapRect::execute(SkCanvas* canvas) {
SkXfermode* xfer = paint.getXfermode();
if (NULL != xfer) {
mPaint->append("<dt>Xfermode:</dt><dd>");
+ SkDEVCODE(xfer->toString(mPaint);)
mPaint->append("</dd>");
}
#include "SkFlattenable.h"
#include "SkColor.h"
+class SkString;
+
/** \class SkXfermode
SkXfermode is the base class for objects that are called to implement custom
return AsMode(xfer, mode);
}
+ SkDEVCODE(virtual void toString(SkString* str) const = 0;)
SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
protected:
SkXfermode(SkFlattenableReadBuffer& rb) : SkFlattenable(rb) {}
virtual void xferA8(SkAlpha dst[], const SkPMColor src[], int count,
const SkAlpha aa[]) const SK_OVERRIDE;
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkProcXfermode)
protected:
*/
static SkXfermode* Create(SkScalar k1, SkScalar k2,
SkScalar k3, SkScalar k4);
+
+private:
+ typedef SkXfermode INHERITED;
};
#endif
virtual void xferA8(SkAlpha dst[], const SkPMColor src[], int count,
const SkAlpha aa[]) const SK_OVERRIDE;
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkAvoidXfermode)
protected:
public:
SkPixelXorXfermode(SkColor opColor) : fOpColor(opColor) {}
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPixelXorXfermode)
protected:
typedef SkFlattenable* (*Factory)(SkFlattenableReadBuffer&);
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPowerMode)
private:
}
}
+#ifdef SK_DEVELOPER
+void SkPowerMode::toString(SkString* str) const {
+ str->append("SkPowerMode: exponent ");
+ str->appendScalar(fExp);
+}
+#endif
+
static const struct {
const char* fName;
uint32_t fFlags;
#include "SkColorPriv.h"
#include "SkFlattenableBuffers.h"
#include "SkMathPriv.h"
+#include "SkString.h"
SK_DEFINE_INST_COUNT(SkXfermode)
}
}
+#ifdef SK_DEVELOPER
+void SkProcXfermode::toString(SkString* str) const {
+ str->appendf("SkProcXfermode: %p", fProc);
+}
+#endif
+
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
return true;
}
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkProcCoeffXfermode)
protected:
Mode fMode;
Coeff fSrcCoeff, fDstCoeff;
-
typedef SkProcXfermode INHERITED;
};
+#ifdef SK_DEVELOPER
+void SkProcCoeffXfermode::toString(SkString* str) const {
+ str->append("SkProcCoeffXfermode: ");
+
+ const char *gModeStrings[kLastMode+1] = {
+ "Clear", "Src", "Dst", "SrcOver", "DstOver", "SrcIn", "DstIn",
+ "SrcOut", "DstOut", "SrcATop", "DstATop", "Xor", "Plus",
+ "Multiply", "Screen", "Overlay", "Darken", "Lighten", "ColorDodge",
+ "ColorBurn", "HardLight", "SoftLight", "Difference", "Exclusion"
+ };
+
+ str->append("mode: ");
+ str->append(gModeStrings[fMode]);
+
+ static const char* gCoeffStrings[kCoeffCount] = {
+ "Zero", "One", "SC", "ISC", "DC", "IDC", "SA", "ISA", "DA", "IDA"
+ };
+
+ str->append(" src: ");
+ if (CANNOT_USE_COEFF == fSrcCoeff) {
+ str->append("can't use");
+ } else {
+ str->append(gCoeffStrings[fSrcCoeff]);
+ }
+
+ str->append(" dst: ");
+ if (CANNOT_USE_COEFF == fDstCoeff) {
+ str->append("can't use");
+ } else {
+ str->append(gCoeffStrings[fDstCoeff]);
+ }
+}
+#endif
+
///////////////////////////////////////////////////////////////////////////////
class SkClearXfermode : public SkProcCoeffXfermode {
virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const SK_OVERRIDE;
virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const SK_OVERRIDE;
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkClearXfermode)
private:
SkClearXfermode(SkFlattenableReadBuffer& buffer)
: SkProcCoeffXfermode(buffer) {}
+ typedef SkProcCoeffXfermode INHERITED;
};
void SkClearXfermode::xfer32(SkPMColor* SK_RESTRICT dst,
}
}
+#ifdef SK_DEVELOPER
+void SkClearXfermode::toString(SkString* str) const {
+ this->INHERITED::toString(str);
+}
+#endif
+
///////////////////////////////////////////////////////////////////////////////
class SkSrcXfermode : public SkProcCoeffXfermode {
virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const SK_OVERRIDE;
virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const SK_OVERRIDE;
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSrcXfermode)
private:
SkSrcXfermode(SkFlattenableReadBuffer& buffer)
: SkProcCoeffXfermode(buffer) {}
+ typedef SkProcCoeffXfermode INHERITED;
};
void SkSrcXfermode::xfer32(SkPMColor* SK_RESTRICT dst,
}
}
}
+#ifdef SK_DEVELOPER
+void SkSrcXfermode::toString(SkString* str) const {
+ this->INHERITED::toString(str);
+}
+#endif
///////////////////////////////////////////////////////////////////////////////
virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const SK_OVERRIDE;
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDstInXfermode)
private:
} while (--count != 0);
}
+#ifdef SK_DEVELOPER
+void SkDstInXfermode::toString(SkString* str) const {
+ this->INHERITED::toString(str);
+}
+#endif
+
///////////////////////////////////////////////////////////////////////////////
class SkDstOutXfermode : public SkProcCoeffXfermode {
virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const SK_OVERRIDE;
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDstOutXfermode)
private:
} while (--count != 0);
}
+#ifdef SK_DEVELOPER
+void SkDstOutXfermode::toString(SkString* str) const {
+ this->INHERITED::toString(str);
+}
+#endif
+
///////////////////////////////////////////////////////////////////////////////
SkXfermode* SkXfermode::Create(Mode mode) {
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
#include "SkArithmeticMode.h"
#include "SkColorPriv.h"
+#include "SkString.h"
#include "SkUnPreMultiply.h"
class SkArithmeticMode_scalar : public SkXfermode {
virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count,
const SkAlpha aa[]) const SK_OVERRIDE;
+ SK_DEVELOPER_TO_STRING()
SK_DECLARE_UNFLATTENABLE_OBJECT()
private:
SkScalar fK[4];
+
+ typedef SkXfermode INHERITED;
};
static int pinToByte(int value) {
}
}
+#ifdef SK_DEVELOPER
+void SkArithmeticMode_scalar::toString(SkString* str) const {
+ str->append("SkArithmeticMode_scalar: ");
+ for (int i = 0; i < 4; ++i) {
+ str->appendScalar(fK[i]);
+ if (i < 3) {
+ str->append(" ");
+ }
+ }
+}
+#endif
///////////////////////////////////////////////////////////////////////////////
return SkNEW_ARGS(SkArithmeticMode_scalar, (k1, k2, k3, k4));
}
+
#include "SkAvoidXfermode.h"
#include "SkColorPriv.h"
#include "SkFlattenableBuffers.h"
+#include "SkString.h"
SkAvoidXfermode::SkAvoidXfermode(SkColor opColor, U8CPU tolerance, Mode mode) {
if (tolerance > 255) {
const SkAlpha aa[]) const {
// override in subclass
}
+
+#ifdef SK_DEVELOPER
+void SkAvoidXfermode::toString(SkString* str) const {
+ str->append("SkAvoidXfermode: opColor: ");
+ str->appendHex(fOpColor);
+ str->appendf("distMul: %d ", fDistMul);
+
+ static const char* gModeStrings[] = { "Avoid", "Target" };
+
+ str->appendf("mode: %s", gModeStrings[fMode]);
+}
+#endif
#include "SkPixelXorXfermode.h"
#include "SkColorPriv.h"
#include "SkFlattenableBuffers.h"
+#include "SkString.h"
// we always return an opaque color, 'cause I don't know what to do with
// the alpha-component and still return a valid premultiplied color.
: INHERITED(rb) {
fOpColor = rb.readColor();
}
+
+#ifdef SK_DEVELOPER
+void SkPixelXorXfermode::toString(SkString* str) const {
+ str->append("SkPixelXorXfermode: ");
+ str->appendHex(fOpColor);
+}
+#endif