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
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
}
}
- 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;
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;