Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: src/gpu/GrAtlasTextContext.h

Issue 1128153005: Add unit tests to text context (Closed) Base URL: https://skia.googlesource.com/skia.git@randbatch9
Patch Set: windows warning Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/gpu/GrAtlasTextContext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
11 #include "GrTextContext.h" 11 #include "GrTextContext.h"
12 12
13 #include "GrBatchAtlas.h" 13 #include "GrBatchAtlas.h"
14 #include "GrBatchFontCache.h" 14 #include "GrBatchFontCache.h"
15 #include "GrGeometryProcessor.h" 15 #include "GrGeometryProcessor.h"
16 #include "SkDescriptor.h" 16 #include "SkDescriptor.h"
17 #include "GrMemoryPool.h" 17 #include "GrMemoryPool.h"
18 #include "SkMaskFilter.h" 18 #include "SkMaskFilter.h"
19 #include "SkTextBlob.h" 19 #include "SkTextBlob.h"
20 #include "SkTInternalLList.h" 20 #include "SkTInternalLList.h"
21 21
22 #ifdef GR_TEST_UTILS
23 #include "GrBatchTest.h"
24 #endif
25
26 class BitmapTextBatch;
22 class GrPipelineBuilder; 27 class GrPipelineBuilder;
23 class GrTextBlobCache; 28 class GrTextBlobCache;
24 29
25 /* 30 /*
26 * This class implements GrTextContext using standard bitmap fonts, and can also process textblobs. 31 * This class implements GrTextContext using standard bitmap fonts, and can also process textblobs.
27 * TODO replace GrBitmapTextContext 32 * TODO replace GrBitmapTextContext
28 */ 33 */
29 class GrAtlasTextContext : public GrTextContext { 34 class GrAtlasTextContext : public GrTextContext {
30 public: 35 public:
31 static GrAtlasTextContext* Create(GrContext*, SkGpuDevice*, const SkDevicePr operties&, 36 static GrAtlasTextContext* Create(GrContext*, SkGpuDevice*, const SkDevicePr operties&,
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 inline void appendGlyphPath(BitmapTextBlob* blob, GrGlyph* glyph, 263 inline void appendGlyphPath(BitmapTextBlob* blob, GrGlyph* glyph,
259 GrFontScaler* scaler, int x, int y); 264 GrFontScaler* scaler, int x, int y);
260 inline void appendGlyphCommon(BitmapTextBlob*, Run*, Run::SubRunInfo*, 265 inline void appendGlyphCommon(BitmapTextBlob*, Run*, Run::SubRunInfo*,
261 const SkRect& positions, GrColor color, 266 const SkRect& positions, GrColor color,
262 size_t vertexStride, bool useVertexColor, 267 size_t vertexStride, bool useVertexColor,
263 GrGlyph*); 268 GrGlyph*);
264 269
265 inline void flushRunAsPaths(const SkTextBlob::RunIterator&, const SkPaint&, SkDrawFilter*, 270 inline void flushRunAsPaths(const SkTextBlob::RunIterator&, const SkPaint&, SkDrawFilter*,
266 const SkMatrix& viewMatrix, const SkIRect& clipB ounds, SkScalar x, 271 const SkMatrix& viewMatrix, const SkIRect& clipB ounds, SkScalar x,
267 SkScalar y); 272 SkScalar y);
273 inline BitmapTextBatch* createBatch(BitmapTextBlob*, const PerSubRunInfo&,
274 int glyphCount, int run, int subRun,
275 GrColor, SkScalar transX, SkScalar trans Y,
276 const SkPaint&);
268 inline void flushRun(GrDrawTarget*, GrPipelineBuilder*, BitmapTextBlob*, int run, GrColor, 277 inline void flushRun(GrDrawTarget*, GrPipelineBuilder*, BitmapTextBlob*, int run, GrColor,
269 SkScalar transX, SkScalar transY, const SkPaint&); 278 SkScalar transX, SkScalar transY, const SkPaint&);
270 inline void flushBigGlyphs(BitmapTextBlob* cacheBlob, GrRenderTarget* rt, 279 inline void flushBigGlyphs(BitmapTextBlob* cacheBlob, GrRenderTarget* rt,
271 const GrPaint& grPaint, const GrClip& clip, 280 const GrPaint& grPaint, const GrClip& clip,
272 SkScalar transX, SkScalar transY); 281 SkScalar transX, SkScalar transY);
273 282
274 // We have to flush SkTextBlobs differently from drawText / drawPosText 283 // We have to flush SkTextBlobs differently from drawText / drawPosText
275 void flush(GrDrawTarget*, const SkTextBlob*, BitmapTextBlob*, GrRenderTarget *, const SkPaint&, 284 void flush(GrDrawTarget*, const SkTextBlob*, BitmapTextBlob*, GrRenderTarget *, const SkPaint&,
276 const GrPaint&, SkDrawFilter*, const GrClip&, const SkMatrix& vie wMatrix, 285 const GrPaint&, SkDrawFilter*, const GrClip&, const SkMatrix& vie wMatrix,
277 const SkIRect& clipBounds, SkScalar x, SkScalar y, SkScalar trans X, SkScalar transY); 286 const SkIRect& clipBounds, SkScalar x, SkScalar y, SkScalar trans X, SkScalar transY);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 const SkMatrix& viewMatrix, SkScalar x , SkScalar y); 334 const SkMatrix& viewMatrix, SkScalar x , SkScalar y);
326 void regenerateTextBlob(BitmapTextBlob* bmp, const SkPaint& skPaint, GrColor , 335 void regenerateTextBlob(BitmapTextBlob* bmp, const SkPaint& skPaint, GrColor ,
327 const SkMatrix& viewMatrix, 336 const SkMatrix& viewMatrix,
328 const SkTextBlob* blob, SkScalar x, SkScalar y, 337 const SkTextBlob* blob, SkScalar x, SkScalar y,
329 SkDrawFilter* drawFilter, const SkIRect& clipRect, G rRenderTarget*, 338 SkDrawFilter* drawFilter, const SkIRect& clipRect, G rRenderTarget*,
330 const GrClip&, const GrPaint&); 339 const GrClip&, const GrPaint&);
331 inline static bool HasLCD(const SkTextBlob*); 340 inline static bool HasLCD(const SkTextBlob*);
332 inline void initDistanceFieldPaint(BitmapTextBlob*, SkPaint*, SkScalar* text Ratio, 341 inline void initDistanceFieldPaint(BitmapTextBlob*, SkPaint*, SkScalar* text Ratio,
333 const SkMatrix&); 342 const SkMatrix&);
334 343
344 // Test methods
345 // TODO this is really ugly. It'd be much nicer if positioning could be mov ed to batch
346 inline BitmapTextBlob* createDrawTextBlob(GrRenderTarget*, const GrClip&, co nst GrPaint&,
347 const SkPaint&, const SkMatrix& vi ewMatrix,
348 const char text[], size_t byteLeng th,
349 SkScalar x, SkScalar y,
350 const SkIRect& regionClipBounds);
351 inline BitmapTextBlob* createDrawPosTextBlob(GrRenderTarget*, const GrClip&, const GrPaint&,
352 const SkPaint&, const SkMatrix& viewMatrix,
353 const char text[], size_t byteL ength,
354 const SkScalar pos[], int scala rsPerPosition,
355 const SkPoint& offset,
356 const SkIRect& regionClipBounds );
357
335 // Distance field text needs this table to compute a value for use in the fr agment shader. 358 // Distance field text needs this table to compute a value for use in the fr agment shader.
336 // Because the GrAtlasTextContext can go out of scope before the final flush , this needs to be 359 // Because the GrAtlasTextContext can go out of scope before the final flush , this needs to be
337 // refcnted and malloced 360 // refcnted and malloced
338 struct DistanceAdjustTable : public SkNVRefCnt<DistanceAdjustTable> { 361 struct DistanceAdjustTable : public SkNVRefCnt<DistanceAdjustTable> {
339 DistanceAdjustTable(float gamma) { this->buildDistanceAdjustTable(gamma) ; } 362 DistanceAdjustTable(float gamma) { this->buildDistanceAdjustTable(gamma) ; }
340 ~DistanceAdjustTable() { SkDELETE_ARRAY(fTable); } 363 ~DistanceAdjustTable() { SkDELETE_ARRAY(fTable); }
341 364
342 void buildDistanceAdjustTable(float gamma); 365 void buildDistanceAdjustTable(float gamma);
343 366
344 SkScalar& operator[] (int i) { 367 SkScalar& operator[] (int i) {
345 return fTable[i]; 368 return fTable[i];
346 } 369 }
347 370
348 const SkScalar& operator[] (int i) const { 371 const SkScalar& operator[] (int i) const {
349 return fTable[i]; 372 return fTable[i];
350 } 373 }
351 374
352 SkScalar* fTable; 375 SkScalar* fTable;
353 }; 376 };
354 377
355 GrBatchTextStrike* fCurrStrike; 378 GrBatchTextStrike* fCurrStrike;
356 GrTextBlobCache* fCache; 379 GrTextBlobCache* fCache;
357 bool fEnableDFRendering; 380 bool fEnableDFRendering;
358 SkAutoTUnref<DistanceAdjustTable> fDistanceAdjustTable; 381 SkAutoTUnref<DistanceAdjustTable> fDistanceAdjustTable;
359 382
360 friend class GrTextBlobCache; 383 friend class GrTextBlobCache;
361 friend class BitmapTextBatch; 384 friend class BitmapTextBatch;
362 385
386 #ifdef GR_TEST_UTILS
387 BATCH_TEST_FRIEND(TextBlob);
388 #endif
389
363 typedef GrTextContext INHERITED; 390 typedef GrTextContext INHERITED;
364 }; 391 };
365 392
366 #endif 393 #endif
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrAtlasTextContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698