OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 #ifndef GrAtlasTextContext_DEFINED | 8 #ifndef GrAtlasTextContext_DEFINED |
9 #define GrAtlasTextContext_DEFINED | 9 #define GrAtlasTextContext_DEFINED |
10 | 10 |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
223 GrMemoryPool* fPool; | 223 GrMemoryPool* fPool; |
224 SkMaskFilter::BlurRec fBlurRec; | 224 SkMaskFilter::BlurRec fBlurRec; |
225 StrokeInfo fStrokeInfo; | 225 StrokeInfo fStrokeInfo; |
226 SkTArray<BigGlyph> fBigGlyphs; | 226 SkTArray<BigGlyph> fBigGlyphs; |
227 Key fKey; | 227 Key fKey; |
228 SkMatrix fViewMatrix; | 228 SkMatrix fViewMatrix; |
229 #ifdef SK_DEBUG | 229 #ifdef SK_DEBUG |
230 mutable SkScalar fTotalXError; | 230 mutable SkScalar fTotalXError; |
231 mutable SkScalar fTotalYError; | 231 mutable SkScalar fTotalYError; |
232 #endif | 232 #endif |
233 SkColor fPaintColor; | |
233 SkScalar fX; | 234 SkScalar fX; |
234 SkScalar fY; | 235 SkScalar fY; |
235 SkColor fPaintColor; | 236 |
237 // We can regenerate distance field text, but only if the new viewmatrix would not result in | |
jvanverth1
2015/04/21 15:29:47
s/regenerate/reuse/ ?
| |
238 // a mip change. Because there can be multiple runs in a blob, we track the overall | |
239 // maximum minimum scale, and minimum maximum scale, we can support befo re we need to regen | |
240 SkScalar fMaxMinScale; | |
241 SkScalar fMinMaxScale; | |
236 int fRunCount; | 242 int fRunCount; |
237 bool fHasDistanceField; | 243 bool fHasDistanceField; |
238 bool fHasBitmap; | 244 bool fHasBitmap; |
239 | 245 |
240 BitmapTextBlob() : fHasDistanceField(false), fHasBitmap(false) {} | 246 BitmapTextBlob() |
247 : fMaxMinScale(SK_ScalarMax) | |
248 , fMinMaxScale(SK_ScalarMax) | |
249 , fHasDistanceField(false) | |
250 , fHasBitmap(false) {} | |
241 | 251 |
242 static const Key& GetKey(const BitmapTextBlob& blob) { | 252 static const Key& GetKey(const BitmapTextBlob& blob) { |
243 return blob.fKey; | 253 return blob.fKey; |
244 } | 254 } |
245 | 255 |
246 static uint32_t Hash(const Key& key) { | 256 static uint32_t Hash(const Key& key) { |
247 return SkChecksum::Murmur3(&key, sizeof(Key)); | 257 return SkChecksum::Murmur3(&key, sizeof(Key)); |
248 } | 258 } |
249 | 259 |
250 void operator delete(void* p) { | 260 void operator delete(void* p) { |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
341 static inline bool MustRegenerateBlob(SkScalar* outTransX, SkScalar* outTran sY, | 351 static inline bool MustRegenerateBlob(SkScalar* outTransX, SkScalar* outTran sY, |
342 const BitmapTextBlob&, const SkPaint&, | 352 const BitmapTextBlob&, const SkPaint&, |
343 const SkMaskFilter::BlurRec&, | 353 const SkMaskFilter::BlurRec&, |
344 const SkMatrix& viewMatrix, SkScalar x , SkScalar y); | 354 const SkMatrix& viewMatrix, SkScalar x , SkScalar y); |
345 void regenerateTextBlob(BitmapTextBlob* bmp, const SkPaint& skPaint, GrColor , | 355 void regenerateTextBlob(BitmapTextBlob* bmp, const SkPaint& skPaint, GrColor , |
346 const SkMatrix& viewMatrix, | 356 const SkMatrix& viewMatrix, |
347 const SkTextBlob* blob, SkScalar x, SkScalar y, | 357 const SkTextBlob* blob, SkScalar x, SkScalar y, |
348 SkDrawFilter* drawFilter, const SkIRect& clipRect, G rRenderTarget*, | 358 SkDrawFilter* drawFilter, const SkIRect& clipRect, G rRenderTarget*, |
349 const GrClip&, const GrPaint&); | 359 const GrClip&, const GrPaint&); |
350 inline static bool HasLCD(const SkTextBlob*); | 360 inline static bool HasLCD(const SkTextBlob*); |
351 inline void initDistanceFieldPaint(SkPaint*, SkScalar* textRatio, const SkMa trix&); | 361 inline void initDistanceFieldPaint(BitmapTextBlob*, SkPaint*, SkScalar* text Ratio, |
362 const SkMatrix&); | |
352 | 363 |
353 // Distance field text needs this table to compute a value for use in the fr agment shader. | 364 // Distance field text needs this table to compute a value for use in the fr agment shader. |
354 // Because the GrAtlasTextContext can go out of scope before the final flush , this needs to be | 365 // Because the GrAtlasTextContext can go out of scope before the final flush , this needs to be |
355 // refcnted and malloced | 366 // refcnted and malloced |
356 struct DistanceAdjustTable : public SkNVRefCnt<DistanceAdjustTable> { | 367 struct DistanceAdjustTable : public SkNVRefCnt<DistanceAdjustTable> { |
357 DistanceAdjustTable(float gamma) { this->buildDistanceAdjustTable(gamma) ; } | 368 DistanceAdjustTable(float gamma) { this->buildDistanceAdjustTable(gamma) ; } |
358 ~DistanceAdjustTable() { SkDELETE_ARRAY(fTable); } | 369 ~DistanceAdjustTable() { SkDELETE_ARRAY(fTable); } |
359 | 370 |
360 void buildDistanceAdjustTable(float gamma); | 371 void buildDistanceAdjustTable(float gamma); |
361 | 372 |
(...skipping 13 matching lines...) Expand all Loading... | |
375 bool fEnableDFRendering; | 386 bool fEnableDFRendering; |
376 SkAutoTUnref<DistanceAdjustTable> fDistanceAdjustTable; | 387 SkAutoTUnref<DistanceAdjustTable> fDistanceAdjustTable; |
377 | 388 |
378 friend class GrTextBlobCache; | 389 friend class GrTextBlobCache; |
379 friend class BitmapTextBatch; | 390 friend class BitmapTextBatch; |
380 | 391 |
381 typedef GrTextContext INHERITED; | 392 typedef GrTextContext INHERITED; |
382 }; | 393 }; |
383 | 394 |
384 #endif | 395 #endif |
OLD | NEW |