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 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 | 262 |
263 fx += glyph.fAdvanceX; | 263 fx += glyph.fAdvanceX; |
264 fy += glyph.fAdvanceY; | 264 fy += glyph.fAdvanceY; |
265 } | 265 } |
266 | 266 |
267 this->finish(); | 267 this->finish(); |
268 } | 268 } |
269 | 269 |
270 void GrBitmapTextContext::drawPosText(const GrPaint& paint, const SkPaint& skPai
nt, | 270 void GrBitmapTextContext::drawPosText(const GrPaint& paint, const SkPaint& skPai
nt, |
271 const char text[], size_t byteLength, | 271 const char text[], size_t byteLength, |
272 const SkScalar pos[], int scalarsPerPositi
on, | 272 const SkScalar pos[], SkScalar constY, |
273 const SkPoint& offset) { | 273 int scalarsPerPosition) { |
274 SkASSERT(byteLength == 0 || text != NULL); | 274 SkASSERT(byteLength == 0 || text != NULL); |
275 SkASSERT(1 == scalarsPerPosition || 2 == scalarsPerPosition); | 275 SkASSERT(1 == scalarsPerPosition || 2 == scalarsPerPosition); |
276 | 276 |
277 // nothing to draw | 277 // nothing to draw |
278 if (text == NULL || byteLength == 0/* || fRC->isEmpty()*/) { | 278 if (text == NULL || byteLength == 0/* || fRC->isEmpty()*/) { |
279 return; | 279 return; |
280 } | 280 } |
281 | 281 |
282 this->init(paint, skPaint); | 282 this->init(paint, skPaint); |
283 | 283 |
284 SkDrawCacheProc glyphCacheProc = fSkPaint.getDrawCacheProc(); | 284 SkDrawCacheProc glyphCacheProc = fSkPaint.getDrawCacheProc(); |
285 | 285 |
286 SkAutoGlyphCache autoCache(fSkPaint, &fDeviceProperties, &fContext->getMa
trix()); | 286 SkAutoGlyphCache autoCache(fSkPaint, &fDeviceProperties, &fContext->getMa
trix()); |
287 SkGlyphCache* cache = autoCache.getCache(); | 287 SkGlyphCache* cache = autoCache.getCache(); |
288 GrFontScaler* fontScaler = GetGrFontScaler(cache); | 288 GrFontScaler* fontScaler = GetGrFontScaler(cache); |
289 | 289 |
290 // store original matrix before we reset, so we can use it to transform posi
tions | 290 // store original matrix before we reset, so we can use it to transform posi
tions |
291 SkMatrix ctm = fContext->getMatrix(); | 291 SkMatrix ctm = fContext->getMatrix(); |
292 GrContext::AutoMatrix autoMatrix; | 292 GrContext::AutoMatrix autoMatrix; |
293 autoMatrix.setIdentity(fContext, &fPaint); | 293 autoMatrix.setIdentity(fContext, &fPaint); |
294 | 294 |
295 const char* stop = text + byteLength; | 295 const char* stop = text + byteLength; |
296 SkTextAlignProc alignProc(fSkPaint.getTextAlign()); | 296 SkTextAlignProc alignProc(fSkPaint.getTextAlign()); |
297 SkTextMapStateProc tmsProc(ctm, offset, scalarsPerPosition); | 297 SkTextMapStateProc tmsProc(ctm, constY, scalarsPerPosition); |
298 SkFixed halfSampleX = 0, halfSampleY = 0; | 298 SkFixed halfSampleX = 0, halfSampleY = 0; |
299 | 299 |
300 if (cache->isSubpixel()) { | 300 if (cache->isSubpixel()) { |
301 // maybe we should skip the rounding if linearText is set | 301 // maybe we should skip the rounding if linearText is set |
302 SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(ctm); | 302 SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(ctm); |
303 | 303 |
304 SkFixed fxMask = ~0; | 304 SkFixed fxMask = ~0; |
305 SkFixed fyMask = ~0; | 305 SkFixed fyMask = ~0; |
306 if (kX_SkAxisAlignment == baseline) { | 306 if (kX_SkAxisAlignment == baseline) { |
307 fyMask = 0; | 307 fyMask = 0; |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 } | 598 } |
599 // color comes after position. | 599 // color comes after position. |
600 GrColor* colors = reinterpret_cast<GrColor*>(positions + 1); | 600 GrColor* colors = reinterpret_cast<GrColor*>(positions + 1); |
601 for (int i = 0; i < 4; ++i) { | 601 for (int i = 0; i < 4; ++i) { |
602 *colors = fPaint.getColor(); | 602 *colors = fPaint.getColor(); |
603 colors = reinterpret_cast<GrColor*>(reinterpret_cast<intptr_t>(colors
) + vertSize); | 603 colors = reinterpret_cast<GrColor*>(reinterpret_cast<intptr_t>(colors
) + vertSize); |
604 } | 604 } |
605 } | 605 } |
606 fCurrVertex += 4; | 606 fCurrVertex += 4; |
607 } | 607 } |
OLD | NEW |