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

Unified Diff: src/core/SkPaint.cpp

Issue 245953003: Test font created from paint (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 years, 7 months 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 side-by-side diff with in-line comments
Download patch
Index: src/core/SkPaint.cpp
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index f3bf01bfafc5ca30e0507190a8ffee37f8a5efaa..68f0dfbf6b50b9867f22764b59035ecce51def4a 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -70,6 +70,8 @@ enum {
#endif
SkPaint::SkPaint() {
+ fCachedFont = NULL;
+
fTypeface = NULL;
fPathEffect = NULL;
fShader = NULL;
@@ -114,6 +116,8 @@ SkPaint::SkPaint(const SkPaint& src) {
#define COPY(field) field = src.field
#define REF_COPY(field) field = SkSafeRef(src.field)
+ REF_COPY(fCachedFont);
+
REF_COPY(fTypeface);
REF_COPY(fPathEffect);
REF_COPY(fShader);
@@ -144,6 +148,7 @@ SkPaint::SkPaint(const SkPaint& src) {
}
SkPaint::~SkPaint() {
+ SkSafeUnref(fCachedFont);
SkSafeUnref(fTypeface);
SkSafeUnref(fPathEffect);
SkSafeUnref(fShader);
@@ -166,6 +171,8 @@ SkPaint& SkPaint::operator=(const SkPaint& src) {
SkASSERT(&src);
+ REF_COPY(fCachedFont);
+
REF_COPY(fTypeface);
REF_COPY(fPathEffect);
REF_COPY(fShader);
@@ -267,11 +274,13 @@ void SkPaint::setFilterLevel(FilterLevel level) {
}
void SkPaint::setHinting(Hinting hintingLevel) {
+ this->dirtyCachedFont(hintingLevel != fHinting);
GEN_ID_INC_EVAL((unsigned) hintingLevel != fHinting);
fHinting = hintingLevel;
}
void SkPaint::setFlags(uint32_t flags) {
+ this->dirtyCachedFont(fFlags != flags);
GEN_ID_INC_EVAL(fFlags != flags);
fFlags = flags;
}
@@ -415,6 +424,7 @@ void SkPaint::setTextAlign(Align align) {
void SkPaint::setTextSize(SkScalar ts) {
if (ts >= 0) {
+ this->dirtyCachedFont(ts != fTextSize);
GEN_ID_INC_EVAL(ts != fTextSize);
fTextSize = ts;
fDirtyBits |= kTextSize_DirtyBit;
@@ -426,12 +436,14 @@ void SkPaint::setTextSize(SkScalar ts) {
}
void SkPaint::setTextScaleX(SkScalar scaleX) {
+ this->dirtyCachedFont(scaleX != fTextScaleX);
GEN_ID_INC_EVAL(scaleX != fTextScaleX);
fTextScaleX = scaleX;
fDirtyBits |= kTextScaleX_DirtyBit;
}
void SkPaint::setTextSkewX(SkScalar skewX) {
+ this->dirtyCachedFont(skewX != fTextSkewX);
GEN_ID_INC_EVAL(skewX != fTextSkewX);
fTextSkewX = skewX;
fDirtyBits |= kTextSkewX_DirtyBit;
@@ -455,11 +467,12 @@ inline static uint32_t set_mask(uint32_t dst, uint32_t bitmask, bool value) {
return value ? (dst | bitmask) : (dst & ~bitmask);
}
-SkTypeface* SkPaint::setTypeface(SkTypeface* font) {
- SkRefCnt_SafeAssign(fTypeface, font);
+SkTypeface* SkPaint::setTypeface(SkTypeface* typeface) {
+ this->dirtyCachedFont(typeface != fTypeface);
+ SkRefCnt_SafeAssign(fTypeface, typeface);
GEN_ID_INC;
- fDirtyBits = set_mask(fDirtyBits, kTypeface_DirtyBit, font != NULL);
- return font;
+ fDirtyBits = set_mask(fDirtyBits, kTypeface_DirtyBit, typeface != NULL);
+ return typeface;
}
SkRasterizer* SkPaint::setRasterizer(SkRasterizer* r) {

Powered by Google App Engine
This is Rietveld 408576698