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 #include "PictureRenderer.h" | 8 #include "PictureRenderer.h" |
9 #include "picture_utils.h" | 9 #include "picture_utils.h" |
10 #include "SamplePipeControllers.h" | 10 #include "SamplePipeControllers.h" |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 return height; | 267 return height; |
268 } | 268 } |
269 | 269 |
270 /** Converts fPicture to a picture that uses a BBoxHierarchy. | 270 /** Converts fPicture to a picture that uses a BBoxHierarchy. |
271 * PictureRenderer subclasses that are used to test picture playback | 271 * PictureRenderer subclasses that are used to test picture playback |
272 * should call this method during init. | 272 * should call this method during init. |
273 */ | 273 */ |
274 void PictureRenderer::buildBBoxHierarchy() { | 274 void PictureRenderer::buildBBoxHierarchy() { |
275 SkASSERT(NULL != fPicture); | 275 SkASSERT(NULL != fPicture); |
276 if (kNone_BBoxHierarchyType != fBBoxHierarchyType && NULL != fPicture) { | 276 if (kNone_BBoxHierarchyType != fBBoxHierarchyType && NULL != fPicture) { |
277 SkAutoTUnref<SkPictureFactory> factory(this->getFactory()); | 277 SkAutoTDelete<SkBBHFactory> factory(this->getFactory()); |
278 SkPictureRecorder recorder(factory); | 278 SkPictureRecorder recorder; |
279 SkCanvas* canvas = recorder.beginRecording(fPicture->width(), fPicture->
height(), | 279 SkCanvas* canvas = recorder.beginRecording(fPicture->width(), fPicture->
height(), |
| 280 factory.get(), |
280 this->recordFlags()); | 281 this->recordFlags()); |
281 fPicture->draw(canvas); | 282 fPicture->draw(canvas); |
282 fPicture.reset(recorder.endRecording()); | 283 fPicture.reset(recorder.endRecording()); |
283 } | 284 } |
284 } | 285 } |
285 | 286 |
286 void PictureRenderer::resetState(bool callFinish) { | 287 void PictureRenderer::resetState(bool callFinish) { |
287 #if SK_SUPPORT_GPU | 288 #if SK_SUPPORT_GPU |
288 SkGLContextHelper* glContext = this->getGLContext(); | 289 SkGLContextHelper* glContext = this->getGLContext(); |
289 if (NULL == glContext) { | 290 if (NULL == glContext) { |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 // defer the canvas setup until the render step | 429 // defer the canvas setup until the render step |
429 return NULL; | 430 return NULL; |
430 } | 431 } |
431 | 432 |
432 // the size_t* parameter is deprecated, so we ignore it | 433 // the size_t* parameter is deprecated, so we ignore it |
433 static SkData* encode_bitmap_to_data(size_t*, const SkBitmap& bm) { | 434 static SkData* encode_bitmap_to_data(size_t*, const SkBitmap& bm) { |
434 return SkImageEncoder::EncodeData(bm, SkImageEncoder::kPNG_Type, 100); | 435 return SkImageEncoder::EncodeData(bm, SkImageEncoder::kPNG_Type, 100); |
435 } | 436 } |
436 | 437 |
437 bool RecordPictureRenderer::render(SkBitmap** out) { | 438 bool RecordPictureRenderer::render(SkBitmap** out) { |
438 SkAutoTUnref<SkPictureFactory> factory(this->getFactory()); | 439 SkAutoTDelete<SkBBHFactory> factory(this->getFactory()); |
439 SkPictureRecorder recorder(factory); | 440 SkPictureRecorder recorder; |
440 SkCanvas* canvas = recorder.beginRecording(this->getViewWidth(), this->getVi
ewHeight(), | 441 SkCanvas* canvas = recorder.beginRecording(this->getViewWidth(), this->getVi
ewHeight(), |
| 442 factory.get(), |
441 this->recordFlags()); | 443 this->recordFlags()); |
442 this->scaleToScaleFactor(canvas); | 444 this->scaleToScaleFactor(canvas); |
443 fPicture->draw(canvas); | 445 fPicture->draw(canvas); |
444 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); | 446 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); |
445 if (!fOutputDir.isEmpty()) { | 447 if (!fOutputDir.isEmpty()) { |
446 // Record the new picture as a new SKP with PNG encoded bitmaps. | 448 // Record the new picture as a new SKP with PNG encoded bitmaps. |
447 SkString skpPath = SkOSPath::SkPathJoin(fOutputDir.c_str(), fInputFilena
me.c_str()); | 449 SkString skpPath = SkOSPath::SkPathJoin(fOutputDir.c_str(), fInputFilena
me.c_str()); |
448 SkFILEWStream stream(skpPath.c_str()); | 450 SkFILEWStream stream(skpPath.c_str()); |
449 picture->serialize(&stream, &encode_bitmap_to_data); | 451 picture->serialize(&stream, &encode_bitmap_to_data); |
450 return true; | 452 return true; |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
947 | 949 |
948 SkString MultiCorePictureRenderer::getConfigNameInternal() { | 950 SkString MultiCorePictureRenderer::getConfigNameInternal() { |
949 SkString name = this->INHERITED::getConfigNameInternal(); | 951 SkString name = this->INHERITED::getConfigNameInternal(); |
950 name.appendf("_multi_%i_threads", fNumThreads); | 952 name.appendf("_multi_%i_threads", fNumThreads); |
951 return name; | 953 return name; |
952 } | 954 } |
953 | 955 |
954 ////////////////////////////////////////////////////////////////////////////////
/////////////// | 956 ////////////////////////////////////////////////////////////////////////////////
/////////////// |
955 | 957 |
956 void PlaybackCreationRenderer::setup() { | 958 void PlaybackCreationRenderer::setup() { |
957 SkAutoTUnref<SkPictureFactory> factory(this->getFactory()); | 959 SkAutoTDelete<SkBBHFactory> factory(this->getFactory()); |
958 fRecorder.reset(SkNEW_ARGS(SkPictureRecorder, (factory))); | 960 fRecorder.reset(SkNEW(SkPictureRecorder)); |
959 SkCanvas* canvas = fRecorder->beginRecording(this->getViewWidth(), this->get
ViewHeight(), | 961 SkCanvas* canvas = fRecorder->beginRecording(this->getViewWidth(), this->get
ViewHeight(), |
| 962 factory.get(), |
960 this->recordFlags()); | 963 this->recordFlags()); |
961 this->scaleToScaleFactor(canvas); | 964 this->scaleToScaleFactor(canvas); |
962 canvas->drawPicture(*fPicture); | 965 canvas->drawPicture(*fPicture); |
963 } | 966 } |
964 | 967 |
965 bool PlaybackCreationRenderer::render(SkBitmap** out) { | 968 bool PlaybackCreationRenderer::render(SkBitmap** out) { |
966 fPicture.reset(fRecorder->endRecording()); | 969 fPicture.reset(fRecorder->endRecording()); |
967 // Since this class does not actually render, return false. | 970 // Since this class does not actually render, return false. |
968 return false; | 971 return false; |
969 } | 972 } |
970 | 973 |
971 SkString PlaybackCreationRenderer::getConfigNameInternal() { | 974 SkString PlaybackCreationRenderer::getConfigNameInternal() { |
972 return SkString("playback_creation"); | 975 return SkString("playback_creation"); |
973 } | 976 } |
974 | 977 |
975 ////////////////////////////////////////////////////////////////////////////////
/////////////// | 978 ////////////////////////////////////////////////////////////////////////////////
/////////////// |
976 // SkPicture variants for each BBoxHierarchy type | 979 // SkPicture variants for each BBoxHierarchy type |
977 | 980 |
978 SkPictureFactory* PictureRenderer::getFactory() { | 981 SkBBHFactory* PictureRenderer::getFactory() { |
979 switch (fBBoxHierarchyType) { | 982 switch (fBBoxHierarchyType) { |
980 case kNone_BBoxHierarchyType: | 983 case kNone_BBoxHierarchyType: |
981 return NULL; | 984 return NULL; |
982 case kQuadTree_BBoxHierarchyType: | 985 case kQuadTree_BBoxHierarchyType: |
983 return SkNEW(SkQuadTreePictureFactory); | 986 return SkNEW(SkQuadTreeFactory); |
984 case kRTree_BBoxHierarchyType: | 987 case kRTree_BBoxHierarchyType: |
985 return SkNEW(SkRTreePictureFactory); | 988 return SkNEW(SkRTreeFactory); |
986 case kTileGrid_BBoxHierarchyType: | 989 case kTileGrid_BBoxHierarchyType: |
987 return new SkTileGridPictureFactory(fGridInfo); | 990 return SkNEW_ARGS(SkTileGridFactory, (fGridInfo)); |
988 } | 991 } |
989 SkASSERT(0); // invalid bbhType | 992 SkASSERT(0); // invalid bbhType |
990 return NULL; | 993 return NULL; |
991 } | 994 } |
992 | 995 |
993 /////////////////////////////////////////////////////////////////////////////// | 996 /////////////////////////////////////////////////////////////////////////////// |
994 | 997 |
995 class GatherRenderer : public PictureRenderer { | 998 class GatherRenderer : public PictureRenderer { |
996 public: | 999 public: |
997 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE { | 1000 virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1030 virtual SkString getConfigNameInternal() SK_OVERRIDE { | 1033 virtual SkString getConfigNameInternal() SK_OVERRIDE { |
1031 return SkString("picture_clone"); | 1034 return SkString("picture_clone"); |
1032 } | 1035 } |
1033 }; | 1036 }; |
1034 | 1037 |
1035 PictureRenderer* CreatePictureCloneRenderer() { | 1038 PictureRenderer* CreatePictureCloneRenderer() { |
1036 return SkNEW(PictureCloneRenderer); | 1039 return SkNEW(PictureCloneRenderer); |
1037 } | 1040 } |
1038 | 1041 |
1039 } // namespace sk_tools | 1042 } // namespace sk_tools |
OLD | NEW |