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 "SampleApp.h" | 8 #include "SampleApp.h" |
9 | 9 |
10 #include "OverView.h" | 10 #include "OverView.h" |
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
735 DEFINE_string(slide, "", "Start on this sample."); | 735 DEFINE_string(slide, "", "Start on this sample."); |
736 DEFINE_int32(msaa, 0, "Request multisampling with this count."); | 736 DEFINE_int32(msaa, 0, "Request multisampling with this count."); |
737 DEFINE_string(pictureDir, "", "Read pictures from here."); | 737 DEFINE_string(pictureDir, "", "Read pictures from here."); |
738 DEFINE_string(picture, "", "Path to single picture."); | 738 DEFINE_string(picture, "", "Path to single picture."); |
739 DEFINE_bool(sort, false, "Sort samples by title."); | 739 DEFINE_bool(sort, false, "Sort samples by title."); |
740 DEFINE_bool(list, false, "List samples?"); | 740 DEFINE_bool(list, false, "List samples?"); |
741 #ifdef SAMPLE_PDF_FILE_VIEWER | 741 #ifdef SAMPLE_PDF_FILE_VIEWER |
742 DEFINE_string(pdfPath, "", "Path to direcotry of pdf files."); | 742 DEFINE_string(pdfPath, "", "Path to direcotry of pdf files."); |
743 #endif | 743 #endif |
744 | 744 |
745 #include "SkTaskGroup.h" | |
746 | |
745 SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* dev Manager) | 747 SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* dev Manager) |
746 : INHERITED(hwnd) | 748 : INHERITED(hwnd) |
747 , fDevManager(NULL) { | 749 , fDevManager(NULL) { |
748 | 750 |
749 SkCommandLineFlags::Parse(argc, argv); | 751 SkCommandLineFlags::Parse(argc, argv); |
750 | 752 |
751 fCurrIndex = -1; | 753 fCurrIndex = -1; |
752 | 754 |
753 if (!FLAGS_pictureDir.isEmpty()) { | 755 if (!FLAGS_pictureDir.isEmpty()) { |
754 SkOSFile::Iter iter(FLAGS_pictureDir[0], "skp"); | 756 SkOSFile::Iter iter(FLAGS_pictureDir[0], "skp"); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
806 SkString title; | 808 SkString title; |
807 if (readTitleFromPrefs(&title)) { | 809 if (readTitleFromPrefs(&title)) { |
808 fCurrIndex = findByTitle(title.c_str()); | 810 fCurrIndex = findByTitle(title.c_str()); |
809 } | 811 } |
810 } | 812 } |
811 | 813 |
812 if (fCurrIndex < 0) { | 814 if (fCurrIndex < 0) { |
813 fCurrIndex = 0; | 815 fCurrIndex = 0; |
814 } | 816 } |
815 | 817 |
818 static SkTaskGroup::Enabler enabled(-1); | |
816 gSampleWindow = this; | 819 gSampleWindow = this; |
817 | 820 |
818 #ifdef PIPE_FILE | 821 #ifdef PIPE_FILE |
819 //Clear existing file or create file if it doesn't exist | 822 //Clear existing file or create file if it doesn't exist |
820 FILE* f = fopen(FILE_PATH, "wb"); | 823 FILE* f = fopen(FILE_PATH, "wb"); |
821 fclose(f); | 824 fclose(f); |
822 #endif | 825 #endif |
823 | 826 |
824 fDeviceType = kRaster_DeviceType; | 827 fDeviceType = kRaster_DeviceType; |
825 | 828 |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1299 } | 1302 } |
1300 } | 1303 } |
1301 | 1304 |
1302 if (fUseClip) { | 1305 if (fUseClip) { |
1303 canvas->drawColor(0xFFFF88FF); | 1306 canvas->drawColor(0xFFFF88FF); |
1304 canvas->clipPath(fClipPath, SkRegion::kIntersect_Op, true); | 1307 canvas->clipPath(fClipPath, SkRegion::kIntersect_Op, true); |
1305 } | 1308 } |
1306 | 1309 |
1307 return canvas; | 1310 return canvas; |
1308 } | 1311 } |
1309 | 1312 #include "SkMultiPictureDraw.h" |
1310 void SampleWindow::afterChildren(SkCanvas* orig) { | 1313 void SampleWindow::afterChildren(SkCanvas* orig) { |
1311 if (fSaveToPdf) { | 1314 if (fSaveToPdf) { |
1312 fSaveToPdf = false; | 1315 fSaveToPdf = false; |
1313 fPDFDocument->endPage(); | 1316 fPDFDocument->endPage(); |
1314 fPDFDocument.reset(NULL); | 1317 fPDFDocument.reset(NULL); |
1315 // We took over the draw calls in order to create the PDF, so we need | 1318 // We took over the draw calls in order to create the PDF, so we need |
1316 // to redraw. | 1319 // to redraw. |
1317 this->inval(NULL); | 1320 this->inval(NULL); |
1318 return; | 1321 return; |
1319 } | 1322 } |
1320 | 1323 |
1321 if (fRequestGrabImage) { | 1324 if (fRequestGrabImage) { |
1322 fRequestGrabImage = false; | 1325 fRequestGrabImage = false; |
1323 | 1326 |
1324 SkBitmap bmp = capture_bitmap(orig); | 1327 SkBitmap bmp = capture_bitmap(orig); |
1325 if (!bmp.isNull()) { | 1328 if (!bmp.isNull()) { |
1326 static int gSampleGrabCounter; | 1329 static int gSampleGrabCounter; |
1327 SkString name; | 1330 SkString name; |
1328 name.printf("sample_grab_%d.png", gSampleGrabCounter++); | 1331 name.printf("sample_grab_%d.png", gSampleGrabCounter++); |
1329 SkImageEncoder::EncodeFile(name.c_str(), bmp, | 1332 SkImageEncoder::EncodeFile(name.c_str(), bmp, |
1330 SkImageEncoder::kPNG_Type, 100); | 1333 SkImageEncoder::kPNG_Type, 100); |
1331 } | 1334 } |
1332 } | 1335 } |
1333 | 1336 |
1334 if (kPicture_DeviceType == fDeviceType) { | 1337 if (kPicture_DeviceType == fDeviceType) { |
1335 SkAutoTUnref<const SkPicture> picture(fRecorder.endRecording()); | 1338 SkAutoTUnref<const SkPicture> picture(fRecorder.endRecording()); |
1336 | 1339 |
1337 if (true) { | 1340 if (true) { |
1338 this->installDrawFilter(orig); | 1341 this->installDrawFilter(orig); |
1339 orig->drawPicture(picture); | 1342 |
1343 if (true) { | |
1344 SkImageInfo info; | |
1345 size_t rowBytes; | |
robertphillips
2014/10/27 12:34:05
:( No GPU :(
| |
1346 void* addr = orig->accessTopLayerPixels(&info, &rowBytes); | |
1347 if (addr) { | |
1348 SkSurface* surfs[4]; | |
1349 SkMultiPictureDraw md; | |
1350 | |
1351 SkImageInfo n = SkImageInfo::Make(info.width()/2, info.heigh t()/2, | |
1352 info.colorType(), info.alp haType()); | |
1353 int index = 0; | |
1354 for (int y = 0; y < 2; ++y) { | |
1355 for (int x = 0; x < 2; ++x) { | |
1356 char* p = (char*)addr; | |
1357 p += y * n.height() * rowBytes; | |
1358 p += x * n.width() * sizeof(SkPMColor); | |
1359 surfs[index] = SkSurface::NewRasterDirect(n, p, rowB ytes); | |
1360 SkCanvas* c = surfs[index]->getCanvas(); | |
1361 c->translate(-x * n.width(), -y * n.height()); | |
1362 md.add(c, picture, NULL, NULL); | |
1363 index++; | |
1364 } | |
1365 } | |
1366 md.draw(); | |
1367 for (int i = 0; i < 4; ++i) { | |
1368 surfs[i]->unref(); | |
1369 } | |
1370 } | |
1371 } else { | |
1372 orig->drawPicture(picture); | |
1373 } | |
1340 } else if (true) { | 1374 } else if (true) { |
1341 SkDynamicMemoryWStream ostream; | 1375 SkDynamicMemoryWStream ostream; |
1342 picture->serialize(&ostream); | 1376 picture->serialize(&ostream); |
1343 | 1377 |
1344 SkAutoDataUnref data(ostream.copyToData()); | 1378 SkAutoDataUnref data(ostream.copyToData()); |
1345 SkMemoryStream istream(data->data(), data->size()); | 1379 SkMemoryStream istream(data->data(), data->size()); |
1346 SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream)); | 1380 SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream)); |
1347 if (pict.get() != NULL) { | 1381 if (pict.get() != NULL) { |
1348 orig->drawPicture(pict.get()); | 1382 orig->drawPicture(pict.get()); |
1349 } | 1383 } |
(...skipping 1044 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2394 setenv("ANDROID_ROOT", "/android/device/data", 0); | 2428 setenv("ANDROID_ROOT", "/android/device/data", 0); |
2395 #endif | 2429 #endif |
2396 SkGraphics::Init(); | 2430 SkGraphics::Init(); |
2397 SkEvent::Init(); | 2431 SkEvent::Init(); |
2398 } | 2432 } |
2399 | 2433 |
2400 void application_term() { | 2434 void application_term() { |
2401 SkEvent::Term(); | 2435 SkEvent::Term(); |
2402 SkGraphics::Term(); | 2436 SkGraphics::Term(); |
2403 } | 2437 } |
OLD | NEW |