зеркало из https://github.com/mozilla/moz-skia.git
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
This commit is contained in:
Родитель
69975b0fce
Коммит
474a12c497
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче