| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2015 Google Inc. | 3 * Copyright 2015 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "GrAARectRenderer.h" | 9 #include "GrAARectRenderer.h" |
| 10 #include "GrAtlasTextContext.h" | 10 #include "GrAtlasTextContext.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 public: | 27 public: |
| 28 AutoCheckFlush(GrContext* context) : fContext(context) { SkASSERT(context);
} | 28 AutoCheckFlush(GrContext* context) : fContext(context) { SkASSERT(context);
} |
| 29 ~AutoCheckFlush() { fContext->flushIfNecessary(); } | 29 ~AutoCheckFlush() { fContext->flushIfNecessary(); } |
| 30 | 30 |
| 31 private: | 31 private: |
| 32 GrContext* fContext; | 32 GrContext* fContext; |
| 33 }; | 33 }; |
| 34 | 34 |
| 35 GrDrawContext::GrDrawContext(GrContext* context, | 35 GrDrawContext::GrDrawContext(GrContext* context, |
| 36 GrDrawTarget* drawTarget, | 36 GrDrawTarget* drawTarget, |
| 37 const SkDeviceProperties& devProps) | 37 const SkSurfaceProps& surfaceProps) |
| 38 : fContext(context) | 38 : fContext(context) |
| 39 , fDrawTarget(SkRef(drawTarget)) | 39 , fDrawTarget(SkRef(drawTarget)) |
| 40 , fTextContext(NULL) | 40 , fTextContext(NULL) |
| 41 , fDevProps(SkNEW_ARGS(SkDeviceProperties, (devProps))) { | 41 , fSurfaceProps(surfaceProps) { |
| 42 } | 42 } |
| 43 | 43 |
| 44 GrDrawContext::~GrDrawContext() { | 44 GrDrawContext::~GrDrawContext() { |
| 45 SkSafeUnref(fDrawTarget); | 45 SkSafeUnref(fDrawTarget); |
| 46 SkDELETE(fTextContext); | 46 SkDELETE(fTextContext); |
| 47 SkDELETE(fDevProps); | |
| 48 } | 47 } |
| 49 | 48 |
| 50 void GrDrawContext::copySurface(GrRenderTarget* dst, GrSurface* src, | 49 void GrDrawContext::copySurface(GrRenderTarget* dst, GrSurface* src, |
| 51 const SkIRect& srcRect, const SkIPoint& dstPoint
) { | 50 const SkIRect& srcRect, const SkIPoint& dstPoint
) { |
| 52 if (!this->prepareToDraw(dst)) { | 51 if (!this->prepareToDraw(dst)) { |
| 53 return; | 52 return; |
| 54 } | 53 } |
| 55 | 54 |
| 56 fDrawTarget->copySurface(dst, src, srcRect, dstPoint); | 55 fDrawTarget->copySurface(dst, src, srcRect, dstPoint); |
| 57 } | 56 } |
| 58 | 57 |
| 59 GrTextContext* GrDrawContext::createTextContext(GrRenderTarget* renderTarget, | 58 GrTextContext* GrDrawContext::createTextContext(GrRenderTarget* renderTarget, |
| 60 const SkDeviceProperties& leakyP
roperties) { | 59 const SkSurfaceProps& surfacePro
ps) { |
| 61 if (fContext->caps()->shaderCaps()->pathRenderingSupport() && | 60 if (fContext->caps()->shaderCaps()->pathRenderingSupport() && |
| 62 renderTarget->isStencilBufferMultisampled()) { | 61 renderTarget->isStencilBufferMultisampled()) { |
| 63 GrStencilAttachment* sb = renderTarget->renderTargetPriv().attachStencil
Attachment(); | 62 GrStencilAttachment* sb = renderTarget->renderTargetPriv().attachStencil
Attachment(); |
| 64 if (sb) { | 63 if (sb) { |
| 65 return GrStencilAndCoverTextContext::Create(fContext, this, leakyPro
perties); | 64 return GrStencilAndCoverTextContext::Create(fContext, this, surfaceP
rops); |
| 66 } | 65 } |
| 67 } | 66 } |
| 68 | 67 |
| 69 return GrAtlasTextContext::Create(fContext, this, leakyProperties); | 68 return GrAtlasTextContext::Create(fContext, this, surfaceProps); |
| 70 } | 69 } |
| 71 | 70 |
| 72 void GrDrawContext::drawText(GrRenderTarget* rt, const GrClip& clip, const GrPai
nt& grPaint, | 71 void GrDrawContext::drawText(GrRenderTarget* rt, const GrClip& clip, const GrPai
nt& grPaint, |
| 73 const SkPaint& skPaint, | 72 const SkPaint& skPaint, |
| 74 const SkMatrix& viewMatrix, | 73 const SkMatrix& viewMatrix, |
| 75 const char text[], size_t byteLength, | 74 const char text[], size_t byteLength, |
| 76 SkScalar x, SkScalar y, const SkIRect& clipBounds)
{ | 75 SkScalar x, SkScalar y, const SkIRect& clipBounds)
{ |
| 77 if (!fTextContext) { | 76 if (!fTextContext) { |
| 78 fTextContext = this->createTextContext(rt, *fDevProps); | 77 fTextContext = this->createTextContext(rt, fSurfaceProps); |
| 79 } | 78 } |
| 80 | 79 |
| 81 fTextContext->drawText(rt, clip, grPaint, skPaint, viewMatrix, | 80 fTextContext->drawText(rt, clip, grPaint, skPaint, viewMatrix, |
| 82 text, byteLength, x, y, clipBounds); | 81 text, byteLength, x, y, clipBounds); |
| 83 | 82 |
| 84 } | 83 } |
| 85 void GrDrawContext::drawPosText(GrRenderTarget* rt, const GrClip& clip, const Gr
Paint& grPaint, | 84 void GrDrawContext::drawPosText(GrRenderTarget* rt, const GrClip& clip, const Gr
Paint& grPaint, |
| 86 const SkPaint& skPaint, | 85 const SkPaint& skPaint, |
| 87 const SkMatrix& viewMatrix, | 86 const SkMatrix& viewMatrix, |
| 88 const char text[], size_t byteLength, | 87 const char text[], size_t byteLength, |
| 89 const SkScalar pos[], int scalarsPerPosition, | 88 const SkScalar pos[], int scalarsPerPosition, |
| 90 const SkPoint& offset, const SkIRect& clipBounds
) { | 89 const SkPoint& offset, const SkIRect& clipBounds
) { |
| 91 if (!fTextContext) { | 90 if (!fTextContext) { |
| 92 fTextContext = this->createTextContext(rt, *fDevProps); | 91 fTextContext = this->createTextContext(rt, fSurfaceProps); |
| 93 } | 92 } |
| 94 | 93 |
| 95 fTextContext->drawPosText(rt, clip, grPaint, skPaint, viewMatrix, text, byte
Length, | 94 fTextContext->drawPosText(rt, clip, grPaint, skPaint, viewMatrix, text, byte
Length, |
| 96 pos, scalarsPerPosition, offset, clipBounds); | 95 pos, scalarsPerPosition, offset, clipBounds); |
| 97 | 96 |
| 98 } | 97 } |
| 99 void GrDrawContext::drawTextBlob(GrRenderTarget* rt, const GrClip& clip, const S
kPaint& skPaint, | 98 void GrDrawContext::drawTextBlob(GrRenderTarget* rt, const GrClip& clip, const S
kPaint& skPaint, |
| 100 const SkMatrix& viewMatrix, const SkTextBlob* b
lob, | 99 const SkMatrix& viewMatrix, const SkTextBlob* b
lob, |
| 101 SkScalar x, SkScalar y, | 100 SkScalar x, SkScalar y, |
| 102 SkDrawFilter* filter, const SkIRect& clipBounds
) { | 101 SkDrawFilter* filter, const SkIRect& clipBounds
) { |
| 103 if (!fTextContext) { | 102 if (!fTextContext) { |
| 104 fTextContext = this->createTextContext(rt, *fDevProps); | 103 fTextContext = this->createTextContext(rt, fSurfaceProps); |
| 105 } | 104 } |
| 106 | 105 |
| 107 fTextContext->drawTextBlob(rt, clip, skPaint, viewMatrix, blob, x, y, filter
, clipBounds); | 106 fTextContext->drawTextBlob(rt, clip, skPaint, viewMatrix, blob, x, y, filter
, clipBounds); |
| 108 } | 107 } |
| 109 | 108 |
| 110 void GrDrawContext::drawPaths(GrPipelineBuilder* pipelineBuilder, | 109 void GrDrawContext::drawPaths(GrPipelineBuilder* pipelineBuilder, |
| 111 const GrPathProcessor* pathProc, | 110 const GrPathProcessor* pathProc, |
| 112 const GrPathRange* pathRange, | 111 const GrPathRange* pathRange, |
| 113 const void* indices, | 112 const void* indices, |
| 114 int /*GrDrawTarget::PathIndexType*/ indexType, | 113 int /*GrDrawTarget::PathIndexType*/ indexType, |
| (...skipping 1213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1328 return DrawVerticesBatch::Create(geometry, type, viewMatrix, | 1327 return DrawVerticesBatch::Create(geometry, type, viewMatrix, |
| 1329 positions.begin(), vertexCount, | 1328 positions.begin(), vertexCount, |
| 1330 indices.begin(), hasIndices ? vertexCount :
0, | 1329 indices.begin(), hasIndices ? vertexCount :
0, |
| 1331 colors.begin(), | 1330 colors.begin(), |
| 1332 texCoords.begin(), | 1331 texCoords.begin(), |
| 1333 bounds); | 1332 bounds); |
| 1334 } | 1333 } |
| 1335 | 1334 |
| 1336 #endif | 1335 #endif |
| 1337 | 1336 |
| OLD | NEW |