| Index: src/gpu/GrStencilAndCoverTextContext.cpp
|
| diff --git a/src/gpu/GrStencilAndCoverTextContext.cpp b/src/gpu/GrStencilAndCoverTextContext.cpp
|
| index ec2fa21af0a1604861a4df6e78fdb430e20c657c..db41c02239b0ad3245489c85d7270371070207d8 100644
|
| --- a/src/gpu/GrStencilAndCoverTextContext.cpp
|
| +++ b/src/gpu/GrStencilAndCoverTextContext.cpp
|
| @@ -20,19 +20,21 @@
|
| #include "SkTextMapStateProc.h"
|
| #include "SkTextFormatParams.h"
|
|
|
| -GrStencilAndCoverTextContext::GrStencilAndCoverTextContext(
|
| - GrContext* context, const SkDeviceProperties& properties)
|
| - : GrTextContext(context, properties)
|
| +GrStencilAndCoverTextContext::GrStencilAndCoverTextContext(GrContext* context,
|
| + SkGpuDevice* gpuDevice,
|
| + const SkDeviceProperties& properties)
|
| + : GrTextContext(context, gpuDevice, properties)
|
| , fStroke(SkStrokeRec::kFill_InitStyle)
|
| , fQueuedGlyphCount(0)
|
| , fFallbackGlyphsIdx(kGlyphBufferSize) {
|
| }
|
|
|
| -GrStencilAndCoverTextContext* GrStencilAndCoverTextContext::Create(GrContext* context,
|
| - const SkDeviceProperties& props) {
|
| +GrStencilAndCoverTextContext*
|
| +GrStencilAndCoverTextContext::Create(GrContext* context, SkGpuDevice* gpuDevice,
|
| + const SkDeviceProperties& props) {
|
| GrStencilAndCoverTextContext* textContext = SkNEW_ARGS(GrStencilAndCoverTextContext,
|
| - (context, props));
|
| - textContext->fFallbackTextContext = GrBitmapTextContext::Create(context, props);
|
| + (context, gpuDevice, props));
|
| + textContext->fFallbackTextContext = GrBitmapTextContext::Create(context, gpuDevice, props);
|
|
|
| return textContext;
|
| }
|
| @@ -71,7 +73,8 @@ void GrStencilAndCoverTextContext::onDrawText(GrRenderTarget* rt,
|
| const SkMatrix& viewMatrix,
|
| const char text[],
|
| size_t byteLength,
|
| - SkScalar x, SkScalar y) {
|
| + SkScalar x, SkScalar y,
|
| + const SkIRect& regionClipBounds) {
|
| SkASSERT(byteLength == 0 || text != NULL);
|
|
|
| if (text == NULL || byteLength == 0 /*|| fRC->isEmpty()*/) {
|
| @@ -93,7 +96,8 @@ void GrStencilAndCoverTextContext::onDrawText(GrRenderTarget* rt,
|
| // will turn off the use of device-space glyphs when perspective transforms
|
| // are in use.
|
|
|
| - this->init(rt, clip, paint, skPaint, byteLength, kMaxAccuracy_RenderMode, viewMatrix);
|
| + this->init(rt, clip, paint, skPaint, byteLength, kMaxAccuracy_RenderMode, viewMatrix,
|
| + regionClipBounds);
|
|
|
| // Transform our starting point.
|
| if (fUsingDeviceSpaceGlyphs) {
|
| @@ -164,7 +168,8 @@ void GrStencilAndCoverTextContext::onDrawPosText(GrRenderTarget* rt,
|
| size_t byteLength,
|
| const SkScalar pos[],
|
| int scalarsPerPosition,
|
| - const SkPoint& offset) {
|
| + const SkPoint& offset,
|
| + const SkIRect& regionClipBounds) {
|
| SkASSERT(byteLength == 0 || text != NULL);
|
| SkASSERT(1 == scalarsPerPosition || 2 == scalarsPerPosition);
|
|
|
| @@ -181,7 +186,8 @@ void GrStencilAndCoverTextContext::onDrawPosText(GrRenderTarget* rt,
|
| // transform is not part of SkPaint::measureText API, and thus we use the
|
| // same glyphs as what were measured.
|
|
|
| - this->init(rt, clip, paint, skPaint, byteLength, kMaxPerformance_RenderMode, viewMatrix);
|
| + this->init(rt, clip, paint, skPaint, byteLength, kMaxPerformance_RenderMode, viewMatrix,
|
| + regionClipBounds);
|
|
|
| SkDrawCacheProc glyphCacheProc = fSkPaint.getDrawCacheProc();
|
|
|
| @@ -239,8 +245,9 @@ void GrStencilAndCoverTextContext::init(GrRenderTarget* rt,
|
| const SkPaint& skPaint,
|
| size_t textByteLength,
|
| RenderMode renderMode,
|
| - const SkMatrix& viewMatrix) {
|
| - GrTextContext::init(rt, clip, paint, skPaint);
|
| + const SkMatrix& viewMatrix,
|
| + const SkIRect& regionClipBounds) {
|
| + GrTextContext::init(rt, clip, paint, skPaint, regionClipBounds);
|
|
|
| fContextInitialMatrix = viewMatrix;
|
| fViewMatrix = viewMatrix;
|
| @@ -449,7 +456,7 @@ void GrStencilAndCoverTextContext::flush() {
|
| fViewMatrix, (char*)&fGlyphIndices[fFallbackGlyphsIdx],
|
| 2 * fallbackGlyphCount,
|
| get_xy_scalar_array(&fGlyphPositions[fFallbackGlyphsIdx]),
|
| - 2, SkPoint::Make(0, 0));
|
| + 2, SkPoint::Make(0, 0), fRegionClipBounds);
|
|
|
| fFallbackGlyphsIdx = kGlyphBufferSize;
|
| }
|
|
|