| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrBitmapTextContext.h" | 8 #include "GrBitmapTextContext.h" |
| 9 #include "GrAtlas.h" | 9 #include "GrAtlas.h" |
| 10 #include "GrDrawTarget.h" | 10 #include "GrDrawTarget.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 GrBitmapTextContext::GrBitmapTextContext(GrContext* context, | 32 GrBitmapTextContext::GrBitmapTextContext(GrContext* context, |
| 33 const SkDeviceProperties& properties) | 33 const SkDeviceProperties& properties) |
| 34 : GrTextContext(context, properties) { | 34 : GrTextContext(context, properties) { |
| 35 fStrike = NULL; | 35 fStrike = NULL; |
| 36 | 36 |
| 37 fCurrTexture = NULL; | 37 fCurrTexture = NULL; |
| 38 fCurrVertex = 0; | 38 fCurrVertex = 0; |
| 39 | 39 |
| 40 fVertices = NULL; | 40 fVertices = NULL; |
| 41 fMaxVertices = 0; | 41 fMaxVertices = 0; |
| 42 |
| 43 fVertexBounds.setLargestInverted(); |
| 42 } | 44 } |
| 43 | 45 |
| 44 GrBitmapTextContext::~GrBitmapTextContext() { | 46 GrBitmapTextContext::~GrBitmapTextContext() { |
| 45 this->flushGlyphs(); | 47 this->flushGlyphs(); |
| 46 } | 48 } |
| 47 | 49 |
| 48 bool GrBitmapTextContext::canDraw(const SkPaint& paint) { | 50 bool GrBitmapTextContext::canDraw(const SkPaint& paint) { |
| 49 return !SkDraw::ShouldDrawTextAsPaths(paint, fContext->getMatrix()); | 51 return !SkDraw::ShouldDrawTextAsPaths(paint, fContext->getMatrix()); |
| 50 } | 52 } |
| 51 | 53 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 } else { | 100 } else { |
| 99 // set back to normal in case we took LCD path previously. | 101 // set back to normal in case we took LCD path previously. |
| 100 drawState->setBlendFunc(fPaint.getSrcBlendCoeff(), fPaint.getDstBlen
dCoeff()); | 102 drawState->setBlendFunc(fPaint.getSrcBlendCoeff(), fPaint.getDstBlen
dCoeff()); |
| 101 drawState->setColor(fPaint.getColor()); | 103 drawState->setColor(fPaint.getColor()); |
| 102 } | 104 } |
| 103 | 105 |
| 104 int nGlyphs = fCurrVertex / 4; | 106 int nGlyphs = fCurrVertex / 4; |
| 105 fDrawTarget->setIndexSourceToBuffer(fContext->getQuadIndexBuffer()); | 107 fDrawTarget->setIndexSourceToBuffer(fContext->getQuadIndexBuffer()); |
| 106 fDrawTarget->drawIndexedInstances(kTriangles_GrPrimitiveType, | 108 fDrawTarget->drawIndexedInstances(kTriangles_GrPrimitiveType, |
| 107 nGlyphs, | 109 nGlyphs, |
| 108 4, 6); | 110 4, 6, &fVertexBounds); |
| 109 | 111 |
| 110 fDrawTarget->resetVertexSource(); | 112 fDrawTarget->resetVertexSource(); |
| 111 fVertices = NULL; | 113 fVertices = NULL; |
| 112 fMaxVertices = 0; | 114 fMaxVertices = 0; |
| 113 fCurrVertex = 0; | 115 fCurrVertex = 0; |
| 116 fVertexBounds.setLargestInverted(); |
| 114 SkSafeSetNull(fCurrTexture); | 117 SkSafeSetNull(fCurrTexture); |
| 115 } | 118 } |
| 116 } | 119 } |
| 117 | 120 |
| 118 inline void GrBitmapTextContext::init(const GrPaint& paint, const SkPaint& skPai
nt) { | 121 inline void GrBitmapTextContext::init(const GrPaint& paint, const SkPaint& skPai
nt) { |
| 119 GrTextContext::init(paint, skPaint); | 122 GrTextContext::init(paint, skPaint); |
| 120 | 123 |
| 121 fStrike = NULL; | 124 fStrike = NULL; |
| 122 | 125 |
| 123 fCurrTexture = NULL; | 126 fCurrTexture = NULL; |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 0, | 612 0, |
| 610 GrTCast<void**>(&
fVertices), | 613 GrTCast<void**>(&
fVertices), |
| 611 NULL); | 614 NULL); |
| 612 GrAlwaysAssert(success); | 615 GrAlwaysAssert(success); |
| 613 SkASSERT(2*sizeof(GrPoint) == fDrawTarget->getDrawState().getVertexSize(
)); | 616 SkASSERT(2*sizeof(GrPoint) == fDrawTarget->getDrawState().getVertexSize(
)); |
| 614 } | 617 } |
| 615 | 618 |
| 616 GrFixed tx = SkIntToFixed(glyph->fAtlasLocation.fX); | 619 GrFixed tx = SkIntToFixed(glyph->fAtlasLocation.fX); |
| 617 GrFixed ty = SkIntToFixed(glyph->fAtlasLocation.fY); | 620 GrFixed ty = SkIntToFixed(glyph->fAtlasLocation.fY); |
| 618 | 621 |
| 619 fVertices[2*fCurrVertex].setRectFan(SkFixedToFloat(vx), | 622 SkRect r; |
| 620 SkFixedToFloat(vy), | 623 r.fLeft = SkFixedToFloat(vx); |
| 621 SkFixedToFloat(vx + width), | 624 r.fTop = SkFixedToFloat(vy); |
| 622 SkFixedToFloat(vy + height), | 625 r.fRight = SkFixedToFloat(vx + width); |
| 626 r.fBottom = SkFixedToFloat(vy + height); |
| 627 |
| 628 fVertexBounds.growToInclude(r); |
| 629 |
| 630 fVertices[2*fCurrVertex].setRectFan(r.fLeft, r.fTop, r.fRight, r.fBottom, |
| 623 2 * sizeof(SkPoint)); | 631 2 * sizeof(SkPoint)); |
| 624 fVertices[2*fCurrVertex+1].setRectFan(SkFixedToFloat(texture->normalizeFixed
X(tx)), | 632 fVertices[2*fCurrVertex+1].setRectFan(SkFixedToFloat(texture->normalizeFixed
X(tx)), |
| 625 SkFixedToFloat(texture->normalizeFixed
Y(ty)), | 633 SkFixedToFloat(texture->normalizeFixed
Y(ty)), |
| 626 SkFixedToFloat(texture->normalizeFixed
X(tx + width)), | 634 SkFixedToFloat(texture->normalizeFixed
X(tx + width)), |
| 627 SkFixedToFloat(texture->normalizeFixed
Y(ty + height)), | 635 SkFixedToFloat(texture->normalizeFixed
Y(ty + height)), |
| 628 2 * sizeof(SkPoint)); | 636 2 * sizeof(SkPoint)); |
| 629 fCurrVertex += 4; | 637 fCurrVertex += 4; |
| 630 } | 638 } |
| OLD | NEW |