OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 "SampleCode.h" | 8 #include "SampleCode.h" |
9 #include "SkDumpCanvas.h" | 9 #include "SkDumpCanvas.h" |
10 #include "SkView.h" | 10 #include "SkView.h" |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 BBoxType fBBox; | 122 BBoxType fBBox; |
123 SkSize fTileSize; | 123 SkSize fTileSize; |
124 | 124 |
125 SkPicture* LoadPicture(const char path[], BBoxType bbox) { | 125 SkPicture* LoadPicture(const char path[], BBoxType bbox) { |
126 SkAutoTUnref<SkPicture> pic; | 126 SkAutoTUnref<SkPicture> pic; |
127 | 127 |
128 SkBitmap bm; | 128 SkBitmap bm; |
129 if (SkImageDecoder::DecodeFile(path, &bm)) { | 129 if (SkImageDecoder::DecodeFile(path, &bm)) { |
130 bm.setImmutable(); | 130 bm.setImmutable(); |
131 SkPictureRecorder recorder; | 131 SkPictureRecorder recorder; |
132 SkCanvas* can = recorder.beginRecording(bm.width(), bm.height()); | 132 SkCanvas* can = recorder.beginRecording(bm.width(), bm.height(), NUL
L, 0); |
133 can->drawBitmap(bm, 0, 0, NULL); | 133 can->drawBitmap(bm, 0, 0, NULL); |
134 pic.reset(recorder.endRecording()); | 134 pic.reset(recorder.endRecording()); |
135 } else { | 135 } else { |
136 SkFILEStream stream(path); | 136 SkFILEStream stream(path); |
137 if (stream.isValid()) { | 137 if (stream.isValid()) { |
138 pic.reset(SkPicture::CreateFromStream(&stream)); | 138 pic.reset(SkPicture::CreateFromStream(&stream)); |
139 } else { | 139 } else { |
140 SkDebugf("coun't load picture at \"path\"\n", path); | 140 SkDebugf("coun't load picture at \"path\"\n", path); |
141 } | 141 } |
142 | 142 |
143 if (false) { | 143 if (false) { |
144 SkSurface* surf = SkSurface::NewRasterPMColor(pic->width(), pic-
>height()); | 144 SkSurface* surf = SkSurface::NewRasterPMColor(pic->width(), pic-
>height()); |
145 surf->getCanvas()->drawPicture(*pic); | 145 surf->getCanvas()->drawPicture(*pic); |
146 surf->unref(); | 146 surf->unref(); |
147 } | 147 } |
148 if (false) { // re-record | 148 if (false) { // re-record |
149 SkPictureRecorder recorder; | 149 SkPictureRecorder recorder; |
150 pic->draw(recorder.beginRecording(pic->width(), pic->height())); | 150 pic->draw(recorder.beginRecording(pic->width(), pic->height(), N
ULL, 0)); |
151 SkAutoTUnref<SkPicture> p2(recorder.endRecording()); | 151 SkAutoTUnref<SkPicture> p2(recorder.endRecording()); |
152 | 152 |
153 SkString path2(path); | 153 SkString path2(path); |
154 path2.append(".new.skp"); | 154 path2.append(".new.skp"); |
155 SkFILEWStream writer(path2.c_str()); | 155 SkFILEWStream writer(path2.c_str()); |
156 p2->serialize(&writer); | 156 p2->serialize(&writer); |
157 } | 157 } |
158 } | 158 } |
159 | 159 |
160 if (NULL == pic) { | 160 if (NULL == pic) { |
161 return NULL; | 161 return NULL; |
162 } | 162 } |
163 | 163 |
164 SkAutoTUnref<SkPictureFactory> factory; | 164 SkAutoTDelete<SkBBHFactory> factory; |
165 switch (bbox) { | 165 switch (bbox) { |
166 case kNo_BBoxType: | 166 case kNo_BBoxType: |
167 // no bbox playback necessary | 167 // no bbox playback necessary |
168 return pic.detach(); | 168 return pic.detach(); |
169 case kRTree_BBoxType: | 169 case kRTree_BBoxType: |
170 factory.reset(SkNEW(SkRTreePictureFactory)); | 170 factory.reset(SkNEW(SkRTreeFactory)); |
171 break; | 171 break; |
172 case kQuadTree_BBoxType: | 172 case kQuadTree_BBoxType: |
173 factory.reset(SkNEW(SkQuadTreePictureFactory)); | 173 factory.reset(SkNEW(SkQuadTreeFactory)); |
174 break; | 174 break; |
175 case kTileGrid_BBoxType: { | 175 case kTileGrid_BBoxType: { |
176 SkASSERT(!fTileSize.isEmpty()); | 176 SkASSERT(!fTileSize.isEmpty()); |
177 SkTileGridPicture::TileGridInfo gridInfo; | 177 SkTileGridFactory::TileGridInfo gridInfo; |
178 gridInfo.fMargin = SkISize::Make(0, 0); | 178 gridInfo.fMargin = SkISize::Make(0, 0); |
179 gridInfo.fOffset = SkIPoint::Make(0, 0); | 179 gridInfo.fOffset = SkIPoint::Make(0, 0); |
180 gridInfo.fTileInterval = fTileSize.toRound(); | 180 gridInfo.fTileInterval = fTileSize.toRound(); |
181 factory.reset(SkNEW_ARGS(SkTileGridPictureFactory, (gridInfo))); | 181 factory.reset(SkNEW_ARGS(SkTileGridFactory, (gridInfo))); |
182 break; | 182 break; |
183 } | 183 } |
184 default: | 184 default: |
185 SkASSERT(false); | 185 SkASSERT(false); |
186 } | 186 } |
187 | 187 |
188 SkPictureRecorder recorder(factory); | 188 SkPictureRecorder recorder; |
189 pic->draw(recorder.beginRecording(pic->width(), pic->height())); | 189 pic->draw(recorder.beginRecording(pic->width(), pic->height(), factory.g
et(), 0)); |
190 return recorder.endRecording(); | 190 return recorder.endRecording(); |
191 } | 191 } |
192 | 192 |
193 typedef SampleView INHERITED; | 193 typedef SampleView INHERITED; |
194 }; | 194 }; |
195 | 195 |
196 SampleView* CreateSamplePictFileView(const char filename[]); | 196 SampleView* CreateSamplePictFileView(const char filename[]); |
197 SampleView* CreateSamplePictFileView(const char filename[]) { | 197 SampleView* CreateSamplePictFileView(const char filename[]) { |
198 return new PictFileView(filename); | 198 return new PictFileView(filename); |
199 } | 199 } |
200 | 200 |
201 ////////////////////////////////////////////////////////////////////////////// | 201 ////////////////////////////////////////////////////////////////////////////// |
202 | 202 |
203 #if 0 | 203 #if 0 |
204 static SkView* MyFactory() { return new PictFileView; } | 204 static SkView* MyFactory() { return new PictFileView; } |
205 static SkViewRegister reg(MyFactory); | 205 static SkViewRegister reg(MyFactory); |
206 #endif | 206 #endif |
OLD | NEW |