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

Side by Side Diff: samplecode/SampleApp.cpp

Issue 214953003: split SkPictureRecorder out of SkPicture (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: update to ToT (again) Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
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 #include "SampleApp.h" 7 #include "SampleApp.h"
8 8
9 #include "SkData.h" 9 #include "SkData.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 } 827 }
828 828
829 gSampleWindow = this; 829 gSampleWindow = this;
830 830
831 #ifdef PIPE_FILE 831 #ifdef PIPE_FILE
832 //Clear existing file or create file if it doesn't exist 832 //Clear existing file or create file if it doesn't exist
833 FILE* f = fopen(FILE_PATH, "wb"); 833 FILE* f = fopen(FILE_PATH, "wb");
834 fclose(f); 834 fclose(f);
835 #endif 835 #endif
836 836
837 fPicture = NULL;
838
839 fDeviceType = kRaster_DeviceType; 837 fDeviceType = kRaster_DeviceType;
840 838
841 #if DEFAULT_TO_GPU 839 #if DEFAULT_TO_GPU
842 fDeviceType = kGPU_DeviceType; 840 fDeviceType = kGPU_DeviceType;
843 #endif 841 #endif
844 #if SK_ANGLE && DEFAULT_TO_ANGLE 842 #if SK_ANGLE && DEFAULT_TO_ANGLE
845 fDeviceType = kANGLE_DeviceType; 843 fDeviceType = kANGLE_DeviceType;
846 #endif 844 #endif
847 845
848 fUseClip = false; 846 fUseClip = false;
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
983 } 981 }
984 982
985 // can't call this synchronously, since it may require a subclass to 983 // can't call this synchronously, since it may require a subclass to
986 // to implement, or the caller may need us to have returned from the 984 // to implement, or the caller may need us to have returned from the
987 // constructor first. Hence we post an event to ourselves. 985 // constructor first. Hence we post an event to ourselves.
988 // this->updateTitle(); 986 // this->updateTitle();
989 post_event_to_sink(new SkEvent(gUpdateWindowTitleEvtName), this); 987 post_event_to_sink(new SkEvent(gUpdateWindowTitleEvtName), this);
990 } 988 }
991 989
992 SampleWindow::~SampleWindow() { 990 SampleWindow::~SampleWindow() {
993 delete fPicture;
994 delete fPdfCanvas; 991 delete fPdfCanvas;
995 fTypeface->unref(); 992 fTypeface->unref();
996 993
997 SkSafeUnref(fDevManager); 994 SkSafeUnref(fDevManager);
998 } 995 }
999 996
1000 static void make_filepath(SkString* path, const char* dir, const SkString& name) { 997 static void make_filepath(SkString* path, const char* dir, const SkString& name) {
1001 size_t len = strlen(dir); 998 size_t len = strlen(dir);
1002 path->set(dir); 999 path->set(dir);
1003 if (len > 0 && dir[len - 1] != '/') { 1000 if (len > 0 && dir[len - 1] != '/') {
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 SkCanvas* SampleWindow::beforeChildren(SkCanvas* canvas) { 1369 SkCanvas* SampleWindow::beforeChildren(SkCanvas* canvas) {
1373 if (fSaveToPdf) { 1370 if (fSaveToPdf) {
1374 const SkBitmap& bmp = canvas->getDevice()->accessBitmap(false); 1371 const SkBitmap& bmp = canvas->getDevice()->accessBitmap(false);
1375 SkISize size = SkISize::Make(bmp.width(), bmp.height()); 1372 SkISize size = SkISize::Make(bmp.width(), bmp.height());
1376 SkPDFDevice* pdfDevice = new SkPDFDevice(size, size, 1373 SkPDFDevice* pdfDevice = new SkPDFDevice(size, size,
1377 canvas->getTotalMatrix()); 1374 canvas->getTotalMatrix());
1378 fPdfCanvas = new SkCanvas(pdfDevice); 1375 fPdfCanvas = new SkCanvas(pdfDevice);
1379 pdfDevice->unref(); 1376 pdfDevice->unref();
1380 canvas = fPdfCanvas; 1377 canvas = fPdfCanvas;
1381 } else if (kPicture_DeviceType == fDeviceType) { 1378 } else if (kPicture_DeviceType == fDeviceType) {
1382 fPicture = new SkPicture; 1379 canvas = fRecorder.beginRecording(9999, 9999);
1383 canvas = fPicture->beginRecording(9999, 9999);
1384 } else { 1380 } else {
1385 #if SK_SUPPORT_GPU 1381 #if SK_SUPPORT_GPU
1386 if (kNullGPU_DeviceType != fDeviceType) 1382 if (kNullGPU_DeviceType != fDeviceType)
1387 #endif 1383 #endif
1388 { 1384 {
1389 canvas = this->INHERITED::beforeChildren(canvas); 1385 canvas = this->INHERITED::beforeChildren(canvas);
1390 } 1386 }
1391 } 1387 }
1392 1388
1393 if (fUseClip) { 1389 if (fUseClip) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1452 if (device->accessBitmap(false).copyTo(&bmp, kN32_SkColorType)) { 1448 if (device->accessBitmap(false).copyTo(&bmp, kN32_SkColorType)) {
1453 static int gSampleGrabCounter; 1449 static int gSampleGrabCounter;
1454 SkString name; 1450 SkString name;
1455 name.printf("sample_grab_%d.png", gSampleGrabCounter++); 1451 name.printf("sample_grab_%d.png", gSampleGrabCounter++);
1456 SkImageEncoder::EncodeFile(name.c_str(), bmp, 1452 SkImageEncoder::EncodeFile(name.c_str(), bmp,
1457 SkImageEncoder::kPNG_Type, 100); 1453 SkImageEncoder::kPNG_Type, 100);
1458 } 1454 }
1459 } 1455 }
1460 1456
1461 if (kPicture_DeviceType == fDeviceType) { 1457 if (kPicture_DeviceType == fDeviceType) {
1458 SkAutoTUnref<SkPicture> picture(fRecorder.endRecording());
1459
1462 if (true) { 1460 if (true) {
1463 SkPicture* pict = new SkPicture(*fPicture); 1461 SkPicture* pict = new SkPicture(*picture);
1464 fPicture->unref();
1465 this->installDrawFilter(orig); 1462 this->installDrawFilter(orig);
1466 orig->drawPicture(*pict); 1463 orig->drawPicture(*pict);
1467 pict->unref(); 1464 pict->unref();
1468 } else if (true) { 1465 } else if (true) {
1469 SkDynamicMemoryWStream ostream; 1466 SkDynamicMemoryWStream ostream;
1470 fPicture->serialize(&ostream); 1467 picture->serialize(&ostream);
1471 fPicture->unref();
1472 1468
1473 SkAutoDataUnref data(ostream.copyToData()); 1469 SkAutoDataUnref data(ostream.copyToData());
1474 SkMemoryStream istream(data->data(), data->size()); 1470 SkMemoryStream istream(data->data(), data->size());
1475 SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream)); 1471 SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream));
1476 if (pict.get() != NULL) { 1472 if (pict.get() != NULL) {
1477 orig->drawPicture(*pict.get()); 1473 orig->drawPicture(*pict.get());
1478 } 1474 }
1479 } else { 1475 } else {
1480 fPicture->draw(orig); 1476 picture->draw(orig);
1481 fPicture->unref();
1482 } 1477 }
1483 fPicture = NULL;
1484 } 1478 }
1485 1479
1486 // Do this after presentGL and other finishing, rather than in afterChild 1480 // Do this after presentGL and other finishing, rather than in afterChild
1487 if (fMeasureFPS && fMeasureFPS_StartTime) { 1481 if (fMeasureFPS && fMeasureFPS_StartTime) {
1488 fMeasureFPS_Time += SkTime::GetMSecs() - fMeasureFPS_StartTime; 1482 fMeasureFPS_Time += SkTime::GetMSecs() - fMeasureFPS_StartTime;
1489 } 1483 }
1490 1484
1491 // if ((fScrollTestX | fScrollTestY) != 0) 1485 // if ((fScrollTestX | fScrollTestY) != 0)
1492 if (false) { 1486 if (false) {
1493 const SkBitmap& bm = orig->getDevice()->accessBitmap(true); 1487 const SkBitmap& bm = orig->getDevice()->accessBitmap(true);
(...skipping 1068 matching lines...) Expand 10 before | Expand all | Expand 10 after
2562 SkGraphics::Init(); 2556 SkGraphics::Init();
2563 SkEvent::Init(); 2557 SkEvent::Init();
2564 } 2558 }
2565 2559
2566 // FIXME: this should be in a header 2560 // FIXME: this should be in a header
2567 void application_term(); 2561 void application_term();
2568 void application_term() { 2562 void application_term() {
2569 SkEvent::Term(); 2563 SkEvent::Term();
2570 SkGraphics::Term(); 2564 SkGraphics::Term();
2571 } 2565 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698