OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 PictureRenderer_DEFINED | 8 #ifndef PictureRenderer_DEFINED |
9 #define PictureRenderer_DEFINED | 9 #define PictureRenderer_DEFINED |
10 | 10 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 #endif | 49 #endif |
50 kBitmap_DeviceType, | 50 kBitmap_DeviceType, |
51 #if SK_SUPPORT_GPU | 51 #if SK_SUPPORT_GPU |
52 kGPU_DeviceType, | 52 kGPU_DeviceType, |
53 kNVPR_DeviceType, | 53 kNVPR_DeviceType, |
54 #endif | 54 #endif |
55 }; | 55 }; |
56 | 56 |
57 enum BBoxHierarchyType { | 57 enum BBoxHierarchyType { |
58 kNone_BBoxHierarchyType = 0, | 58 kNone_BBoxHierarchyType = 0, |
59 kQuadTree_BBoxHierarchyType, | |
60 kRTree_BBoxHierarchyType, | 59 kRTree_BBoxHierarchyType, |
61 kTileGrid_BBoxHierarchyType, | 60 kTileGrid_BBoxHierarchyType, |
62 | 61 |
63 kLast_BBoxHierarchyType = kTileGrid_BBoxHierarchyType, | 62 kLast_BBoxHierarchyType = kTileGrid_BBoxHierarchyType, |
64 }; | 63 }; |
65 | 64 |
66 // this uses SkPaint::Flags as a base and adds additional flags | 65 // this uses SkPaint::Flags as a base and adds additional flags |
67 enum DrawFilterFlags { | 66 enum DrawFilterFlags { |
68 kNone_DrawFilterFlag = 0, | 67 kNone_DrawFilterFlag = 0, |
69 kHinting_DrawFilterFlag = 0x10000, // toggles between no hinting and nor
mal hinting | 68 kHinting_DrawFilterFlag = 0x10000, // toggles between no hinting and nor
mal hinting |
(...skipping 13 matching lines...) Expand all Loading... |
83 * | 82 * |
84 * @param pict The SkPicture to render. | 83 * @param pict The SkPicture to render. |
85 * @param writePath The output directory within which this renderer should w
rite all images, | 84 * @param writePath The output directory within which this renderer should w
rite all images, |
86 * or NULL if this renderer should not write all images. | 85 * or NULL if this renderer should not write all images. |
87 * @param mismatchPath The output directory within which this renderer shoul
d write any images | 86 * @param mismatchPath The output directory within which this renderer shoul
d write any images |
88 * which do not match expectations, or NULL if this renderer should not
write mismatches. | 87 * which do not match expectations, or NULL if this renderer should not
write mismatches. |
89 * @param inputFilename The name of the input file we are rendering. | 88 * @param inputFilename The name of the input file we are rendering. |
90 * @param useChecksumBasedFilenames Whether to use checksum-based filenames
when writing | 89 * @param useChecksumBasedFilenames Whether to use checksum-based filenames
when writing |
91 * bitmap images to disk. | 90 * bitmap images to disk. |
92 */ | 91 */ |
93 virtual void init(const SkPicture* pict, | 92 virtual void init(const SkPicture* pict, |
94 const SkString* writePath, | 93 const SkString* writePath, |
95 const SkString* mismatchPath, | 94 const SkString* mismatchPath, |
96 const SkString* inputFilename, | 95 const SkString* inputFilename, |
97 bool useChecksumBasedFilenames); | 96 bool useChecksumBasedFilenames); |
98 | 97 |
99 /** | 98 /** |
100 * TODO(epoger): Temporary hack, while we work on http://skbug.com/2584 ('be
nch_pictures is | 99 * TODO(epoger): Temporary hack, while we work on http://skbug.com/2584 ('be
nch_pictures is |
101 * timing reading pixels and writing json files'), such that: | 100 * timing reading pixels and writing json files'), such that: |
102 * - render_pictures can call this method and continue to work | 101 * - render_pictures can call this method and continue to work |
103 * - any other callers (bench_pictures) will skip calls to write() by defaul
t | 102 * - any other callers (bench_pictures) will skip calls to write() by defaul
t |
104 */ | 103 */ |
105 void enableWrites() { fEnableWrites = true; } | 104 void enableWrites() { fEnableWrites = true; } |
106 | 105 |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 SkString getConfigName() { | 253 SkString getConfigName() { |
255 SkString config = this->getConfigNameInternal(); | 254 SkString config = this->getConfigNameInternal(); |
256 if (!fViewport.isEmpty()) { | 255 if (!fViewport.isEmpty()) { |
257 config.appendf("_viewport_%ix%i", fViewport.width(), fViewport.heigh
t()); | 256 config.appendf("_viewport_%ix%i", fViewport.width(), fViewport.heigh
t()); |
258 } | 257 } |
259 if (fScaleFactor != SK_Scalar1) { | 258 if (fScaleFactor != SK_Scalar1) { |
260 config.appendf("_scalar_%f", SkScalarToFloat(fScaleFactor)); | 259 config.appendf("_scalar_%f", SkScalarToFloat(fScaleFactor)); |
261 } | 260 } |
262 if (kRTree_BBoxHierarchyType == fBBoxHierarchyType) { | 261 if (kRTree_BBoxHierarchyType == fBBoxHierarchyType) { |
263 config.append("_rtree"); | 262 config.append("_rtree"); |
264 } else if (kQuadTree_BBoxHierarchyType == fBBoxHierarchyType) { | |
265 config.append("_quadtree"); | |
266 } else if (kTileGrid_BBoxHierarchyType == fBBoxHierarchyType) { | 263 } else if (kTileGrid_BBoxHierarchyType == fBBoxHierarchyType) { |
267 config.append("_grid"); | 264 config.append("_grid"); |
268 config.append("_"); | 265 config.append("_"); |
269 config.appendS32(fGridInfo.fTileInterval.width()); | 266 config.appendS32(fGridInfo.fTileInterval.width()); |
270 config.append("x"); | 267 config.append("x"); |
271 config.appendS32(fGridInfo.fTileInterval.height()); | 268 config.appendS32(fGridInfo.fTileInterval.height()); |
272 } | 269 } |
273 #if SK_SUPPORT_GPU | 270 #if SK_SUPPORT_GPU |
274 switch (fDeviceType) { | 271 switch (fDeviceType) { |
275 case kGPU_DeviceType: | 272 case kGPU_DeviceType: |
(...skipping 28 matching lines...) Expand all Loading... |
304 Json::Value getJSONConfig() { | 301 Json::Value getJSONConfig() { |
305 Json::Value result; | 302 Json::Value result; |
306 | 303 |
307 result["mode"] = this->getConfigNameInternal().c_str(); | 304 result["mode"] = this->getConfigNameInternal().c_str(); |
308 result["scale"] = 1.0f; | 305 result["scale"] = 1.0f; |
309 if (SK_Scalar1 != fScaleFactor) { | 306 if (SK_Scalar1 != fScaleFactor) { |
310 result["scale"] = SkScalarToFloat(fScaleFactor); | 307 result["scale"] = SkScalarToFloat(fScaleFactor); |
311 } | 308 } |
312 if (kRTree_BBoxHierarchyType == fBBoxHierarchyType) { | 309 if (kRTree_BBoxHierarchyType == fBBoxHierarchyType) { |
313 result["bbh"] = "rtree"; | 310 result["bbh"] = "rtree"; |
314 } else if (kQuadTree_BBoxHierarchyType == fBBoxHierarchyType) { | |
315 result["bbh"] = "quadtree"; | |
316 } else if (kTileGrid_BBoxHierarchyType == fBBoxHierarchyType) { | 311 } else if (kTileGrid_BBoxHierarchyType == fBBoxHierarchyType) { |
317 SkString tmp("grid_"); | 312 SkString tmp("grid_"); |
318 tmp.appendS32(fGridInfo.fTileInterval.width()); | 313 tmp.appendS32(fGridInfo.fTileInterval.width()); |
319 tmp.append("x"); | 314 tmp.append("x"); |
320 tmp.appendS32(fGridInfo.fTileInterval.height()); | 315 tmp.appendS32(fGridInfo.fTileInterval.height()); |
321 result["bbh"] = tmp.c_str(); | 316 result["bbh"] = tmp.c_str(); |
322 } | 317 } |
323 #if SK_SUPPORT_GPU | 318 #if SK_SUPPORT_GPU |
324 SkString tmp; | 319 SkString tmp; |
325 switch (fDeviceType) { | 320 switch (fDeviceType) { |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 } | 404 } |
410 #endif | 405 #endif |
411 | 406 |
412 SkCanvas* getCanvas() { | 407 SkCanvas* getCanvas() { |
413 return fCanvas; | 408 return fCanvas; |
414 } | 409 } |
415 | 410 |
416 const SkPicture* getPicture() { | 411 const SkPicture* getPicture() { |
417 return fPicture; | 412 return fPicture; |
418 } | 413 } |
419 | 414 |
420 #if SK_SUPPORT_GPU | 415 #if SK_SUPPORT_GPU |
421 explicit PictureRenderer(const GrContext::Options &opts) | 416 explicit PictureRenderer(const GrContext::Options &opts) |
422 #else | 417 #else |
423 PictureRenderer() | 418 PictureRenderer() |
424 #endif | 419 #endif |
425 : fJsonSummaryPtr(NULL) | 420 : fJsonSummaryPtr(NULL) |
426 , fDeviceType(kBitmap_DeviceType) | 421 , fDeviceType(kBitmap_DeviceType) |
427 , fEnableWrites(false) | 422 , fEnableWrites(false) |
428 , fBBoxHierarchyType(kNone_BBoxHierarchyType) | 423 , fBBoxHierarchyType(kNone_BBoxHierarchyType) |
429 , fScaleFactor(SK_Scalar1) | 424 , fScaleFactor(SK_Scalar1) |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 typedef PictureRenderer INHERITED; | 538 typedef PictureRenderer INHERITED; |
544 }; | 539 }; |
545 | 540 |
546 class SimplePictureRenderer : public PictureRenderer { | 541 class SimplePictureRenderer : public PictureRenderer { |
547 public: | 542 public: |
548 #if SK_SUPPORT_GPU | 543 #if SK_SUPPORT_GPU |
549 SimplePictureRenderer(const GrContext::Options &opts) : INHERITED(opts) { } | 544 SimplePictureRenderer(const GrContext::Options &opts) : INHERITED(opts) { } |
550 #endif | 545 #endif |
551 | 546 |
552 virtual void init(const SkPicture* pict, | 547 virtual void init(const SkPicture* pict, |
553 const SkString* writePath, | 548 const SkString* writePath, |
554 const SkString* mismatchPath, | 549 const SkString* mismatchPath, |
555 const SkString* inputFilename, | 550 const SkString* inputFilename, |
556 bool useChecksumBasedFilenames) SK_OVERRIDE; | 551 bool useChecksumBasedFilenames) SK_OVERRIDE; |
557 | 552 |
558 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE; | 553 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE; |
559 | 554 |
560 private: | 555 private: |
561 virtual SkString getConfigNameInternal() SK_OVERRIDE; | 556 virtual SkString getConfigNameInternal() SK_OVERRIDE; |
562 | 557 |
563 typedef PictureRenderer INHERITED; | 558 typedef PictureRenderer INHERITED; |
564 }; | 559 }; |
565 | 560 |
566 class TiledPictureRenderer : public PictureRenderer { | 561 class TiledPictureRenderer : public PictureRenderer { |
567 public: | 562 public: |
568 #if SK_SUPPORT_GPU | 563 #if SK_SUPPORT_GPU |
569 TiledPictureRenderer(const GrContext::Options &opts); | 564 TiledPictureRenderer(const GrContext::Options &opts); |
570 #else | 565 #else |
571 TiledPictureRenderer(); | 566 TiledPictureRenderer(); |
572 #endif | 567 #endif |
573 | 568 |
574 virtual void init(const SkPicture* pict, | 569 virtual void init(const SkPicture* pict, |
575 const SkString* writePath, | 570 const SkString* writePath, |
576 const SkString* mismatchPath, | 571 const SkString* mismatchPath, |
577 const SkString* inputFilename, | 572 const SkString* inputFilename, |
578 bool useChecksumBasedFilenames) SK_OVERRIDE; | 573 bool useChecksumBasedFilenames) SK_OVERRIDE; |
579 | 574 |
580 /** | 575 /** |
581 * Renders to tiles, rather than a single canvas. | 576 * Renders to tiles, rather than a single canvas. |
582 * If fWritePath was provided, a separate file is | 577 * If fWritePath was provided, a separate file is |
583 * created for each tile, named "path0.png", "path1.png", etc. | 578 * created for each tile, named "path0.png", "path1.png", etc. |
584 */ | 579 */ |
585 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE; | 580 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE; |
586 | 581 |
587 virtual void end() SK_OVERRIDE; | 582 virtual void end() SK_OVERRIDE; |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 | 713 |
719 #if SK_SUPPORT_GPU | 714 #if SK_SUPPORT_GPU |
720 extern PictureRenderer* CreateGatherPixelRefsRenderer(const GrContext::Options&
opts); | 715 extern PictureRenderer* CreateGatherPixelRefsRenderer(const GrContext::Options&
opts); |
721 #else | 716 #else |
722 extern PictureRenderer* CreateGatherPixelRefsRenderer(); | 717 extern PictureRenderer* CreateGatherPixelRefsRenderer(); |
723 #endif | 718 #endif |
724 | 719 |
725 } | 720 } |
726 | 721 |
727 #endif // PictureRenderer_DEFINED | 722 #endif // PictureRenderer_DEFINED |
OLD | NEW |