/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "GrPathRenderingRenderTargetContext.h" #include "GrDrawingManager.h" #include "text/GrStencilAndCoverTextContext.h" #define ASSERT_SINGLE_OWNER \ SkDEBUGCODE(GrSingleOwner::AutoEnforce debug_SingleOwner(this->singleOwner());) #define RETURN_IF_ABANDONED if (this->drawingManager()->wasAbandoned()) { return; } void GrPathRenderingRenderTargetContext::drawText(const GrClip& clip, const SkPaint& skPaint, const SkMatrix& viewMatrix, const char text[], size_t byteLength, SkScalar x, SkScalar y, const SkIRect& clipBounds) { ASSERT_SINGLE_OWNER RETURN_IF_ABANDONED SkDEBUGCODE(this->validate();) GR_AUDIT_TRAIL_AUTO_FRAME(this->auditTrail(), "GrPathRenderingRenderTargetContext::drawText"); if (!fStencilAndCoverTextContext) { GrAtlasTextContext* fallbackContext = this->drawingManager()->getAtlasTextContext(); fStencilAndCoverTextContext.reset(GrStencilAndCoverTextContext::Create(fallbackContext)); } fStencilAndCoverTextContext->drawText(this->drawingManager()->getContext(), this, clip, skPaint, viewMatrix, this->surfaceProps(), text, byteLength, x, y, clipBounds); } void GrPathRenderingRenderTargetContext::drawPosText(const GrClip& clip, const SkPaint& skPaint, const SkMatrix& viewMatrix, const char text[], size_t byteLength, const SkScalar pos[], int scalarsPerPosition, const SkPoint& offset, const SkIRect& clipBounds) { ASSERT_SINGLE_OWNER RETURN_IF_ABANDONED SkDEBUGCODE(this->validate();) GR_AUDIT_TRAIL_AUTO_FRAME(this->auditTrail(), "GrPathRenderingRenderTargetContext::drawPosText"); if (!fStencilAndCoverTextContext) { GrAtlasTextContext* fallbackContext = this->drawingManager()->getAtlasTextContext(); fStencilAndCoverTextContext.reset(GrStencilAndCoverTextContext::Create(fallbackContext)); } fStencilAndCoverTextContext->drawPosText( this->drawingManager()->getContext(), this, clip, skPaint, viewMatrix, this->surfaceProps(), text, byteLength, pos, scalarsPerPosition, offset, clipBounds); } void GrPathRenderingRenderTargetContext::drawTextBlob(const GrClip& clip, const SkPaint& skPaint, const SkMatrix& viewMatrix, const SkTextBlob* blob, SkScalar x, SkScalar y, SkDrawFilter* filter, const SkIRect& clipBounds) { ASSERT_SINGLE_OWNER RETURN_IF_ABANDONED SkDEBUGCODE(this->validate();) GR_AUDIT_TRAIL_AUTO_FRAME(this->auditTrail(), "GrPathRenderingRenderTargetContext::drawTextBlob"); if (!fStencilAndCoverTextContext) { GrAtlasTextContext* fallbackContext = this->drawingManager()->getAtlasTextContext(); fStencilAndCoverTextContext.reset(GrStencilAndCoverTextContext::Create(fallbackContext)); } fStencilAndCoverTextContext->drawTextBlob(this->drawingManager()->getContext(), this, clip, skPaint, viewMatrix, this->surfaceProps(), blob, x, y, filter, clipBounds); }