| 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 "GrDefaultGeoProcFactory.h" | 10 #include "GrDefaultGeoProcFactory.h" |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 } else { | 258 } else { |
| 259 while (text < stop) { | 259 while (text < stop) { |
| 260 const char* currentText = text; | 260 const char* currentText = text; |
| 261 const SkGlyph& metricGlyph = glyphCacheProc(cache, &text, 0, 0); | 261 const SkGlyph& metricGlyph = glyphCacheProc(cache, &text, 0, 0); |
| 262 | 262 |
| 263 if (metricGlyph.fWidth) { | 263 if (metricGlyph.fWidth) { |
| 264 SkDEBUGCODE(SkFixed prevAdvX = metricGlyph.fAdvanceX;) | 264 SkDEBUGCODE(SkFixed prevAdvX = metricGlyph.fAdvanceX;) |
| 265 SkDEBUGCODE(SkFixed prevAdvY = metricGlyph.fAdvanceY;) | 265 SkDEBUGCODE(SkFixed prevAdvY = metricGlyph.fAdvanceY;) |
| 266 SkPoint tmsLoc; | 266 SkPoint tmsLoc; |
| 267 tmsProc(pos, &tmsLoc); | 267 tmsProc(pos, &tmsLoc); |
| 268 SkIPoint fixedLoc; | 268 SkPoint alignLoc; |
| 269 alignProc(tmsLoc, metricGlyph, &fixedLoc); | 269 alignProc(tmsLoc, metricGlyph, &alignLoc); |
| 270 | 270 |
| 271 SkFixed fx = fixedLoc.fX + halfSampleX; | 271 SkFixed fx = SkScalarToFixed(alignLoc.fX) + halfSampleX; |
| 272 SkFixed fy = fixedLoc.fY + halfSampleY; | 272 SkFixed fy = SkScalarToFixed(alignLoc.fY) + halfSampleY; |
| 273 | 273 |
| 274 // have to call again, now that we've been "aligned" | 274 // have to call again, now that we've been "aligned" |
| 275 const SkGlyph& glyph = glyphCacheProc(cache, ¤tText, | 275 const SkGlyph& glyph = glyphCacheProc(cache, ¤tText, |
| 276 fx & fxMask, fy & fyMa
sk); | 276 fx & fxMask, fy & fyMa
sk); |
| 277 // the assumption is that the metrics haven't changed | 277 // the assumption is that the metrics haven't changed |
| 278 SkASSERT(prevAdvX == glyph.fAdvanceX); | 278 SkASSERT(prevAdvX == glyph.fAdvanceX); |
| 279 SkASSERT(prevAdvY == glyph.fAdvanceY); | 279 SkASSERT(prevAdvY == glyph.fAdvanceY); |
| 280 SkASSERT(glyph.fWidth); | 280 SkASSERT(glyph.fWidth); |
| 281 | 281 |
| 282 this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), | 282 this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), |
| (...skipping 30 matching lines...) Expand all Loading... |
| 313 } | 313 } |
| 314 } else { | 314 } else { |
| 315 while (text < stop) { | 315 while (text < stop) { |
| 316 // the last 2 parameters are ignored | 316 // the last 2 parameters are ignored |
| 317 const SkGlyph& glyph = glyphCacheProc(cache, &text, 0, 0); | 317 const SkGlyph& glyph = glyphCacheProc(cache, &text, 0, 0); |
| 318 | 318 |
| 319 if (glyph.fWidth) { | 319 if (glyph.fWidth) { |
| 320 SkPoint tmsLoc; | 320 SkPoint tmsLoc; |
| 321 tmsProc(pos, &tmsLoc); | 321 tmsProc(pos, &tmsLoc); |
| 322 | 322 |
| 323 SkIPoint fixedLoc; | 323 SkPoint alignLoc; |
| 324 alignProc(tmsLoc, glyph, &fixedLoc); | 324 alignProc(tmsLoc, glyph, &alignLoc); |
| 325 | 325 |
| 326 SkFixed fx = fixedLoc.fX + SK_FixedHalf; //halfSampleX; | 326 SkFixed fx = SkScalarToFixed(alignLoc.fX) + SK_FixedHalf; //
halfSampleX; |
| 327 SkFixed fy = fixedLoc.fY + SK_FixedHalf; //halfSampleY; | 327 SkFixed fy = SkScalarToFixed(alignLoc.fY) + SK_FixedHalf; //
halfSampleY; |
| 328 this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), | 328 this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), |
| 329 glyph.getSubXFixed(), | 329 glyph.getSubXFixed(), |
| 330 glyph.getSubYFixed()), | 330 glyph.getSubYFixed()), |
| 331 SkFixedFloorToFixed(fx), | 331 SkFixedFloorToFixed(fx), |
| 332 SkFixedFloorToFixed(fy), | 332 SkFixedFloorToFixed(fy), |
| 333 fontScaler); | 333 fontScaler); |
| 334 } | 334 } |
| 335 pos += scalarsPerPosition; | 335 pos += scalarsPerPosition; |
| 336 } | 336 } |
| 337 } | 337 } |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 } | 623 } |
| 624 } | 624 } |
| 625 | 625 |
| 626 inline void GrBitmapTextContext::finish() { | 626 inline void GrBitmapTextContext::finish() { |
| 627 this->flush(); | 627 this->flush(); |
| 628 fTotalVertexCount = 0; | 628 fTotalVertexCount = 0; |
| 629 | 629 |
| 630 GrTextContext::finish(); | 630 GrTextContext::finish(); |
| 631 } | 631 } |
| 632 | 632 |
| OLD | NEW |