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

Unified Diff: Source/core/platform/graphics/skia/SkiaFontWin.cpp

Issue 14160005: Track the region where text is painted. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase with TOT Created 7 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
Index: Source/core/platform/graphics/skia/SkiaFontWin.cpp
diff --git a/Source/core/platform/graphics/skia/SkiaFontWin.cpp b/Source/core/platform/graphics/skia/SkiaFontWin.cpp
index 8a0b7ce2a8ce988e37518d1723762db357469b88..d4971aee692e192bc3a5136881c71f30294b2e99 100644
--- a/Source/core/platform/graphics/skia/SkiaFontWin.cpp
+++ b/Source/core/platform/graphics/skia/SkiaFontWin.cpp
@@ -47,6 +47,7 @@ namespace WebCore {
static void skiaDrawText(PlatformContextSkia* context,
const SkPoint& point,
+ const SkRect& textRect,
SkPaint* paint,
const WORD* glyphs,
const int* advances,
@@ -70,7 +71,7 @@ static void skiaDrawText(PlatformContextSkia* context,
y + -SkIntToScalar(offsets[i].dv));
x += SkIntToScalar(advances[i]);
}
- context->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, *paint);
+ context->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, textRect, *paint);
} else {
SkAutoSTArray<kLocalGlyphMax * 2, SkScalar> storage(numGlyphs);
SkScalar* xpos = storage.get();
@@ -79,7 +80,7 @@ static void skiaDrawText(PlatformContextSkia* context,
x += SkIntToScalar(advances[i]);
}
context->drawPosTextH(glyphs, numGlyphs * sizeof(uint16_t),
- xpos, y, *paint);
+ xpos, y, textRect, *paint);
}
}
@@ -161,7 +162,8 @@ static void paintSkiaText(GraphicsContext* context, HFONT hfont,
const WORD* glyphs,
const int* advances,
const GOFFSET* offsets,
- const SkPoint* origin)
+ const SkPoint& origin,
+ const SkRect& textRect)
{
PlatformContextSkia* platformContext = context->platformContext();
TextDrawingModeFlags textMode = platformContext->getTextDrawingMode();
@@ -178,7 +180,7 @@ static void paintSkiaText(GraphicsContext* context, HFONT hfont,
bool didFill = false;
if ((textMode & TextModeFill) && (SkColorGetA(paint.getColor()) || paint.getLooper())) {
- skiaDrawText(platformContext, *origin, &paint, &glyphs[0], &advances[0], &offsets[0], numGlyphs);
+ skiaDrawText(platformContext, origin, textRect, &paint, &glyphs[0], &advances[0], &offsets[0], numGlyphs);
didFill = true;
}
@@ -205,7 +207,7 @@ static void paintSkiaText(GraphicsContext* context, HFONT hfont,
paint.setLooper(0);
}
- skiaDrawText(platformContext, *origin, &paint, &glyphs[0], &advances[0], &offsets[0], numGlyphs);
+ skiaDrawText(platformContext, origin, textRect, &paint, &glyphs[0], &advances[0], &offsets[0], numGlyphs);
}
}
@@ -217,10 +219,11 @@ void paintSkiaText(GraphicsContext* context,
const WORD* glyphs,
const int* advances,
const GOFFSET* offsets,
- const SkPoint* origin)
+ const SkPoint& origin,
+ const SkRect& textRect)
{
paintSkiaText(context, data.hfont(), data.typeface(), data.size(), data.lfQuality(),
- numGlyphs, glyphs, advances, offsets, origin);
+ numGlyphs, glyphs, advances, offsets, origin, textRect);
}
void paintSkiaText(GraphicsContext* context,
@@ -229,14 +232,15 @@ void paintSkiaText(GraphicsContext* context,
const WORD* glyphs,
const int* advances,
const GOFFSET* offsets,
- const SkPoint* origin)
+ const SkPoint& origin,
+ const SkRect& textRect)
{
int size;
int quality;
SkTypeface* face = CreateTypefaceFromHFont(hfont, &size, &quality);
SkAutoUnref aur(face);
- paintSkiaText(context, hfont, face, size, quality, numGlyphs, glyphs, advances, offsets, origin);
+ paintSkiaText(context, hfont, face, size, quality, numGlyphs, glyphs, advances, offsets, origin, textRect);
}
} // namespace WebCore

Powered by Google App Engine
This is Rietveld 408576698