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

Unified Diff: include/core/SkPaint.h

Issue 239163002: WIP -- separate out Parts from SkPaint (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: links and runs Created 6 years, 8 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
« no previous file with comments | « no previous file | include/core/SkPaintParts.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/core/SkPaint.h
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index 95fc0b87ad0be45dc85cd0569849c24e766d50d6..94173e8dd3640be39e259396c4c50db3d145163e 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -1,5 +1,3 @@
-
-
/*
* Copyright 2006 The Android Open Source Project
*
@@ -7,37 +5,18 @@
* found in the LICENSE file.
*/
-
#ifndef SkPaint_DEFINED
#define SkPaint_DEFINED
-#include "SkColor.h"
+#include "SkPaintParts.h"
#include "SkDrawLooper.h"
#include "SkMatrix.h"
#include "SkXfermode.h"
+
#ifdef SK_BUILD_FOR_ANDROID
-#include "SkPaintOptionsAndroid.h"
+ #include "SkPaintOptionsAndroid.h"
#endif
-class SkAnnotation;
-class SkAutoGlyphCache;
-class SkColorFilter;
-class SkDescriptor;
-struct SkDeviceProperties;
-class SkReadBuffer;
-class SkWriteBuffer;
-struct SkGlyph;
-struct SkRect;
-class SkGlyphCache;
-class SkImageFilter;
-class SkMaskFilter;
-class SkPath;
-class SkPathEffect;
-struct SkPoint;
-class SkRasterizer;
-class SkShader;
-class SkTypeface;
-
typedef const SkGlyph& (*SkDrawCacheProc)(SkGlyphCache*, const char**,
SkFixed x, SkFixed y);
@@ -57,6 +36,8 @@ public:
SkPaint(const SkPaint& paint);
~SkPaint();
+ operator const SkPaintParts& () const { return fParts; }
+
SkPaint& operator=(const SkPaint&);
SK_API friend bool operator==(const SkPaint& a, const SkPaint& b);
@@ -88,10 +69,7 @@ public:
kFull_Hinting = 3
};
- Hinting getHinting() const {
- return static_cast<Hinting>(fHinting);
- }
-
+ Hinting getHinting() const { return (Hinting)fParts.getHinting(); }
void setHinting(Hinting hintingLevel);
/** Specifies the bit values that are stored in the paint's flags.
@@ -121,7 +99,7 @@ public:
/** Return the paint's flags. Use the Flag enum to test flag values.
@return the paint's flags (see enums ending in _Flag for bit masks)
*/
- uint32_t getFlags() const { return fFlags; }
+ uint32_t getFlags() const { return fParts.getFlags(); }
/** Set the paint's flags. Use the Flag enum to specific flag values.
@param flags The new flag bits for the paint (see Flags enum)
@@ -302,7 +280,7 @@ public:
* Return the filter level. This affects the quality (and performance) of
* drawing scaled images.
*/
- FilterLevel getFilterLevel() const { return (FilterLevel)fFilterLevel; }
+ FilterLevel getFilterLevel() const { return (FilterLevel)fParts.getFilterLevel(); }
/**
* Set the filter level. This affects the quality (and performance) of
@@ -350,7 +328,7 @@ public:
kFill_Style).
@return the paint's Style
*/
- Style getStyle() const { return (Style)fStyle; }
+ Style getStyle() const { return (Style)fParts.getStyle(); }
/** Set the paint's style, used for controlling how primitives'
geometries are interpreted (except for drawBitmap, which always assumes
@@ -365,7 +343,7 @@ public:
the values of r,g,b.
@return the paint's color (and alpha).
*/
- SkColor getColor() const { return fColor; }
+ SkColor getColor() const { return fParts.fColor; }
/** Set the paint's color. Note that the color is a 32bit value containing
alpha as well as r,g,b. This 32bit value is not premultiplied, meaning
@@ -377,7 +355,7 @@ public:
/** Helper to getColor() that just returns the color's alpha value.
@return the alpha component of the paint's color.
*/
- uint8_t getAlpha() const { return SkToU8(SkColorGetA(fColor)); }
+ uint8_t getAlpha() const { return SkToU8(SkColorGetA(this->getColor())); }
/** Helper to setColor(), that only assigns the color's alpha value,
leaving its r,g,b values unchanged.
@@ -401,7 +379,7 @@ public:
@return the paint's stroke width, used whenever the paint's style is
Stroke or StrokeAndFill.
*/
- SkScalar getStrokeWidth() const { return fWidth; }
+ SkScalar getStrokeWidth() const { return fParts.getStrokeWidth(); }
/** Set the width for stroking.
Pass 0 to stroke in hairline mode.
@@ -416,7 +394,7 @@ public:
@return the paint's miter limit, used whenever the paint's style is
Stroke or StrokeAndFill.
*/
- SkScalar getStrokeMiter() const { return fMiterLimit; }
+ SkScalar getStrokeMiter() const { return fParts.getStrokeMiter(); }
/** Set the paint's stroke miter value. This is used to control the
behavior of miter joins when the joins angle is sharp. This value must
@@ -456,7 +434,7 @@ public:
@return the line cap style for the paint, used whenever the paint's
style is Stroke or StrokeAndFill.
*/
- Cap getStrokeCap() const { return (Cap)fCapType; }
+ Cap getStrokeCap() const { return (Cap)fParts.getStrokeCap(); }
/** Set the paint's stroke cap type.
@param cap set the paint's line cap style, used whenever the paint's
@@ -468,7 +446,7 @@ public:
@return the paint's line join style, used whenever the paint's style is
Stroke or StrokeAndFill.
*/
- Join getStrokeJoin() const { return (Join)fJoinType; }
+ Join getStrokeJoin() const { return (Join)fParts.getStrokeJoin(); }
/** Set the paint's stroke join type.
@param join set the paint's line join style, used whenever the paint's
@@ -496,7 +474,7 @@ public:
The shader's reference count is not affected.
@return the paint's shader (or NULL)
*/
- SkShader* getShader() const { return fShader; }
+ SkShader* getShader() const { return fParts.fShader; }
/** Set or clear the shader object.
* Shaders specify the source color(s) for what is being drawn. If a paint
@@ -525,7 +503,7 @@ public:
count is not changed.
@return the paint's colorfilter (or NULL)
*/
- SkColorFilter* getColorFilter() const { return fColorFilter; }
+ SkColorFilter* getColorFilter() const { return fParts.fColorFilter; }
/** Set or clear the paint's colorfilter, returning the parameter.
<p />
@@ -541,7 +519,7 @@ public:
The xfermode's reference count is not affected.
@return the paint's xfermode (or NULL)
*/
- SkXfermode* getXfermode() const { return fXfermode; }
+ SkXfermode* getXfermode() const { return fParts.fXfermode; }
/** Set or clear the xfermode object.
<p />
@@ -566,7 +544,7 @@ public:
The patheffect reference count is not affected.
@return the paint's patheffect (or NULL)
*/
- SkPathEffect* getPathEffect() const { return fPathEffect; }
+ SkPathEffect* getPathEffect() const { return fParts.fPathEffect; }
/** Set or clear the patheffect object.
<p />
@@ -585,7 +563,7 @@ public:
The maskfilter reference count is not affected.
@return the paint's maskfilter (or NULL)
*/
- SkMaskFilter* getMaskFilter() const { return fMaskFilter; }
+ SkMaskFilter* getMaskFilter() const { return fParts.fMaskFilter; }
/** Set or clear the maskfilter object.
<p />
@@ -607,7 +585,7 @@ public:
measuring text. The typeface reference count is not affected.
@return the paint's typeface (or NULL)
*/
- SkTypeface* getTypeface() const { return fTypeface; }
+ SkTypeface* getTypeface() const { return fParts.fTypeface; }
/** Set or clear the typeface object.
<p />
@@ -626,7 +604,7 @@ public:
The raster controls how paths/text are turned into alpha masks.
@return the paint's rasterizer (or NULL)
*/
- SkRasterizer* getRasterizer() const { return fRasterizer; }
+ SkRasterizer* getRasterizer() const { return fParts.fRasterizer; }
/** Set or clear the rasterizer object.
<p />
@@ -641,10 +619,10 @@ public:
*/
SkRasterizer* setRasterizer(SkRasterizer* rasterizer);
- SkImageFilter* getImageFilter() const { return fImageFilter; }
+ SkImageFilter* getImageFilter() const { return fParts.fImageFilter; }
SkImageFilter* setImageFilter(SkImageFilter*);
- SkAnnotation* getAnnotation() const { return fAnnotation; }
+ SkAnnotation* getAnnotation() const { return fParts.fAnnotation; }
SkAnnotation* setAnnotation(SkAnnotation*);
/**
@@ -658,7 +636,7 @@ public:
* Return the paint's SkDrawLooper (if any). Does not affect the looper's
* reference count.
*/
- SkDrawLooper* getLooper() const { return fLooper; }
+ SkDrawLooper* getLooper() const { return fParts.fLooper; }
/**
* Set or clear the looper object.
@@ -685,7 +663,7 @@ public:
/** Return the paint's Align value for drawing text.
@return the paint's Align value for drawing text.
*/
- Align getTextAlign() const { return (Align)fTextAlign; }
+ Align getTextAlign() const { return (Align)fParts.getTextAlign(); }
/** Set the paint's text alignment.
@param align set the paint's Align value for drawing text.
@@ -695,7 +673,7 @@ public:
/** Return the paint's text size.
@return the paint's text size.
*/
- SkScalar getTextSize() const { return fTextSize; }
+ SkScalar getTextSize() const { return fParts.getTextSize(); }
/** Set the paint's text size. This value must be > 0
@param textSize set the paint's text size.
@@ -706,7 +684,7 @@ public:
is 1.0.
@return the paint's scale factor in X for drawing/measuring text
*/
- SkScalar getTextScaleX() const { return fTextScaleX; }
+ SkScalar getTextScaleX() const { return fParts.getTextScaleX(); }
/** Set the paint's horizontal scale factor for text. The default value
is 1.0. Values > 1.0 will stretch the text wider. Values < 1.0 will
@@ -720,7 +698,7 @@ public:
is 0.
@return the paint's skew factor in X for drawing text.
*/
- SkScalar getTextSkewX() const { return fTextSkewX; }
+ SkScalar getTextSkewX() const { return fParts.getTextSkewX(); }
/** Set the paint's horizontal skew factor for text. The default value
is 0. For approximating oblique text, use values around -0.25.
@@ -738,7 +716,7 @@ public:
kGlyphID_TextEncoding //!< the text parameters are glyph indices
};
- TextEncoding getTextEncoding() const { return (TextEncoding)fTextEncoding; }
+ TextEncoding getTextEncoding() const { return (TextEncoding)fParts.getTextEncoding(); }
void setTextEncoding(TextEncoding encoding);
@@ -1026,7 +1004,7 @@ public:
}
SkMatrix* setTextMatrix(SkMatrix* matrix) const {
- return SetTextMatrix(matrix, fTextSize, fTextScaleX, fTextSkewX);
+ return SetTextMatrix(matrix, fParts.fTextSize, fParts.fTextScaleX, fParts.fTextSkewX);
}
SK_TO_STRING_NONVIRT()
@@ -1037,41 +1015,17 @@ public:
};
private:
- SkTypeface* fTypeface;
- SkPathEffect* fPathEffect;
- SkShader* fShader;
- SkXfermode* fXfermode;
- SkMaskFilter* fMaskFilter;
- SkColorFilter* fColorFilter;
- SkRasterizer* fRasterizer;
- SkDrawLooper* fLooper;
- SkImageFilter* fImageFilter;
- SkAnnotation* fAnnotation;
-
- SkScalar fTextSize;
- SkScalar fTextScaleX;
- SkScalar fTextSkewX;
- SkColor fColor;
- SkScalar fWidth;
- SkScalar fMiterLimit;
- union {
- struct {
- // all of these bitfields should add up to 32
- unsigned fFlags : 16;
- unsigned fTextAlign : 2;
- unsigned fCapType : 2;
- unsigned fJoinType : 2;
- unsigned fStyle : 2;
- unsigned fTextEncoding : 2; // 3 values
- unsigned fHinting : 2;
- unsigned fFilterLevel : 2;
- //unsigned fFreeBits : 2;
- };
- uint32_t fBitfields;
- };
- uint32_t fDirtyBits;
+ SkPaintParts fParts;
+ uint32_t fDirtyBits;
+
+#ifdef SK_BUILD_FOR_ANDROID
+ SkPaintOptionsAndroid fPaintOptionsAndroid;
+ // In order for the == operator to work properly this must be the last field
+ // in the struct so that we can do a memcmp to this field's offset.
+ uint32_t fGenerationID;
+#endif
- uint32_t getBitfields() const { return fBitfields; }
+ uint32_t getBitfields() const { return fParts.fBitfields; }
void setBitfields(uint32_t bitfields);
SkDrawCacheProc getDrawCacheProc() const;
@@ -1139,14 +1093,6 @@ private:
friend class GrDistanceFieldTextContext;
friend class SkTextToPathIter;
friend class SkCanonicalizePaint;
-
-#ifdef SK_BUILD_FOR_ANDROID
- SkPaintOptionsAndroid fPaintOptionsAndroid;
-
- // In order for the == operator to work properly this must be the last field
- // in the struct so that we can do a memcmp to this field's offset.
- uint32_t fGenerationID;
-#endif
};
#endif
« no previous file with comments | « no previous file | include/core/SkPaintParts.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698