diff options
author | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2010-01-04 19:35:33 +0000 |
---|---|---|
committer | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2010-01-04 19:35:33 +0000 |
commit | 474a12c4976b3000174cad5df74c498cd723c5e2 (patch) | |
tree | 7775c1e828dd2e9692a6fa20a91889799f109e75 | |
parent | 69975b0fce6c950a0481a2ddaec3ce0aaa03f90d (diff) |
Added a virtual to SkBounder, called by text, that passes
the glyph's ID as well as its bounds. Made the universal
doIRect() non-abstract so that a child class can override
either the general flavor or the text flavor.
git-svn-id: http://skia.googlecode.com/svn/trunk@468 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r-- | include/core/SkBounder.h | 13 | ||||
-rw-r--r-- | src/core/SkDraw.cpp | 7 |
2 files changed, 17 insertions, 3 deletions
diff --git a/include/core/SkBounder.h b/include/core/SkBounder.h index f20961d2ed..00fbbc6b65 100644 --- a/include/core/SkBounder.h +++ b/include/core/SkBounder.h @@ -38,7 +38,7 @@ public: Returns the result from onIRect. */ bool doIRect(const SkIRect&); - + bool doIRect(const SkIRect& , uint16_t glyphID); protected: /** Override in your subclass. This is called with the device bounds of an object (text, geometry, image) just before it is drawn. If your method @@ -46,7 +46,16 @@ protected: returns true, drawing continues. The bounds your method receives have already been transformed in to device coordinates, and clipped to the current clip. */ - virtual bool onIRect(const SkIRect&) = 0; + virtual bool onIRect(const SkIRect&) { + return false; + } + + /** Optionally, override in your subclass to receive the glyph ID when + text drawing supplies the device bounds of the object. + */ + virtual bool onIRect(const SkIRect& r, uint16_t glyphID) { + return onIRect(r); + } /** Called after each shape has been drawn. The default implementation does nothing, but your override could use this notification to signal itself diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp index 4f28cfea5d..78c282e13d 100644 --- a/src/core/SkDraw.cpp +++ b/src/core/SkDraw.cpp @@ -1366,7 +1366,7 @@ static void D1G_Bounder(const SkDraw1Glyph& state, } } - if (state.fBounder->doIRect(cr)) { + if (state.fBounder->doIRect(cr, glyph.getGlyphID())) { mask.fRowBytes = glyph.rowBytes(); mask.fFormat = static_cast<SkMask::Format>(glyph.fMaskFormat); mask.fImage = (uint8_t*)aa; @@ -2244,6 +2244,11 @@ bool SkBounder::doIRect(const SkIRect& r) { return rr.intersect(fClip->getBounds(), r) && this->onIRect(rr); } +bool SkBounder::doIRect(const SkIRect& r, uint16_t glyphID) { + SkIRect rr; + return rr.intersect(fClip->getBounds(), r) && this->onIRect(rr, glyphID); +} + bool SkBounder::doHairline(const SkPoint& pt0, const SkPoint& pt1, const SkPaint& paint) { SkIRect r; |