| 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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 static void post_event_to_sink(SkEvent* evt, SkEventSink* sink) { | 104 static void post_event_to_sink(SkEvent* evt, SkEventSink* sink) { |
| 105 evt->setTargetID(sink->getSinkID())->post(); | 105 evt->setTargetID(sink->getSinkID())->post(); |
| 106 } | 106 } |
| 107 | 107 |
| 108 static SkAnimTimer gAnimTimer; | 108 static SkAnimTimer gAnimTimer; |
| 109 | 109 |
| 110 /////////////////////////////////////////////////////////////////////////////// | 110 /////////////////////////////////////////////////////////////////////////////// |
| 111 | 111 |
| 112 static const char* skip_until(const char* str, const char* skip) { | 112 static const char* skip_until(const char* str, const char* skip) { |
| 113 if (!str) { | 113 if (!str) { |
| 114 return NULL; | 114 return nullptr; |
| 115 } | 115 } |
| 116 return strstr(str, skip); | 116 return strstr(str, skip); |
| 117 } | 117 } |
| 118 | 118 |
| 119 static const char* skip_past(const char* str, const char* skip) { | 119 static const char* skip_past(const char* str, const char* skip) { |
| 120 const char* found = skip_until(str, skip); | 120 const char* found = skip_until(str, skip); |
| 121 if (!found) { | 121 if (!found) { |
| 122 return NULL; | 122 return nullptr; |
| 123 } | 123 } |
| 124 return found + strlen(skip); | 124 return found + strlen(skip); |
| 125 } | 125 } |
| 126 | 126 |
| 127 static const char* gPrefFileName = "sampleapp_prefs.txt"; | 127 static const char* gPrefFileName = "sampleapp_prefs.txt"; |
| 128 | 128 |
| 129 static bool readTitleFromPrefs(SkString* title) { | 129 static bool readTitleFromPrefs(SkString* title) { |
| 130 SkFILEStream stream(gPrefFileName); | 130 SkFILEStream stream(gPrefFileName); |
| 131 if (!stream.isValid()) { | 131 if (!stream.isValid()) { |
| 132 return false; | 132 return false; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 155 stream.write(data.c_str(), data.size()); | 155 stream.write(data.c_str(), data.size()); |
| 156 } | 156 } |
| 157 | 157 |
| 158 /////////////////////////////////////////////////////////////////////////////// | 158 /////////////////////////////////////////////////////////////////////////////// |
| 159 | 159 |
| 160 class SampleWindow::DefaultDeviceManager : public SampleWindow::DeviceManager { | 160 class SampleWindow::DefaultDeviceManager : public SampleWindow::DeviceManager { |
| 161 public: | 161 public: |
| 162 | 162 |
| 163 DefaultDeviceManager() { | 163 DefaultDeviceManager() { |
| 164 #if SK_SUPPORT_GPU | 164 #if SK_SUPPORT_GPU |
| 165 fCurContext = NULL; | 165 fCurContext = nullptr; |
| 166 fCurIntf = NULL; | 166 fCurIntf = nullptr; |
| 167 fCurRenderTarget = NULL; | 167 fCurRenderTarget = nullptr; |
| 168 fMSAASampleCount = 0; | 168 fMSAASampleCount = 0; |
| 169 #endif | 169 #endif |
| 170 fBackend = kNone_BackEndType; | 170 fBackend = kNone_BackEndType; |
| 171 } | 171 } |
| 172 | 172 |
| 173 virtual ~DefaultDeviceManager() { | 173 virtual ~DefaultDeviceManager() { |
| 174 #if SK_SUPPORT_GPU | 174 #if SK_SUPPORT_GPU |
| 175 SkSafeUnref(fCurContext); | 175 SkSafeUnref(fCurContext); |
| 176 SkSafeUnref(fCurIntf); | 176 SkSafeUnref(fCurIntf); |
| 177 SkSafeUnref(fCurRenderTarget); | 177 SkSafeUnref(fCurRenderTarget); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 202 break; | 202 break; |
| 203 } | 203 } |
| 204 AttachmentInfo attachmentInfo; | 204 AttachmentInfo attachmentInfo; |
| 205 bool result = win->attach(fBackend, msaaSampleCount, &attachmentInfo); | 205 bool result = win->attach(fBackend, msaaSampleCount, &attachmentInfo); |
| 206 if (!result) { | 206 if (!result) { |
| 207 SkDebugf("Failed to initialize GL"); | 207 SkDebugf("Failed to initialize GL"); |
| 208 return; | 208 return; |
| 209 } | 209 } |
| 210 fMSAASampleCount = msaaSampleCount; | 210 fMSAASampleCount = msaaSampleCount; |
| 211 | 211 |
| 212 SkASSERT(NULL == fCurIntf); | 212 SkASSERT(nullptr == fCurIntf); |
| 213 SkAutoTUnref<const GrGLInterface> glInterface; | 213 SkAutoTUnref<const GrGLInterface> glInterface; |
| 214 switch (win->getDeviceType()) { | 214 switch (win->getDeviceType()) { |
| 215 case kRaster_DeviceType: // fallthrough | 215 case kRaster_DeviceType: // fallthrough |
| 216 case kPicture_DeviceType: // fallthrough | 216 case kPicture_DeviceType: // fallthrough |
| 217 case kGPU_DeviceType: | 217 case kGPU_DeviceType: |
| 218 // all these guys use the native interface | 218 // all these guys use the native interface |
| 219 glInterface.reset(GrGLCreateNativeInterface()); | 219 glInterface.reset(GrGLCreateNativeInterface()); |
| 220 break; | 220 break; |
| 221 #if SK_ANGLE | 221 #if SK_ANGLE |
| 222 case kANGLE_DeviceType: | 222 case kANGLE_DeviceType: |
| 223 glInterface.reset(GrGLCreateANGLEInterface()); | 223 glInterface.reset(GrGLCreateANGLEInterface()); |
| 224 break; | 224 break; |
| 225 #endif // SK_ANGLE | 225 #endif // SK_ANGLE |
| 226 default: | 226 default: |
| 227 SkASSERT(false); | 227 SkASSERT(false); |
| 228 break; | 228 break; |
| 229 } | 229 } |
| 230 | 230 |
| 231 // Currently SampleApp does not use NVPR. TODO: Provide an NVPR device t
ype that is skipped | 231 // Currently SampleApp does not use NVPR. TODO: Provide an NVPR device t
ype that is skipped |
| 232 // when the driver doesn't support NVPR. | 232 // when the driver doesn't support NVPR. |
| 233 fCurIntf = GrGLInterfaceRemoveNVPR(glInterface.get()); | 233 fCurIntf = GrGLInterfaceRemoveNVPR(glInterface.get()); |
| 234 | 234 |
| 235 SkASSERT(NULL == fCurContext); | 235 SkASSERT(nullptr == fCurContext); |
| 236 fCurContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fC
urIntf); | 236 fCurContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fC
urIntf); |
| 237 | 237 |
| 238 if (NULL == fCurContext || NULL == fCurIntf) { | 238 if (nullptr == fCurContext || nullptr == fCurIntf) { |
| 239 // We need some context and interface to see results | 239 // We need some context and interface to see results |
| 240 SkSafeUnref(fCurContext); | 240 SkSafeUnref(fCurContext); |
| 241 SkSafeUnref(fCurIntf); | 241 SkSafeUnref(fCurIntf); |
| 242 fCurContext = NULL; | 242 fCurContext = nullptr; |
| 243 fCurIntf = NULL; | 243 fCurIntf = nullptr; |
| 244 SkDebugf("Failed to setup 3D"); | 244 SkDebugf("Failed to setup 3D"); |
| 245 | 245 |
| 246 win->detach(); | 246 win->detach(); |
| 247 } | 247 } |
| 248 #endif // SK_SUPPORT_GPU | 248 #endif // SK_SUPPORT_GPU |
| 249 // call windowSizeChanged to create the render target | 249 // call windowSizeChanged to create the render target |
| 250 this->windowSizeChanged(win); | 250 this->windowSizeChanged(win); |
| 251 } | 251 } |
| 252 | 252 |
| 253 void tearDownBackend(SampleWindow *win) override { | 253 void tearDownBackend(SampleWindow *win) override { |
| 254 #if SK_SUPPORT_GPU | 254 #if SK_SUPPORT_GPU |
| 255 if (fCurContext) { | 255 if (fCurContext) { |
| 256 // in case we have outstanding refs to this guy (lua?) | 256 // in case we have outstanding refs to this guy (lua?) |
| 257 fCurContext->abandonContext(); | 257 fCurContext->abandonContext(); |
| 258 fCurContext->unref(); | 258 fCurContext->unref(); |
| 259 fCurContext = NULL; | 259 fCurContext = nullptr; |
| 260 } | 260 } |
| 261 | 261 |
| 262 SkSafeUnref(fCurIntf); | 262 SkSafeUnref(fCurIntf); |
| 263 fCurIntf = NULL; | 263 fCurIntf = nullptr; |
| 264 | 264 |
| 265 SkSafeUnref(fCurRenderTarget); | 265 SkSafeUnref(fCurRenderTarget); |
| 266 fCurRenderTarget = NULL; | 266 fCurRenderTarget = nullptr; |
| 267 #endif | 267 #endif |
| 268 win->detach(); | 268 win->detach(); |
| 269 fBackend = kNone_BackEndType; | 269 fBackend = kNone_BackEndType; |
| 270 } | 270 } |
| 271 | 271 |
| 272 SkSurface* createSurface(SampleWindow::DeviceType dType, SampleWindow* win)
override { | 272 SkSurface* createSurface(SampleWindow::DeviceType dType, SampleWindow* win)
override { |
| 273 #if SK_SUPPORT_GPU | 273 #if SK_SUPPORT_GPU |
| 274 if (IsGpuDeviceType(dType) && fCurContext) { | 274 if (IsGpuDeviceType(dType) && fCurContext) { |
| 275 SkSurfaceProps props(win->getSurfaceProps()); | 275 SkSurfaceProps props(win->getSurfaceProps()); |
| 276 return SkSurface::NewRenderTargetDirect(fCurRenderTarget, &props); | 276 return SkSurface::NewRenderTargetDirect(fCurRenderTarget, &props); |
| 277 } | 277 } |
| 278 #endif | 278 #endif |
| 279 return NULL; | 279 return nullptr; |
| 280 } | 280 } |
| 281 | 281 |
| 282 void publishCanvas(SampleWindow::DeviceType dType, | 282 void publishCanvas(SampleWindow::DeviceType dType, |
| 283 SkCanvas* canvas, SampleWindow* win) override { | 283 SkCanvas* canvas, SampleWindow* win) override { |
| 284 #if SK_SUPPORT_GPU | 284 #if SK_SUPPORT_GPU |
| 285 if (fCurContext) { | 285 if (fCurContext) { |
| 286 // in case we have queued drawing calls | 286 // in case we have queued drawing calls |
| 287 fCurContext->flush(); | 287 fCurContext->flush(); |
| 288 | 288 |
| 289 if (!IsGpuDeviceType(dType)) { | 289 if (!IsGpuDeviceType(dType)) { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 311 SkSafeUnref(fCurRenderTarget); | 311 SkSafeUnref(fCurRenderTarget); |
| 312 fCurRenderTarget = win->renderTarget(attachmentInfo, fCurIntf, fCurC
ontext); | 312 fCurRenderTarget = win->renderTarget(attachmentInfo, fCurIntf, fCurC
ontext); |
| 313 } | 313 } |
| 314 #endif | 314 #endif |
| 315 } | 315 } |
| 316 | 316 |
| 317 GrContext* getGrContext() override { | 317 GrContext* getGrContext() override { |
| 318 #if SK_SUPPORT_GPU | 318 #if SK_SUPPORT_GPU |
| 319 return fCurContext; | 319 return fCurContext; |
| 320 #else | 320 #else |
| 321 return NULL; | 321 return nullptr; |
| 322 #endif | 322 #endif |
| 323 } | 323 } |
| 324 | 324 |
| 325 GrRenderTarget* getGrRenderTarget() override { | 325 GrRenderTarget* getGrRenderTarget() override { |
| 326 #if SK_SUPPORT_GPU | 326 #if SK_SUPPORT_GPU |
| 327 return fCurRenderTarget; | 327 return fCurRenderTarget; |
| 328 #else | 328 #else |
| 329 return NULL; | 329 return nullptr; |
| 330 #endif | 330 #endif |
| 331 } | 331 } |
| 332 | 332 |
| 333 private: | 333 private: |
| 334 | 334 |
| 335 #if SK_SUPPORT_GPU | 335 #if SK_SUPPORT_GPU |
| 336 GrContext* fCurContext; | 336 GrContext* fCurContext; |
| 337 const GrGLInterface* fCurIntf; | 337 const GrGLInterface* fCurIntf; |
| 338 GrRenderTarget* fCurRenderTarget; | 338 GrRenderTarget* fCurRenderTarget; |
| 339 int fMSAASampleCount; | 339 int fMSAASampleCount; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 364 return (*fCreateFunc)(); | 364 return (*fCreateFunc)(); |
| 365 } | 365 } |
| 366 | 366 |
| 367 #include "GMSampleView.h" | 367 #include "GMSampleView.h" |
| 368 | 368 |
| 369 SkGMSampleViewFactory::SkGMSampleViewFactory(GMFactoryFunc func) | 369 SkGMSampleViewFactory::SkGMSampleViewFactory(GMFactoryFunc func) |
| 370 : fFunc(func) { | 370 : fFunc(func) { |
| 371 } | 371 } |
| 372 | 372 |
| 373 SkView* SkGMSampleViewFactory::operator() () const { | 373 SkView* SkGMSampleViewFactory::operator() () const { |
| 374 skiagm::GM* gm = fFunc(NULL); | 374 skiagm::GM* gm = fFunc(nullptr); |
| 375 gm->setMode(skiagm::GM::kSample_Mode); | 375 gm->setMode(skiagm::GM::kSample_Mode); |
| 376 return new GMSampleView(gm); | 376 return new GMSampleView(gm); |
| 377 } | 377 } |
| 378 | 378 |
| 379 SkViewRegister* SkViewRegister::gHead; | 379 SkViewRegister* SkViewRegister::gHead; |
| 380 SkViewRegister::SkViewRegister(SkViewFactory* fact) : fFact(fact) { | 380 SkViewRegister::SkViewRegister(SkViewFactory* fact) : fFact(fact) { |
| 381 fFact->ref(); | 381 fFact->ref(); |
| 382 fChain = gHead; | 382 fChain = gHead; |
| 383 gHead = this; | 383 gHead = this; |
| 384 } | 384 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 }; | 435 }; |
| 436 | 436 |
| 437 #include "SkDrawFilter.h" | 437 #include "SkDrawFilter.h" |
| 438 | 438 |
| 439 struct HintingState { | 439 struct HintingState { |
| 440 SkPaint::Hinting hinting; | 440 SkPaint::Hinting hinting; |
| 441 const char* name; | 441 const char* name; |
| 442 const char* label; | 442 const char* label; |
| 443 }; | 443 }; |
| 444 static HintingState gHintingStates[] = { | 444 static HintingState gHintingStates[] = { |
| 445 {SkPaint::kNo_Hinting, "Mixed", NULL }, | 445 {SkPaint::kNo_Hinting, "Mixed", nullptr }, |
| 446 {SkPaint::kNo_Hinting, "None", "H0 " }, | 446 {SkPaint::kNo_Hinting, "None", "H0 " }, |
| 447 {SkPaint::kSlight_Hinting, "Slight", "Hs " }, | 447 {SkPaint::kSlight_Hinting, "Slight", "Hs " }, |
| 448 {SkPaint::kNormal_Hinting, "Normal", "Hn " }, | 448 {SkPaint::kNormal_Hinting, "Normal", "Hn " }, |
| 449 {SkPaint::kFull_Hinting, "Full", "Hf " }, | 449 {SkPaint::kFull_Hinting, "Full", "Hf " }, |
| 450 }; | 450 }; |
| 451 | 451 |
| 452 struct FilterQualityState { | 452 struct FilterQualityState { |
| 453 SkFilterQuality fQuality; | 453 SkFilterQuality fQuality; |
| 454 const char* fName; | 454 const char* fName; |
| 455 const char* fLabel; | 455 const char* fLabel; |
| 456 }; | 456 }; |
| 457 static FilterQualityState gFilterQualityStates[] = { | 457 static FilterQualityState gFilterQualityStates[] = { |
| 458 { kNone_SkFilterQuality, "Mixed", NULL }, | 458 { kNone_SkFilterQuality, "Mixed", nullptr }, |
| 459 { kNone_SkFilterQuality, "None", "F0 " }, | 459 { kNone_SkFilterQuality, "None", "F0 " }, |
| 460 { kLow_SkFilterQuality, "Low", "F1 " }, | 460 { kLow_SkFilterQuality, "Low", "F1 " }, |
| 461 { kMedium_SkFilterQuality, "Medium", "F2 " }, | 461 { kMedium_SkFilterQuality, "Medium", "F2 " }, |
| 462 { kHigh_SkFilterQuality, "High", "F3 " }, | 462 { kHigh_SkFilterQuality, "High", "F3 " }, |
| 463 }; | 463 }; |
| 464 | 464 |
| 465 class FlagsFilterCanvas : public SkPaintFilterCanvas { | 465 class FlagsFilterCanvas : public SkPaintFilterCanvas { |
| 466 public: | 466 public: |
| 467 FlagsFilterCanvas(SkCanvas* canvas, SkOSMenu::TriState lcd, SkOSMenu::TriSta
te aa, | 467 FlagsFilterCanvas(SkCanvas* canvas, SkOSMenu::TriState lcd, SkOSMenu::TriSta
te aa, |
| 468 SkOSMenu::TriState subpixel, int hinting, int filterQualit
y) | 468 SkOSMenu::TriState subpixel, int hinting, int filterQualit
y) |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 | 636 |
| 637 void SampleWindow::setZoomCenter(float x, float y) { | 637 void SampleWindow::setZoomCenter(float x, float y) { |
| 638 fZoomCenterX = x; | 638 fZoomCenterX = x; |
| 639 fZoomCenterY = y; | 639 fZoomCenterY = y; |
| 640 } | 640 } |
| 641 | 641 |
| 642 bool SampleWindow::zoomIn() { | 642 bool SampleWindow::zoomIn() { |
| 643 // Arbitrarily decided | 643 // Arbitrarily decided |
| 644 if (fFatBitsScale == kMaxFatBitsScale) return false; | 644 if (fFatBitsScale == kMaxFatBitsScale) return false; |
| 645 fFatBitsScale++; | 645 fFatBitsScale++; |
| 646 this->inval(NULL); | 646 this->inval(nullptr); |
| 647 return true; | 647 return true; |
| 648 } | 648 } |
| 649 | 649 |
| 650 bool SampleWindow::zoomOut() { | 650 bool SampleWindow::zoomOut() { |
| 651 if (fFatBitsScale == 1) return false; | 651 if (fFatBitsScale == 1) return false; |
| 652 fFatBitsScale--; | 652 fFatBitsScale--; |
| 653 this->inval(NULL); | 653 this->inval(nullptr); |
| 654 return true; | 654 return true; |
| 655 } | 655 } |
| 656 | 656 |
| 657 void SampleWindow::updatePointer(int x, int y) { | 657 void SampleWindow::updatePointer(int x, int y) { |
| 658 fMouseX = x; | 658 fMouseX = x; |
| 659 fMouseY = y; | 659 fMouseY = y; |
| 660 if (fShowZoomer) { | 660 if (fShowZoomer) { |
| 661 this->inval(NULL); | 661 this->inval(nullptr); |
| 662 } | 662 } |
| 663 } | 663 } |
| 664 | 664 |
| 665 static inline SampleWindow::DeviceType cycle_devicetype(SampleWindow::DeviceType
ct) { | 665 static inline SampleWindow::DeviceType cycle_devicetype(SampleWindow::DeviceType
ct) { |
| 666 static const SampleWindow::DeviceType gCT[] = { | 666 static const SampleWindow::DeviceType gCT[] = { |
| 667 SampleWindow::kPicture_DeviceType, | 667 SampleWindow::kPicture_DeviceType, |
| 668 #if SK_SUPPORT_GPU | 668 #if SK_SUPPORT_GPU |
| 669 SampleWindow::kGPU_DeviceType, | 669 SampleWindow::kGPU_DeviceType, |
| 670 #if SK_ANGLE | 670 #if SK_ANGLE |
| 671 SampleWindow::kANGLE_DeviceType, | 671 SampleWindow::kANGLE_DeviceType, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 697 DEFINE_bool(list, false, "List samples?"); | 697 DEFINE_bool(list, false, "List samples?"); |
| 698 DEFINE_string(key, "", ""); // dummy to enable gm tests that have platform-spec
ific names | 698 DEFINE_string(key, "", ""); // dummy to enable gm tests that have platform-spec
ific names |
| 699 #ifdef SAMPLE_PDF_FILE_VIEWER | 699 #ifdef SAMPLE_PDF_FILE_VIEWER |
| 700 DEFINE_string(pdfPath, "", "Path to direcotry of pdf files."); | 700 DEFINE_string(pdfPath, "", "Path to direcotry of pdf files."); |
| 701 #endif | 701 #endif |
| 702 | 702 |
| 703 #include "SkTaskGroup.h" | 703 #include "SkTaskGroup.h" |
| 704 | 704 |
| 705 SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* dev
Manager) | 705 SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* dev
Manager) |
| 706 : INHERITED(hwnd) | 706 : INHERITED(hwnd) |
| 707 , fDevManager(NULL) { | 707 , fDevManager(nullptr) { |
| 708 | 708 |
| 709 SkCommandLineFlags::Parse(argc, argv); | 709 SkCommandLineFlags::Parse(argc, argv); |
| 710 | 710 |
| 711 fCurrIndex = -1; | 711 fCurrIndex = -1; |
| 712 | 712 |
| 713 if (!FLAGS_pictureDir.isEmpty()) { | 713 if (!FLAGS_pictureDir.isEmpty()) { |
| 714 SkOSFile::Iter iter(FLAGS_pictureDir[0], "skp"); | 714 SkOSFile::Iter iter(FLAGS_pictureDir[0], "skp"); |
| 715 SkString filename; | 715 SkString filename; |
| 716 while (iter.next(&filename)) { | 716 while (iter.next(&filename)) { |
| 717 *fSamples.append() = new PictFileFactory( | 717 *fSamples.append() = new PictFileFactory( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 738 const SkViewRegister* reg = SkViewRegister::Head(); | 738 const SkViewRegister* reg = SkViewRegister::Head(); |
| 739 while (reg) { | 739 while (reg) { |
| 740 *fSamples.append() = reg->factory(); | 740 *fSamples.append() = reg->factory(); |
| 741 reg = reg->next(); | 741 reg = reg->next(); |
| 742 } | 742 } |
| 743 } | 743 } |
| 744 | 744 |
| 745 if (FLAGS_sort) { | 745 if (FLAGS_sort) { |
| 746 // Sort samples, so foo.skp and foo.pdf are consecutive and we can quick
ly spot where | 746 // Sort samples, so foo.skp and foo.pdf are consecutive and we can quick
ly spot where |
| 747 // skp -> pdf -> png fails. | 747 // skp -> pdf -> png fails. |
| 748 SkTQSort(fSamples.begin(), fSamples.end() ? fSamples.end() - 1 : NULL, c
ompareSampleTitle); | 748 SkTQSort(fSamples.begin(), fSamples.end() ? fSamples.end() - 1 : nullptr
, compareSampleTitle); |
| 749 } | 749 } |
| 750 | 750 |
| 751 if (!FLAGS_slide.isEmpty()) { | 751 if (!FLAGS_slide.isEmpty()) { |
| 752 fCurrIndex = findByTitle(FLAGS_slide[0]); | 752 fCurrIndex = findByTitle(FLAGS_slide[0]); |
| 753 if (fCurrIndex < 0) { | 753 if (fCurrIndex < 0) { |
| 754 fprintf(stderr, "Unknown sample \"%s\"\n", FLAGS_slide[0]); | 754 fprintf(stderr, "Unknown sample \"%s\"\n", FLAGS_slide[0]); |
| 755 listTitles(); | 755 listTitles(); |
| 756 } | 756 } |
| 757 } | 757 } |
| 758 | 758 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 fLCDState = SkOSMenu::kMixedState; | 802 fLCDState = SkOSMenu::kMixedState; |
| 803 fAAState = SkOSMenu::kMixedState; | 803 fAAState = SkOSMenu::kMixedState; |
| 804 fSubpixelState = SkOSMenu::kMixedState; | 804 fSubpixelState = SkOSMenu::kMixedState; |
| 805 fHintingState = 0; | 805 fHintingState = 0; |
| 806 fFilterQualityIndex = 0; | 806 fFilterQualityIndex = 0; |
| 807 fFlipAxis = 0; | 807 fFlipAxis = 0; |
| 808 fScrollTestX = fScrollTestY = 0; | 808 fScrollTestX = fScrollTestY = 0; |
| 809 | 809 |
| 810 fMouseX = fMouseY = 0; | 810 fMouseX = fMouseY = 0; |
| 811 fFatBitsScale = 8; | 811 fFatBitsScale = 8; |
| 812 fTypeface = SkTypeface::CreateFromTypeface(NULL, SkTypeface::kBold); | 812 fTypeface = SkTypeface::CreateFromTypeface(nullptr, SkTypeface::kBold); |
| 813 fShowZoomer = false; | 813 fShowZoomer = false; |
| 814 | 814 |
| 815 fZoomLevel = 0; | 815 fZoomLevel = 0; |
| 816 fZoomScale = SK_Scalar1; | 816 fZoomScale = SK_Scalar1; |
| 817 | 817 |
| 818 fMagnify = false; | 818 fMagnify = false; |
| 819 | 819 |
| 820 fSaveToPdf = false; | 820 fSaveToPdf = false; |
| 821 fSaveToSKP = false; | 821 fSaveToSKP = false; |
| 822 | 822 |
| 823 int sinkID = this->getSinkID(); | 823 int sinkID = this->getSinkID(); |
| 824 fAppMenu = new SkOSMenu; | 824 fAppMenu = new SkOSMenu; |
| 825 fAppMenu->setTitle("Global Settings"); | 825 fAppMenu->setTitle("Global Settings"); |
| 826 int itemID; | 826 int itemID; |
| 827 | 827 |
| 828 itemID =fAppMenu->appendList("Device Type", "Device Type", sinkID, 0, | 828 itemID =fAppMenu->appendList("Device Type", "Device Type", sinkID, 0, |
| 829 "Raster", "Picture", "OpenGL", | 829 "Raster", "Picture", "OpenGL", |
| 830 #if SK_ANGLE | 830 #if SK_ANGLE |
| 831 "ANGLE", | 831 "ANGLE", |
| 832 #endif | 832 #endif |
| 833 NULL); | 833 nullptr); |
| 834 fAppMenu->assignKeyEquivalentToItem(itemID, 'd'); | 834 fAppMenu->assignKeyEquivalentToItem(itemID, 'd'); |
| 835 itemID = fAppMenu->appendTriState("AA", "AA", sinkID, fAAState); | 835 itemID = fAppMenu->appendTriState("AA", "AA", sinkID, fAAState); |
| 836 fAppMenu->assignKeyEquivalentToItem(itemID, 'b'); | 836 fAppMenu->assignKeyEquivalentToItem(itemID, 'b'); |
| 837 itemID = fAppMenu->appendTriState("LCD", "LCD", sinkID, fLCDState); | 837 itemID = fAppMenu->appendTriState("LCD", "LCD", sinkID, fLCDState); |
| 838 fAppMenu->assignKeyEquivalentToItem(itemID, 'l'); | 838 fAppMenu->assignKeyEquivalentToItem(itemID, 'l'); |
| 839 itemID = fAppMenu->appendList("FilterQuality", "FilterQuality", sinkID, fFil
terQualityIndex, | 839 itemID = fAppMenu->appendList("FilterQuality", "FilterQuality", sinkID, fFil
terQualityIndex, |
| 840 gFilterQualityStates[0].fName, | 840 gFilterQualityStates[0].fName, |
| 841 gFilterQualityStates[1].fName, | 841 gFilterQualityStates[1].fName, |
| 842 gFilterQualityStates[2].fName, | 842 gFilterQualityStates[2].fName, |
| 843 gFilterQualityStates[3].fName, | 843 gFilterQualityStates[3].fName, |
| 844 gFilterQualityStates[4].fName, | 844 gFilterQualityStates[4].fName, |
| 845 NULL); | 845 nullptr); |
| 846 fAppMenu->assignKeyEquivalentToItem(itemID, 'n'); | 846 fAppMenu->assignKeyEquivalentToItem(itemID, 'n'); |
| 847 itemID = fAppMenu->appendTriState("Subpixel", "Subpixel", sinkID, fSubpixelS
tate); | 847 itemID = fAppMenu->appendTriState("Subpixel", "Subpixel", sinkID, fSubpixelS
tate); |
| 848 fAppMenu->assignKeyEquivalentToItem(itemID, 's'); | 848 fAppMenu->assignKeyEquivalentToItem(itemID, 's'); |
| 849 itemID = fAppMenu->appendList("Hinting", "Hinting", sinkID, fHintingState, | 849 itemID = fAppMenu->appendList("Hinting", "Hinting", sinkID, fHintingState, |
| 850 gHintingStates[0].name, | 850 gHintingStates[0].name, |
| 851 gHintingStates[1].name, | 851 gHintingStates[1].name, |
| 852 gHintingStates[2].name, | 852 gHintingStates[2].name, |
| 853 gHintingStates[3].name, | 853 gHintingStates[3].name, |
| 854 gHintingStates[4].name, | 854 gHintingStates[4].name, |
| 855 NULL); | 855 nullptr); |
| 856 fAppMenu->assignKeyEquivalentToItem(itemID, 'h'); | 856 fAppMenu->assignKeyEquivalentToItem(itemID, 'h'); |
| 857 | 857 |
| 858 fUsePipeMenuItemID = fAppMenu->appendTriState("Pipe", "Pipe" , sinkID, | 858 fUsePipeMenuItemID = fAppMenu->appendTriState("Pipe", "Pipe" , sinkID, |
| 859 fPipeState); | 859 fPipeState); |
| 860 fAppMenu->assignKeyEquivalentToItem(fUsePipeMenuItemID, 'P'); | 860 fAppMenu->assignKeyEquivalentToItem(fUsePipeMenuItemID, 'P'); |
| 861 | 861 |
| 862 itemID =fAppMenu->appendList("Tiling", "Tiling", sinkID, fTilingMode, | 862 itemID =fAppMenu->appendList("Tiling", "Tiling", sinkID, fTilingMode, |
| 863 gTilingInfo[kNo_Tiling].label, | 863 gTilingInfo[kNo_Tiling].label, |
| 864 gTilingInfo[kAbs_128x128_Tiling].label, | 864 gTilingInfo[kAbs_128x128_Tiling].label, |
| 865 gTilingInfo[kAbs_256x256_Tiling].label, | 865 gTilingInfo[kAbs_256x256_Tiling].label, |
| 866 gTilingInfo[kRel_4x4_Tiling].label, | 866 gTilingInfo[kRel_4x4_Tiling].label, |
| 867 gTilingInfo[kRel_1x16_Tiling].label, | 867 gTilingInfo[kRel_1x16_Tiling].label, |
| 868 gTilingInfo[kRel_16x1_Tiling].label, | 868 gTilingInfo[kRel_16x1_Tiling].label, |
| 869 NULL); | 869 nullptr); |
| 870 fAppMenu->assignKeyEquivalentToItem(itemID, 't'); | 870 fAppMenu->assignKeyEquivalentToItem(itemID, 't'); |
| 871 | 871 |
| 872 itemID = fAppMenu->appendSwitch("Slide Show", "Slide Show" , sinkID, false); | 872 itemID = fAppMenu->appendSwitch("Slide Show", "Slide Show" , sinkID, false); |
| 873 fAppMenu->assignKeyEquivalentToItem(itemID, 'a'); | 873 fAppMenu->assignKeyEquivalentToItem(itemID, 'a'); |
| 874 itemID = fAppMenu->appendSwitch("Clip", "Clip" , sinkID, fUseClip); | 874 itemID = fAppMenu->appendSwitch("Clip", "Clip" , sinkID, fUseClip); |
| 875 fAppMenu->assignKeyEquivalentToItem(itemID, 'c'); | 875 fAppMenu->assignKeyEquivalentToItem(itemID, 'c'); |
| 876 itemID = fAppMenu->appendSwitch("Flip X", "Flip X" , sinkID, false); | 876 itemID = fAppMenu->appendSwitch("Flip X", "Flip X" , sinkID, false); |
| 877 fAppMenu->assignKeyEquivalentToItem(itemID, 'x'); | 877 fAppMenu->assignKeyEquivalentToItem(itemID, 'x'); |
| 878 itemID = fAppMenu->appendSwitch("Flip Y", "Flip Y" , sinkID, false); | 878 itemID = fAppMenu->appendSwitch("Flip Y", "Flip Y" , sinkID, false); |
| 879 fAppMenu->assignKeyEquivalentToItem(itemID, 'y'); | 879 fAppMenu->assignKeyEquivalentToItem(itemID, 'y'); |
| 880 itemID = fAppMenu->appendSwitch("Zoomer", "Zoomer" , sinkID, fShowZoomer); | 880 itemID = fAppMenu->appendSwitch("Zoomer", "Zoomer" , sinkID, fShowZoomer); |
| 881 fAppMenu->assignKeyEquivalentToItem(itemID, 'z'); | 881 fAppMenu->assignKeyEquivalentToItem(itemID, 'z'); |
| 882 itemID = fAppMenu->appendSwitch("Magnify", "Magnify" , sinkID, fMagnify); | 882 itemID = fAppMenu->appendSwitch("Magnify", "Magnify" , sinkID, fMagnify); |
| 883 fAppMenu->assignKeyEquivalentToItem(itemID, 'm'); | 883 fAppMenu->assignKeyEquivalentToItem(itemID, 'm'); |
| 884 | 884 |
| 885 itemID = fAppMenu->appendAction("Save to PDF", sinkID); | 885 itemID = fAppMenu->appendAction("Save to PDF", sinkID); |
| 886 fAppMenu->assignKeyEquivalentToItem(itemID, 'e'); | 886 fAppMenu->assignKeyEquivalentToItem(itemID, 'e'); |
| 887 | 887 |
| 888 this->addMenu(fAppMenu); | 888 this->addMenu(fAppMenu); |
| 889 fSlideMenu = new SkOSMenu; | 889 fSlideMenu = new SkOSMenu; |
| 890 this->addMenu(fSlideMenu); | 890 this->addMenu(fSlideMenu); |
| 891 | 891 |
| 892 this->setVisibleP(true); | 892 this->setVisibleP(true); |
| 893 this->setClipToBounds(false); | 893 this->setClipToBounds(false); |
| 894 | 894 |
| 895 this->loadView((*fSamples[fCurrIndex])()); | 895 this->loadView((*fSamples[fCurrIndex])()); |
| 896 | 896 |
| 897 if (NULL == devManager) { | 897 if (nullptr == devManager) { |
| 898 fDevManager = new DefaultDeviceManager(); | 898 fDevManager = new DefaultDeviceManager(); |
| 899 } else { | 899 } else { |
| 900 devManager->ref(); | 900 devManager->ref(); |
| 901 fDevManager = devManager; | 901 fDevManager = devManager; |
| 902 } | 902 } |
| 903 fDevManager->setUpBackend(this, fMSAASampleCount); | 903 fDevManager->setUpBackend(this, fMSAASampleCount); |
| 904 | 904 |
| 905 // If another constructor set our dimensions, ensure that our | 905 // If another constructor set our dimensions, ensure that our |
| 906 // onSizeChange gets called. | 906 // onSizeChange gets called. |
| 907 if (this->height() && this->width()) { | 907 if (this->height() && this->width()) { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 992 SkImageInfo info = SkImageInfo::MakeN32Premul(w, h); | 992 SkImageInfo info = SkImageInfo::MakeN32Premul(w, h); |
| 993 SkAutoTUnref<SkSurface> surface(canvas->newSurface(info)); | 993 SkAutoTUnref<SkSurface> surface(canvas->newSurface(info)); |
| 994 SkCanvas* tileCanvas = surface->getCanvas(); | 994 SkCanvas* tileCanvas = surface->getCanvas(); |
| 995 | 995 |
| 996 for (SkScalar y = 0; y < height(); y += tile.height()) { | 996 for (SkScalar y = 0; y < height(); y += tile.height()) { |
| 997 for (SkScalar x = 0; x < width(); x += tile.width()) { | 997 for (SkScalar x = 0; x < width(); x += tile.width()) { |
| 998 SkAutoCanvasRestore acr(tileCanvas, true); | 998 SkAutoCanvasRestore acr(tileCanvas, true); |
| 999 tileCanvas->translate(-x, -y); | 999 tileCanvas->translate(-x, -y); |
| 1000 tileCanvas->clear(0); | 1000 tileCanvas->clear(0); |
| 1001 this->INHERITED::draw(tileCanvas); | 1001 this->INHERITED::draw(tileCanvas); |
| 1002 surface->draw(canvas, x, y, NULL); | 1002 surface->draw(canvas, x, y, nullptr); |
| 1003 } | 1003 } |
| 1004 } | 1004 } |
| 1005 | 1005 |
| 1006 // for drawing the borders between tiles | 1006 // for drawing the borders between tiles |
| 1007 SkPaint paint; | 1007 SkPaint paint; |
| 1008 paint.setColor(0x60FF00FF); | 1008 paint.setColor(0x60FF00FF); |
| 1009 paint.setStyle(SkPaint::kStroke_Style); | 1009 paint.setStyle(SkPaint::kStroke_Style); |
| 1010 | 1010 |
| 1011 for (SkScalar y = 0; y < height(); y += tile.height()) { | 1011 for (SkScalar y = 0; y < height(); y += tile.height()) { |
| 1012 for (SkScalar x = 0; x < width(); x += tile.width()) { | 1012 for (SkScalar x = 0; x < width(); x += tile.width()) { |
| 1013 canvas->drawRect(SkRect::MakeXYWH(x, y, tile.width(), tile.heigh
t()), paint); | 1013 canvas->drawRect(SkRect::MakeXYWH(x, y, tile.width(), tile.heigh
t()), paint); |
| 1014 } | 1014 } |
| 1015 } | 1015 } |
| 1016 } | 1016 } |
| 1017 | 1017 |
| 1018 if (fShowZoomer && !fSaveToPdf) { | 1018 if (fShowZoomer && !fSaveToPdf) { |
| 1019 showZoomer(canvas); | 1019 showZoomer(canvas); |
| 1020 } | 1020 } |
| 1021 if (fMagnify && !fSaveToPdf) { | 1021 if (fMagnify && !fSaveToPdf) { |
| 1022 magnify(canvas); | 1022 magnify(canvas); |
| 1023 } | 1023 } |
| 1024 | 1024 |
| 1025 if (fMeasureFPS && fMeasureFPS_Time) { | 1025 if (fMeasureFPS && fMeasureFPS_Time) { |
| 1026 this->updateTitle(); | 1026 this->updateTitle(); |
| 1027 this->postInvalDelay(); | 1027 this->postInvalDelay(); |
| 1028 } | 1028 } |
| 1029 | 1029 |
| 1030 if (this->sendAnimatePulse()) { | 1030 if (this->sendAnimatePulse()) { |
| 1031 this->inval(NULL); | 1031 this->inval(nullptr); |
| 1032 } | 1032 } |
| 1033 | 1033 |
| 1034 // do this last | 1034 // do this last |
| 1035 fDevManager->publishCanvas(fDeviceType, canvas, this); | 1035 fDevManager->publishCanvas(fDeviceType, canvas, this); |
| 1036 } | 1036 } |
| 1037 | 1037 |
| 1038 static float clipW = 200; | 1038 static float clipW = 200; |
| 1039 static float clipH = 200; | 1039 static float clipH = 200; |
| 1040 void SampleWindow::magnify(SkCanvas* canvas) { | 1040 void SampleWindow::magnify(SkCanvas* canvas) { |
| 1041 SkRect r; | 1041 SkRect r; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1165 paint.setColor(SK_ColorWHITE); | 1165 paint.setColor(SK_ColorWHITE); |
| 1166 canvas->drawRect(dest, paint); | 1166 canvas->drawRect(dest, paint); |
| 1167 switch (fFatBitsScale) { | 1167 switch (fFatBitsScale) { |
| 1168 case kMaxFatBitsScale: | 1168 case kMaxFatBitsScale: |
| 1169 show_lcd_grid(canvas, bitmap, src, dest, show_lcd_box); | 1169 show_lcd_grid(canvas, bitmap, src, dest, show_lcd_box); |
| 1170 break; | 1170 break; |
| 1171 case kMaxFatBitsScale - 1: | 1171 case kMaxFatBitsScale - 1: |
| 1172 show_lcd_grid(canvas, bitmap, src, dest, show_lcd_circle); | 1172 show_lcd_grid(canvas, bitmap, src, dest, show_lcd_circle); |
| 1173 break; | 1173 break; |
| 1174 default: | 1174 default: |
| 1175 canvas->drawBitmapRect(bitmap, src, dest, NULL); | 1175 canvas->drawBitmapRect(bitmap, src, dest, nullptr); |
| 1176 break; | 1176 break; |
| 1177 } | 1177 } |
| 1178 | 1178 |
| 1179 paint.setColor(SK_ColorBLACK); | 1179 paint.setColor(SK_ColorBLACK); |
| 1180 paint.setStyle(SkPaint::kStroke_Style); | 1180 paint.setStyle(SkPaint::kStroke_Style); |
| 1181 // Draw a border around the pixel in the middle | 1181 // Draw a border around the pixel in the middle |
| 1182 SkRect originalPixel; | 1182 SkRect originalPixel; |
| 1183 originalPixel.set(SkIntToScalar(fMouseX), SkIntToScalar(fMouseY), SkIntToSca
lar(fMouseX + 1), SkIntToScalar(fMouseY + 1)); | 1183 originalPixel.set(SkIntToScalar(fMouseX), SkIntToScalar(fMouseY), SkIntToSca
lar(fMouseX + 1), SkIntToScalar(fMouseY + 1)); |
| 1184 SkMatrix matrix; | 1184 SkMatrix matrix; |
| 1185 SkRect scalarSrc; | 1185 SkRect scalarSrc; |
| 1186 scalarSrc.set(src); | 1186 scalarSrc.set(src); |
| 1187 SkColor color = bitmap.getColor(fMouseX, fMouseY); | 1187 SkColor color = bitmap.getColor(fMouseX, fMouseY); |
| 1188 if (matrix.setRectToRect(scalarSrc, dest, SkMatrix::kFill_ScaleToFit)) { | 1188 if (matrix.setRectToRect(scalarSrc, dest, SkMatrix::kFill_ScaleToFit)) { |
| 1189 SkRect pixel; | 1189 SkRect pixel; |
| 1190 matrix.mapRect(&pixel, originalPixel); | 1190 matrix.mapRect(&pixel, originalPixel); |
| 1191 // TODO Perhaps measure the values and make the outline white if it's "d
ark" | 1191 // TODO Perhaps measure the values and make the outline white if it's "d
ark" |
| 1192 if (color == SK_ColorBLACK) { | 1192 if (color == SK_ColorBLACK) { |
| 1193 paint.setColor(SK_ColorWHITE); | 1193 paint.setColor(SK_ColorWHITE); |
| 1194 } | 1194 } |
| 1195 canvas->drawRect(pixel, paint); | 1195 canvas->drawRect(pixel, paint); |
| 1196 } | 1196 } |
| 1197 paint.setColor(SK_ColorBLACK); | 1197 paint.setColor(SK_ColorBLACK); |
| 1198 // Draw a border around the destination rectangle | 1198 // Draw a border around the destination rectangle |
| 1199 canvas->drawRect(dest, paint); | 1199 canvas->drawRect(dest, paint); |
| 1200 paint.setStyle(SkPaint::kStrokeAndFill_Style); | 1200 paint.setStyle(SkPaint::kStrokeAndFill_Style); |
| 1201 // Identify the pixel and its color on screen | 1201 // Identify the pixel and its color on screen |
| 1202 paint.setTypeface(fTypeface); | 1202 paint.setTypeface(fTypeface); |
| 1203 paint.setAntiAlias(true); | 1203 paint.setAntiAlias(true); |
| 1204 SkScalar lineHeight = paint.getFontMetrics(NULL); | 1204 SkScalar lineHeight = paint.getFontMetrics(nullptr); |
| 1205 SkString string; | 1205 SkString string; |
| 1206 string.appendf("(%i, %i)", fMouseX, fMouseY); | 1206 string.appendf("(%i, %i)", fMouseX, fMouseY); |
| 1207 SkScalar left = dest.fLeft + SkIntToScalar(3); | 1207 SkScalar left = dest.fLeft + SkIntToScalar(3); |
| 1208 SkScalar i = SK_Scalar1; | 1208 SkScalar i = SK_Scalar1; |
| 1209 drawText(canvas, string, left, SkScalarMulAdd(lineHeight, i, dest.fTop), pai
nt); | 1209 drawText(canvas, string, left, SkScalarMulAdd(lineHeight, i, dest.fTop), pai
nt); |
| 1210 // Alpha | 1210 // Alpha |
| 1211 i += SK_Scalar1; | 1211 i += SK_Scalar1; |
| 1212 string.reset(); | 1212 string.reset(); |
| 1213 string.appendf("A: %X", SkColorGetA(color)); | 1213 string.appendf("A: %X", SkColorGetA(color)); |
| 1214 drawText(canvas, string, left, SkScalarMulAdd(lineHeight, i, dest.fTop), pai
nt); | 1214 drawText(canvas, string, left, SkScalarMulAdd(lineHeight, i, dest.fTop), pai
nt); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1235 | 1235 |
| 1236 void SampleWindow::onDraw(SkCanvas* canvas) { | 1236 void SampleWindow::onDraw(SkCanvas* canvas) { |
| 1237 } | 1237 } |
| 1238 | 1238 |
| 1239 #include "SkColorPriv.h" | 1239 #include "SkColorPriv.h" |
| 1240 | 1240 |
| 1241 void SampleWindow::saveToPdf() | 1241 void SampleWindow::saveToPdf() |
| 1242 { | 1242 { |
| 1243 #if SK_SUPPORT_PDF | 1243 #if SK_SUPPORT_PDF |
| 1244 fSaveToPdf = true; | 1244 fSaveToPdf = true; |
| 1245 this->inval(NULL); | 1245 this->inval(nullptr); |
| 1246 #endif // SK_SUPPORT_PDF | 1246 #endif // SK_SUPPORT_PDF |
| 1247 } | 1247 } |
| 1248 | 1248 |
| 1249 SkCanvas* SampleWindow::beforeChildren(SkCanvas* canvas) { | 1249 SkCanvas* SampleWindow::beforeChildren(SkCanvas* canvas) { |
| 1250 if (fSaveToPdf) { | 1250 if (fSaveToPdf) { |
| 1251 SkString name; | 1251 SkString name; |
| 1252 if (!this->getRawTitle(&name)) { | 1252 if (!this->getRawTitle(&name)) { |
| 1253 name.set("unknown_sample"); | 1253 name.set("unknown_sample"); |
| 1254 } | 1254 } |
| 1255 name.append(".pdf"); | 1255 name.append(".pdf"); |
| 1256 #ifdef SK_BUILD_FOR_ANDROID | 1256 #ifdef SK_BUILD_FOR_ANDROID |
| 1257 name.prepend("/sdcard/"); | 1257 name.prepend("/sdcard/"); |
| 1258 #endif | 1258 #endif |
| 1259 fPDFDocument.reset(SkDocument::CreatePDF(name.c_str())); | 1259 fPDFDocument.reset(SkDocument::CreatePDF(name.c_str())); |
| 1260 canvas = fPDFDocument->beginPage(this->width(), this->height()); | 1260 canvas = fPDFDocument->beginPage(this->width(), this->height()); |
| 1261 } else if (kPicture_DeviceType == fDeviceType) { | 1261 } else if (kPicture_DeviceType == fDeviceType) { |
| 1262 canvas = fRecorder.beginRecording(9999, 9999, NULL, 0); | 1262 canvas = fRecorder.beginRecording(9999, 9999, nullptr, 0); |
| 1263 } else { | 1263 } else { |
| 1264 canvas = this->INHERITED::beforeChildren(canvas); | 1264 canvas = this->INHERITED::beforeChildren(canvas); |
| 1265 } | 1265 } |
| 1266 | 1266 |
| 1267 if (fUseClip) { | 1267 if (fUseClip) { |
| 1268 canvas->drawColor(0xFFFF88FF); | 1268 canvas->drawColor(0xFFFF88FF); |
| 1269 canvas->clipPath(fClipPath, SkRegion::kIntersect_Op, true); | 1269 canvas->clipPath(fClipPath, SkRegion::kIntersect_Op, true); |
| 1270 } | 1270 } |
| 1271 | 1271 |
| 1272 // Install a flags filter proxy canvas if needed | 1272 // Install a flags filter proxy canvas if needed |
| 1273 if (fLCDState != SkOSMenu::kMixedState || | 1273 if (fLCDState != SkOSMenu::kMixedState || |
| 1274 fAAState != SkOSMenu::kMixedState || | 1274 fAAState != SkOSMenu::kMixedState || |
| 1275 fSubpixelState != SkOSMenu::kMixedState || | 1275 fSubpixelState != SkOSMenu::kMixedState || |
| 1276 fHintingState > 0 || | 1276 fHintingState > 0 || |
| 1277 fFilterQualityIndex > 0) { | 1277 fFilterQualityIndex > 0) { |
| 1278 canvas = new FlagsFilterCanvas(canvas, fLCDState, fAAState, fSubpixelSta
te, fHintingState, | 1278 canvas = new FlagsFilterCanvas(canvas, fLCDState, fAAState, fSubpixelSta
te, fHintingState, |
| 1279 fFilterQualityIndex); | 1279 fFilterQualityIndex); |
| 1280 fFlagsFilterCanvas.reset(canvas); | 1280 fFlagsFilterCanvas.reset(canvas); |
| 1281 } | 1281 } |
| 1282 | 1282 |
| 1283 return canvas; | 1283 return canvas; |
| 1284 } | 1284 } |
| 1285 #include "SkMultiPictureDraw.h" | 1285 #include "SkMultiPictureDraw.h" |
| 1286 void SampleWindow::afterChildren(SkCanvas* orig) { | 1286 void SampleWindow::afterChildren(SkCanvas* orig) { |
| 1287 fFlagsFilterCanvas.reset(NULL); | 1287 fFlagsFilterCanvas.reset(nullptr); |
| 1288 | 1288 |
| 1289 if (fSaveToPdf) { | 1289 if (fSaveToPdf) { |
| 1290 fSaveToPdf = false; | 1290 fSaveToPdf = false; |
| 1291 fPDFDocument->endPage(); | 1291 fPDFDocument->endPage(); |
| 1292 fPDFDocument.reset(NULL); | 1292 fPDFDocument.reset(nullptr); |
| 1293 // We took over the draw calls in order to create the PDF, so we need | 1293 // We took over the draw calls in order to create the PDF, so we need |
| 1294 // to redraw. | 1294 // to redraw. |
| 1295 this->inval(NULL); | 1295 this->inval(nullptr); |
| 1296 return; | 1296 return; |
| 1297 } | 1297 } |
| 1298 | 1298 |
| 1299 if (fRequestGrabImage) { | 1299 if (fRequestGrabImage) { |
| 1300 fRequestGrabImage = false; | 1300 fRequestGrabImage = false; |
| 1301 | 1301 |
| 1302 SkBitmap bmp = capture_bitmap(orig); | 1302 SkBitmap bmp = capture_bitmap(orig); |
| 1303 if (!bmp.isNull()) { | 1303 if (!bmp.isNull()) { |
| 1304 static int gSampleGrabCounter; | 1304 static int gSampleGrabCounter; |
| 1305 SkString name; | 1305 SkString name; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1333 for (int y = 0; y < 2; ++y) { | 1333 for (int y = 0; y < 2; ++y) { |
| 1334 for (int x = 0; x < 2; ++x) { | 1334 for (int x = 0; x < 2; ++x) { |
| 1335 char* p = (char*)addr; | 1335 char* p = (char*)addr; |
| 1336 p += y * n.height() * rowBytes; | 1336 p += y * n.height() * rowBytes; |
| 1337 p += x * n.width() * sizeof(SkPMColor); | 1337 p += x * n.width() * sizeof(SkPMColor); |
| 1338 surfs[index] = SkSurface::NewRasterDirect(n, p, rowB
ytes); | 1338 surfs[index] = SkSurface::NewRasterDirect(n, p, rowB
ytes); |
| 1339 SkCanvas* c = surfs[index]->getCanvas(); | 1339 SkCanvas* c = surfs[index]->getCanvas(); |
| 1340 c->translate(SkIntToScalar(-x * n.width()), | 1340 c->translate(SkIntToScalar(-x * n.width()), |
| 1341 SkIntToScalar(-y * n.height())); | 1341 SkIntToScalar(-y * n.height())); |
| 1342 c->concat(orig->getTotalMatrix()); | 1342 c->concat(orig->getTotalMatrix()); |
| 1343 md.add(c, picture, NULL, NULL); | 1343 md.add(c, picture, nullptr, nullptr); |
| 1344 index++; | 1344 index++; |
| 1345 } | 1345 } |
| 1346 } | 1346 } |
| 1347 md.draw(); | 1347 md.draw(); |
| 1348 for (int i = 0; i < 4; ++i) { | 1348 for (int i = 0; i < 4; ++i) { |
| 1349 surfs[i]->unref(); | 1349 surfs[i]->unref(); |
| 1350 } | 1350 } |
| 1351 } | 1351 } |
| 1352 } else { | 1352 } else { |
| 1353 orig->drawPicture(picture); | 1353 orig->drawPicture(picture); |
| 1354 } | 1354 } |
| 1355 } else if (true) { | 1355 } else if (true) { |
| 1356 SkDynamicMemoryWStream ostream; | 1356 SkDynamicMemoryWStream ostream; |
| 1357 picture->serialize(&ostream); | 1357 picture->serialize(&ostream); |
| 1358 | 1358 |
| 1359 SkAutoDataUnref data(ostream.copyToData()); | 1359 SkAutoDataUnref data(ostream.copyToData()); |
| 1360 SkMemoryStream istream(data->data(), data->size()); | 1360 SkMemoryStream istream(data->data(), data->size()); |
| 1361 SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream)); | 1361 SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream)); |
| 1362 if (pict.get() != NULL) { | 1362 if (pict.get() != nullptr) { |
| 1363 orig->drawPicture(pict.get()); | 1363 orig->drawPicture(pict.get()); |
| 1364 } | 1364 } |
| 1365 } else { | 1365 } else { |
| 1366 picture->playback(orig); | 1366 picture->playback(orig); |
| 1367 } | 1367 } |
| 1368 } | 1368 } |
| 1369 | 1369 |
| 1370 // Do this after presentGL and other finishing, rather than in afterChild | 1370 // Do this after presentGL and other finishing, rather than in afterChild |
| 1371 if (fMeasureFPS) { | 1371 if (fMeasureFPS) { |
| 1372 fTimer.end(); | 1372 fTimer.end(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1406 canvas->concat(m); | 1406 canvas->concat(m); |
| 1407 } | 1407 } |
| 1408 | 1408 |
| 1409 if (fMeasureFPS) { | 1409 if (fMeasureFPS) { |
| 1410 (void)SampleView::SetRepeatDraw(child, FPS_REPEAT_COUNT); | 1410 (void)SampleView::SetRepeatDraw(child, FPS_REPEAT_COUNT); |
| 1411 fTimer.start(); | 1411 fTimer.start(); |
| 1412 } else { | 1412 } else { |
| 1413 (void)SampleView::SetRepeatDraw(child, 1); | 1413 (void)SampleView::SetRepeatDraw(child, 1); |
| 1414 } | 1414 } |
| 1415 if (fPerspAnim || fRotate) { | 1415 if (fPerspAnim || fRotate) { |
| 1416 this->inval(NULL); | 1416 this->inval(nullptr); |
| 1417 } | 1417 } |
| 1418 } | 1418 } |
| 1419 | 1419 |
| 1420 void SampleWindow::changeZoomLevel(float delta) { | 1420 void SampleWindow::changeZoomLevel(float delta) { |
| 1421 fZoomLevel += delta; | 1421 fZoomLevel += delta; |
| 1422 if (fZoomLevel > 0) { | 1422 if (fZoomLevel > 0) { |
| 1423 fZoomLevel = SkMinScalar(fZoomLevel, MAX_ZOOM_LEVEL); | 1423 fZoomLevel = SkMinScalar(fZoomLevel, MAX_ZOOM_LEVEL); |
| 1424 fZoomScale = fZoomLevel + SK_Scalar1; | 1424 fZoomScale = fZoomLevel + SK_Scalar1; |
| 1425 } else if (fZoomLevel < 0) { | 1425 } else if (fZoomLevel < 0) { |
| 1426 fZoomLevel = SkMaxScalar(fZoomLevel, MIN_ZOOM_LEVEL); | 1426 fZoomLevel = SkMaxScalar(fZoomLevel, MIN_ZOOM_LEVEL); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1457 m.preTranslate(-fZoomCenterX, -fZoomCenterY); | 1457 m.preTranslate(-fZoomCenterX, -fZoomCenterY); |
| 1458 //canvas->concat(m); | 1458 //canvas->concat(m); |
| 1459 } | 1459 } |
| 1460 // Apply any gesture matrix | 1460 // Apply any gesture matrix |
| 1461 m.preConcat(fGesture.localM()); | 1461 m.preConcat(fGesture.localM()); |
| 1462 m.preConcat(fGesture.globalM()); | 1462 m.preConcat(fGesture.globalM()); |
| 1463 | 1463 |
| 1464 this->setLocalMatrix(m); | 1464 this->setLocalMatrix(m); |
| 1465 | 1465 |
| 1466 this->updateTitle(); | 1466 this->updateTitle(); |
| 1467 this->inval(NULL); | 1467 this->inval(nullptr); |
| 1468 } | 1468 } |
| 1469 bool SampleWindow::previousSample() { | 1469 bool SampleWindow::previousSample() { |
| 1470 fCurrIndex = (fCurrIndex - 1 + fSamples.count()) % fSamples.count(); | 1470 fCurrIndex = (fCurrIndex - 1 + fSamples.count()) % fSamples.count(); |
| 1471 this->loadView((*fSamples[fCurrIndex])()); | 1471 this->loadView((*fSamples[fCurrIndex])()); |
| 1472 return true; | 1472 return true; |
| 1473 } | 1473 } |
| 1474 | 1474 |
| 1475 #include "SkResourceCache.h" | 1475 #include "SkResourceCache.h" |
| 1476 #include "SkGlyphCache.h" | 1476 #include "SkGlyphCache.h" |
| 1477 bool SampleWindow::nextSample() { | 1477 bool SampleWindow::nextSample() { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1521 this->nextSample(); | 1521 this->nextSample(); |
| 1522 this->postAnimatingEvent(); | 1522 this->postAnimatingEvent(); |
| 1523 } | 1523 } |
| 1524 return true; | 1524 return true; |
| 1525 } | 1525 } |
| 1526 if (evt.isType("set-curr-index")) { | 1526 if (evt.isType("set-curr-index")) { |
| 1527 this->goToSample(evt.getFast32()); | 1527 this->goToSample(evt.getFast32()); |
| 1528 return true; | 1528 return true; |
| 1529 } | 1529 } |
| 1530 if (isInvalEvent(evt)) { | 1530 if (isInvalEvent(evt)) { |
| 1531 this->inval(NULL); | 1531 this->inval(nullptr); |
| 1532 return true; | 1532 return true; |
| 1533 } | 1533 } |
| 1534 int selected = -1; | 1534 int selected = -1; |
| 1535 if (SkOSMenu::FindListIndex(evt, "Device Type", &selected)) { | 1535 if (SkOSMenu::FindListIndex(evt, "Device Type", &selected)) { |
| 1536 this->setDeviceType((DeviceType)selected); | 1536 this->setDeviceType((DeviceType)selected); |
| 1537 return true; | 1537 return true; |
| 1538 } | 1538 } |
| 1539 if (SkOSMenu::FindTriState(evt, "Pipe", &fPipeState)) { | 1539 if (SkOSMenu::FindTriState(evt, "Pipe", &fPipeState)) { |
| 1540 #ifdef PIPE_NET | 1540 #ifdef PIPE_NET |
| 1541 if (!fPipeState != SkOSMenu::kOnState) | 1541 if (!fPipeState != SkOSMenu::kOnState) |
| 1542 gServer.disconnectAll(); | 1542 gServer.disconnectAll(); |
| 1543 #endif | 1543 #endif |
| 1544 (void)SampleView::SetUsePipe(curr_view(this), fPipeState); | 1544 (void)SampleView::SetUsePipe(curr_view(this), fPipeState); |
| 1545 this->updateTitle(); | 1545 this->updateTitle(); |
| 1546 this->inval(NULL); | 1546 this->inval(nullptr); |
| 1547 return true; | 1547 return true; |
| 1548 } | 1548 } |
| 1549 if (SkOSMenu::FindSwitchState(evt, "Slide Show", NULL)) { | 1549 if (SkOSMenu::FindSwitchState(evt, "Slide Show", nullptr)) { |
| 1550 this->toggleSlideshow(); | 1550 this->toggleSlideshow(); |
| 1551 return true; | 1551 return true; |
| 1552 } | 1552 } |
| 1553 if (SkOSMenu::FindTriState(evt, "AA", &fAAState) || | 1553 if (SkOSMenu::FindTriState(evt, "AA", &fAAState) || |
| 1554 SkOSMenu::FindTriState(evt, "LCD", &fLCDState) || | 1554 SkOSMenu::FindTriState(evt, "LCD", &fLCDState) || |
| 1555 SkOSMenu::FindListIndex(evt, "FilterQuality", &fFilterQualityIndex) || | 1555 SkOSMenu::FindListIndex(evt, "FilterQuality", &fFilterQualityIndex) || |
| 1556 SkOSMenu::FindTriState(evt, "Subpixel", &fSubpixelState) || | 1556 SkOSMenu::FindTriState(evt, "Subpixel", &fSubpixelState) || |
| 1557 SkOSMenu::FindListIndex(evt, "Hinting", &fHintingState) || | 1557 SkOSMenu::FindListIndex(evt, "Hinting", &fHintingState) || |
| 1558 SkOSMenu::FindSwitchState(evt, "Clip", &fUseClip) || | 1558 SkOSMenu::FindSwitchState(evt, "Clip", &fUseClip) || |
| 1559 SkOSMenu::FindSwitchState(evt, "Zoomer", &fShowZoomer) || | 1559 SkOSMenu::FindSwitchState(evt, "Zoomer", &fShowZoomer) || |
| 1560 SkOSMenu::FindSwitchState(evt, "Magnify", &fMagnify)) | 1560 SkOSMenu::FindSwitchState(evt, "Magnify", &fMagnify)) |
| 1561 { | 1561 { |
| 1562 this->inval(NULL); | 1562 this->inval(nullptr); |
| 1563 this->updateTitle(); | 1563 this->updateTitle(); |
| 1564 return true; | 1564 return true; |
| 1565 } | 1565 } |
| 1566 if (SkOSMenu::FindListIndex(evt, "Tiling", &fTilingMode)) { | 1566 if (SkOSMenu::FindListIndex(evt, "Tiling", &fTilingMode)) { |
| 1567 if (SampleView::IsSampleView(curr_view(this))) { | 1567 if (SampleView::IsSampleView(curr_view(this))) { |
| 1568 ((SampleView*)curr_view(this))->onTileSizeChanged(this->tileSize()); | 1568 ((SampleView*)curr_view(this))->onTileSizeChanged(this->tileSize()); |
| 1569 } | 1569 } |
| 1570 this->inval(NULL); | 1570 this->inval(nullptr); |
| 1571 this->updateTitle(); | 1571 this->updateTitle(); |
| 1572 return true; | 1572 return true; |
| 1573 } | 1573 } |
| 1574 if (SkOSMenu::FindSwitchState(evt, "Flip X", NULL)) { | 1574 if (SkOSMenu::FindSwitchState(evt, "Flip X", nullptr)) { |
| 1575 fFlipAxis ^= kFlipAxis_X; | 1575 fFlipAxis ^= kFlipAxis_X; |
| 1576 this->updateMatrix(); | 1576 this->updateMatrix(); |
| 1577 return true; | 1577 return true; |
| 1578 } | 1578 } |
| 1579 if (SkOSMenu::FindSwitchState(evt, "Flip Y", NULL)) { | 1579 if (SkOSMenu::FindSwitchState(evt, "Flip Y", nullptr)) { |
| 1580 fFlipAxis ^= kFlipAxis_Y; | 1580 fFlipAxis ^= kFlipAxis_Y; |
| 1581 this->updateMatrix(); | 1581 this->updateMatrix(); |
| 1582 return true; | 1582 return true; |
| 1583 } | 1583 } |
| 1584 if (SkOSMenu::FindAction(evt,"Save to PDF")) { | 1584 if (SkOSMenu::FindAction(evt,"Save to PDF")) { |
| 1585 this->saveToPdf(); | 1585 this->saveToPdf(); |
| 1586 return true; | 1586 return true; |
| 1587 } | 1587 } |
| 1588 return this->INHERITED::onEvent(evt); | 1588 return this->INHERITED::onEvent(evt); |
| 1589 } | 1589 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1600 query->setString("title", evt.findString(gTitleEvtName)); | 1600 query->setString("title", evt.findString(gTitleEvtName)); |
| 1601 } | 1601 } |
| 1602 SkSafeUnref(view); | 1602 SkSafeUnref(view); |
| 1603 return true; | 1603 return true; |
| 1604 } | 1604 } |
| 1605 if (query->isType("use-fast-text")) { | 1605 if (query->isType("use-fast-text")) { |
| 1606 SkEvent evt(gFastTextEvtName); | 1606 SkEvent evt(gFastTextEvtName); |
| 1607 return curr_view(this)->doQuery(&evt); | 1607 return curr_view(this)->doQuery(&evt); |
| 1608 } | 1608 } |
| 1609 if (query->isType("ignore-window-bitmap")) { | 1609 if (query->isType("ignore-window-bitmap")) { |
| 1610 query->setFast32(this->getGrContext() != NULL); | 1610 query->setFast32(this->getGrContext() != nullptr); |
| 1611 return true; | 1611 return true; |
| 1612 } | 1612 } |
| 1613 return this->INHERITED::onQuery(query); | 1613 return this->INHERITED::onQuery(query); |
| 1614 } | 1614 } |
| 1615 | 1615 |
| 1616 DECLARE_bool(portableFonts); | 1616 DECLARE_bool(portableFonts); |
| 1617 | 1617 |
| 1618 bool SampleWindow::onHandleChar(SkUnichar uni) { | 1618 bool SampleWindow::onHandleChar(SkUnichar uni) { |
| 1619 { | 1619 { |
| 1620 SkView* view = curr_view(this); | 1620 SkView* view = curr_view(this); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1645 break; | 1645 break; |
| 1646 } | 1646 } |
| 1647 | 1647 |
| 1648 if (0xFF != dx && 0xFF != dy) { | 1648 if (0xFF != dx && 0xFF != dy) { |
| 1649 if ((dx | dy) == 0) { | 1649 if ((dx | dy) == 0) { |
| 1650 fScrollTestX = fScrollTestY = 0; | 1650 fScrollTestX = fScrollTestY = 0; |
| 1651 } else { | 1651 } else { |
| 1652 fScrollTestX += dx; | 1652 fScrollTestX += dx; |
| 1653 fScrollTestY += dy; | 1653 fScrollTestY += dy; |
| 1654 } | 1654 } |
| 1655 this->inval(NULL); | 1655 this->inval(nullptr); |
| 1656 return true; | 1656 return true; |
| 1657 } | 1657 } |
| 1658 | 1658 |
| 1659 switch (uni) { | 1659 switch (uni) { |
| 1660 case 27: // ESC | 1660 case 27: // ESC |
| 1661 gAnimTimer.stop(); | 1661 gAnimTimer.stop(); |
| 1662 if (this->sendAnimatePulse()) { | 1662 if (this->sendAnimatePulse()) { |
| 1663 this->inval(NULL); | 1663 this->inval(nullptr); |
| 1664 } | 1664 } |
| 1665 break; | 1665 break; |
| 1666 case ' ': | 1666 case ' ': |
| 1667 gAnimTimer.togglePauseResume(); | 1667 gAnimTimer.togglePauseResume(); |
| 1668 if (this->sendAnimatePulse()) { | 1668 if (this->sendAnimatePulse()) { |
| 1669 this->inval(NULL); | 1669 this->inval(nullptr); |
| 1670 } | 1670 } |
| 1671 break; | 1671 break; |
| 1672 case 'B': | 1672 case 'B': |
| 1673 post_event_to_sink(new SkEvent("PictFileView::toggleBBox"), curr_vie
w(this)); | 1673 post_event_to_sink(new SkEvent("PictFileView::toggleBBox"), curr_vie
w(this)); |
| 1674 // Cannot call updateTitle() synchronously, because the toggleBBox e
vent is still in | 1674 // Cannot call updateTitle() synchronously, because the toggleBBox e
vent is still in |
| 1675 // the queue. | 1675 // the queue. |
| 1676 post_event_to_sink(new SkEvent(gUpdateWindowTitleEvtName), this); | 1676 post_event_to_sink(new SkEvent(gUpdateWindowTitleEvtName), this); |
| 1677 this->inval(NULL); | 1677 this->inval(nullptr); |
| 1678 break; | 1678 break; |
| 1679 case 'D': | 1679 case 'D': |
| 1680 toggleDistanceFieldFonts(); | 1680 toggleDistanceFieldFonts(); |
| 1681 break; | 1681 break; |
| 1682 case 'f': | 1682 case 'f': |
| 1683 // only | 1683 // only |
| 1684 toggleFPS(); | 1684 toggleFPS(); |
| 1685 break; | 1685 break; |
| 1686 case 'F': | 1686 case 'F': |
| 1687 FLAGS_portableFonts ^= true; | 1687 FLAGS_portableFonts ^= true; |
| 1688 this->inval(NULL); | 1688 this->inval(nullptr); |
| 1689 break; | 1689 break; |
| 1690 case 'g': | 1690 case 'g': |
| 1691 fRequestGrabImage = true; | 1691 fRequestGrabImage = true; |
| 1692 this->inval(NULL); | 1692 this->inval(nullptr); |
| 1693 break; | 1693 break; |
| 1694 case 'G': | 1694 case 'G': |
| 1695 gShowGMBounds = !gShowGMBounds; | 1695 gShowGMBounds = !gShowGMBounds; |
| 1696 post_event_to_sink(GMSampleView::NewShowSizeEvt(gShowGMBounds), | 1696 post_event_to_sink(GMSampleView::NewShowSizeEvt(gShowGMBounds), |
| 1697 curr_view(this)); | 1697 curr_view(this)); |
| 1698 this->inval(NULL); | 1698 this->inval(nullptr); |
| 1699 break; | 1699 break; |
| 1700 case 'i': | 1700 case 'i': |
| 1701 this->zoomIn(); | 1701 this->zoomIn(); |
| 1702 break; | 1702 break; |
| 1703 case 'o': | 1703 case 'o': |
| 1704 this->zoomOut(); | 1704 this->zoomOut(); |
| 1705 break; | 1705 break; |
| 1706 case 'r': | 1706 case 'r': |
| 1707 fRotate = !fRotate; | 1707 fRotate = !fRotate; |
| 1708 this->inval(NULL); | 1708 this->inval(nullptr); |
| 1709 this->updateTitle(); | 1709 this->updateTitle(); |
| 1710 return true; | 1710 return true; |
| 1711 case 'k': | 1711 case 'k': |
| 1712 fPerspAnim = !fPerspAnim; | 1712 fPerspAnim = !fPerspAnim; |
| 1713 this->inval(NULL); | 1713 this->inval(nullptr); |
| 1714 this->updateTitle(); | 1714 this->updateTitle(); |
| 1715 return true; | 1715 return true; |
| 1716 case 'K': | 1716 case 'K': |
| 1717 fSaveToSKP = true; | 1717 fSaveToSKP = true; |
| 1718 this->inval(NULL); | 1718 this->inval(nullptr); |
| 1719 return true; | 1719 return true; |
| 1720 #if SK_SUPPORT_GPU | 1720 #if SK_SUPPORT_GPU |
| 1721 case 'p': | 1721 case 'p': |
| 1722 { | 1722 { |
| 1723 GrContext* grContext = this->getGrContext(); | 1723 GrContext* grContext = this->getGrContext(); |
| 1724 if (grContext) { | 1724 if (grContext) { |
| 1725 size_t cacheBytes; | 1725 size_t cacheBytes; |
| 1726 grContext->getResourceCacheUsage(NULL, &cacheBytes); | 1726 grContext->getResourceCacheUsage(nullptr, &cacheBytes); |
| 1727 grContext->freeGpuResources(); | 1727 grContext->freeGpuResources(); |
| 1728 SkDebugf("Purged %d bytes from the GPU resource cache.\n", c
acheBytes); | 1728 SkDebugf("Purged %d bytes from the GPU resource cache.\n", c
acheBytes); |
| 1729 } | 1729 } |
| 1730 } | 1730 } |
| 1731 return true; | 1731 return true; |
| 1732 #endif | 1732 #endif |
| 1733 default: | 1733 default: |
| 1734 break; | 1734 break; |
| 1735 } | 1735 } |
| 1736 | 1736 |
| 1737 if (fAppMenu->handleKeyEquivalent(uni)|| fSlideMenu->handleKeyEquivalent(uni
)) { | 1737 if (fAppMenu->handleKeyEquivalent(uni)|| fSlideMenu->handleKeyEquivalent(uni
)) { |
| 1738 this->onUpdateMenu(fAppMenu); | 1738 this->onUpdateMenu(fAppMenu); |
| 1739 this->onUpdateMenu(fSlideMenu); | 1739 this->onUpdateMenu(fSlideMenu); |
| 1740 return true; | 1740 return true; |
| 1741 } | 1741 } |
| 1742 return this->INHERITED::onHandleChar(uni); | 1742 return this->INHERITED::onHandleChar(uni); |
| 1743 } | 1743 } |
| 1744 | 1744 |
| 1745 void SampleWindow::setDeviceType(DeviceType type) { | 1745 void SampleWindow::setDeviceType(DeviceType type) { |
| 1746 if (type == fDeviceType) | 1746 if (type == fDeviceType) |
| 1747 return; | 1747 return; |
| 1748 | 1748 |
| 1749 fDevManager->tearDownBackend(this); | 1749 fDevManager->tearDownBackend(this); |
| 1750 | 1750 |
| 1751 fDeviceType = type; | 1751 fDeviceType = type; |
| 1752 | 1752 |
| 1753 fDevManager->setUpBackend(this, fMSAASampleCount); | 1753 fDevManager->setUpBackend(this, fMSAASampleCount); |
| 1754 | 1754 |
| 1755 this->updateTitle(); | 1755 this->updateTitle(); |
| 1756 this->inval(NULL); | 1756 this->inval(nullptr); |
| 1757 } | 1757 } |
| 1758 | 1758 |
| 1759 void SampleWindow::toggleSlideshow() { | 1759 void SampleWindow::toggleSlideshow() { |
| 1760 fAnimating = !fAnimating; | 1760 fAnimating = !fAnimating; |
| 1761 this->postAnimatingEvent(); | 1761 this->postAnimatingEvent(); |
| 1762 this->updateTitle(); | 1762 this->updateTitle(); |
| 1763 } | 1763 } |
| 1764 | 1764 |
| 1765 void SampleWindow::toggleRendering() { | 1765 void SampleWindow::toggleRendering() { |
| 1766 this->setDeviceType(cycle_devicetype(fDeviceType)); | 1766 this->setDeviceType(cycle_devicetype(fDeviceType)); |
| 1767 this->updateTitle(); | 1767 this->updateTitle(); |
| 1768 this->inval(NULL); | 1768 this->inval(nullptr); |
| 1769 } | 1769 } |
| 1770 | 1770 |
| 1771 void SampleWindow::toggleFPS() { | 1771 void SampleWindow::toggleFPS() { |
| 1772 fMeasureFPS = !fMeasureFPS; | 1772 fMeasureFPS = !fMeasureFPS; |
| 1773 this->updateTitle(); | 1773 this->updateTitle(); |
| 1774 this->inval(NULL); | 1774 this->inval(nullptr); |
| 1775 } | 1775 } |
| 1776 | 1776 |
| 1777 void SampleWindow::toggleDistanceFieldFonts() { | 1777 void SampleWindow::toggleDistanceFieldFonts() { |
| 1778 SkSurfaceProps props = this->getSurfaceProps(); | 1778 SkSurfaceProps props = this->getSurfaceProps(); |
| 1779 uint32_t flags = props.flags() ^ SkSurfaceProps::kUseDistanceFieldFonts_Flag
; | 1779 uint32_t flags = props.flags() ^ SkSurfaceProps::kUseDistanceFieldFonts_Flag
; |
| 1780 this->setSurfaceProps(SkSurfaceProps(flags, props.pixelGeometry())); | 1780 this->setSurfaceProps(SkSurfaceProps(flags, props.pixelGeometry())); |
| 1781 | 1781 |
| 1782 this->updateTitle(); | 1782 this->updateTitle(); |
| 1783 this->inval(NULL); | 1783 this->inval(nullptr); |
| 1784 } | 1784 } |
| 1785 | 1785 |
| 1786 #include "SkDumpCanvas.h" | 1786 #include "SkDumpCanvas.h" |
| 1787 | 1787 |
| 1788 bool SampleWindow::onHandleKey(SkKey key) { | 1788 bool SampleWindow::onHandleKey(SkKey key) { |
| 1789 { | 1789 { |
| 1790 SkView* view = curr_view(this); | 1790 SkView* view = curr_view(this); |
| 1791 if (view) { | 1791 if (view) { |
| 1792 SkEvent evt(gKeyEvtName); | 1792 SkEvent evt(gKeyEvtName); |
| 1793 evt.setFast32(key); | 1793 evt.setFast32(key); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1840 } | 1840 } |
| 1841 int w = SkScalarRoundToInt(this->width()); | 1841 int w = SkScalarRoundToInt(this->width()); |
| 1842 int h = SkScalarRoundToInt(this->height()); | 1842 int h = SkScalarRoundToInt(this->height()); |
| 1843 | 1843 |
| 1844 // check for the resize-box | 1844 // check for the resize-box |
| 1845 if (w - x < 16 && h - y < 16) { | 1845 if (w - x < 16 && h - y < 16) { |
| 1846 return false; // let the OS handle the click | 1846 return false; // let the OS handle the click |
| 1847 } | 1847 } |
| 1848 else if (fMagnify) { | 1848 else if (fMagnify) { |
| 1849 //it's only necessary to update the drawing if there's a click | 1849 //it's only necessary to update the drawing if there's a click |
| 1850 this->inval(NULL); | 1850 this->inval(nullptr); |
| 1851 return false; //prevent dragging while magnify is enabled | 1851 return false; //prevent dragging while magnify is enabled |
| 1852 } else { | 1852 } else { |
| 1853 // capture control+option, and trigger debugger | 1853 // capture control+option, and trigger debugger |
| 1854 if ((modi & kControl_SkModifierKey) && (modi & kOption_SkModifierKey)) { | 1854 if ((modi & kControl_SkModifierKey) && (modi & kOption_SkModifierKey)) { |
| 1855 if (Click::kDown_State == state) { | 1855 if (Click::kDown_State == state) { |
| 1856 SkEvent evt("debug-hit-test"); | 1856 SkEvent evt("debug-hit-test"); |
| 1857 evt.setS32("debug-hit-test-x", x); | 1857 evt.setS32("debug-hit-test-x", x); |
| 1858 evt.setS32("debug-hit-test-y", y); | 1858 evt.setS32("debug-hit-test-y", y); |
| 1859 curr_view(this)->doEvent(evt); | 1859 curr_view(this)->doEvent(evt); |
| 1860 } | 1860 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1944 static_assert(SK_ARRAY_COUNT(gDeviceTypePrefix) == SampleWindow::kDeviceTypeCnt, | 1944 static_assert(SK_ARRAY_COUNT(gDeviceTypePrefix) == SampleWindow::kDeviceTypeCnt, |
| 1945 "array_size_mismatch"); | 1945 "array_size_mismatch"); |
| 1946 | 1946 |
| 1947 static const char* trystate_str(SkOSMenu::TriState state, | 1947 static const char* trystate_str(SkOSMenu::TriState state, |
| 1948 const char trueStr[], const char falseStr[]) { | 1948 const char trueStr[], const char falseStr[]) { |
| 1949 if (SkOSMenu::kOnState == state) { | 1949 if (SkOSMenu::kOnState == state) { |
| 1950 return trueStr; | 1950 return trueStr; |
| 1951 } else if (SkOSMenu::kOffState == state) { | 1951 } else if (SkOSMenu::kOffState == state) { |
| 1952 return falseStr; | 1952 return falseStr; |
| 1953 } | 1953 } |
| 1954 return NULL; | 1954 return nullptr; |
| 1955 } | 1955 } |
| 1956 | 1956 |
| 1957 bool SampleWindow::getRawTitle(SkString* title) { | 1957 bool SampleWindow::getRawTitle(SkString* title) { |
| 1958 return curr_title(this, title); | 1958 return curr_title(this, title); |
| 1959 } | 1959 } |
| 1960 | 1960 |
| 1961 void SampleWindow::updateTitle() { | 1961 void SampleWindow::updateTitle() { |
| 1962 SkString title; | 1962 SkString title; |
| 1963 if (!this->getRawTitle(&title)) { | 1963 if (!this->getRawTitle(&title)) { |
| 1964 title.set("<unknown>"); | 1964 title.set("<unknown>"); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1982 title.prepend("<K> "); | 1982 title.prepend("<K> "); |
| 1983 } | 1983 } |
| 1984 if (this->getSurfaceProps().flags() & SkSurfaceProps::kUseDistanceFieldFonts
_Flag) { | 1984 if (this->getSurfaceProps().flags() & SkSurfaceProps::kUseDistanceFieldFonts
_Flag) { |
| 1985 title.prepend("<DFF> "); | 1985 title.prepend("<DFF> "); |
| 1986 } | 1986 } |
| 1987 | 1987 |
| 1988 title.prepend(trystate_str(fLCDState, "LCD ", "lcd ")); | 1988 title.prepend(trystate_str(fLCDState, "LCD ", "lcd ")); |
| 1989 title.prepend(trystate_str(fAAState, "AA ", "aa ")); | 1989 title.prepend(trystate_str(fAAState, "AA ", "aa ")); |
| 1990 title.prepend(gFilterQualityStates[fFilterQualityIndex].fLabel); | 1990 title.prepend(gFilterQualityStates[fFilterQualityIndex].fLabel); |
| 1991 title.prepend(trystate_str(fSubpixelState, "S ", "s ")); | 1991 title.prepend(trystate_str(fSubpixelState, "S ", "s ")); |
| 1992 title.prepend(fFlipAxis & kFlipAxis_X ? "X " : NULL); | 1992 title.prepend(fFlipAxis & kFlipAxis_X ? "X " : nullptr); |
| 1993 title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : NULL); | 1993 title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : nullptr); |
| 1994 title.prepend(gHintingStates[fHintingState].label); | 1994 title.prepend(gHintingStates[fHintingState].label); |
| 1995 | 1995 |
| 1996 if (fZoomLevel) { | 1996 if (fZoomLevel) { |
| 1997 title.prependf("{%.2f} ", SkScalarToFloat(fZoomLevel)); | 1997 title.prependf("{%.2f} ", SkScalarToFloat(fZoomLevel)); |
| 1998 } | 1998 } |
| 1999 | 1999 |
| 2000 if (fMeasureFPS) { | 2000 if (fMeasureFPS) { |
| 2001 title.appendf(" %8.4f ms", fMeasureFPS_Time / (float)FPS_REPEAT_COUNT); | 2001 title.appendf(" %8.4f ms", fMeasureFPS_Time / (float)FPS_REPEAT_COUNT); |
| 2002 } | 2002 } |
| 2003 | 2003 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2134 void* fBlock; | 2134 void* fBlock; |
| 2135 size_t fBlockSize; | 2135 size_t fBlockSize; |
| 2136 size_t fBytesWritten; | 2136 size_t fBytesWritten; |
| 2137 int fAtomsWritten; | 2137 int fAtomsWritten; |
| 2138 SkGPipeReader::Status fStatus; | 2138 SkGPipeReader::Status fStatus; |
| 2139 | 2139 |
| 2140 size_t fTotalWritten; | 2140 size_t fTotalWritten; |
| 2141 }; | 2141 }; |
| 2142 | 2142 |
| 2143 SimplePC::SimplePC(SkCanvas* target) : fReader(target) { | 2143 SimplePC::SimplePC(SkCanvas* target) : fReader(target) { |
| 2144 fBlock = NULL; | 2144 fBlock = nullptr; |
| 2145 fBlockSize = fBytesWritten = 0; | 2145 fBlockSize = fBytesWritten = 0; |
| 2146 fStatus = SkGPipeReader::kDone_Status; | 2146 fStatus = SkGPipeReader::kDone_Status; |
| 2147 fTotalWritten = 0; | 2147 fTotalWritten = 0; |
| 2148 fAtomsWritten = 0; | 2148 fAtomsWritten = 0; |
| 2149 fReader.setBitmapDecoder(&SkImageDecoder::DecodeMemory); | 2149 fReader.setBitmapDecoder(&SkImageDecoder::DecodeMemory); |
| 2150 } | 2150 } |
| 2151 | 2151 |
| 2152 SimplePC::~SimplePC() { | 2152 SimplePC::~SimplePC() { |
| 2153 // SkASSERT(SkGPipeReader::kDone_Status == fStatus); | 2153 // SkASSERT(SkGPipeReader::kDone_Status == fStatus); |
| 2154 if (fTotalWritten) { | 2154 if (fTotalWritten) { |
| 2155 SkDebugf("--- %d bytes %d atoms, status %d\n", fTotalWritten, | 2155 SkDebugf("--- %d bytes %d atoms, status %d\n", fTotalWritten, |
| 2156 fAtomsWritten, fStatus); | 2156 fAtomsWritten, fStatus); |
| 2157 #ifdef PIPE_FILE | 2157 #ifdef PIPE_FILE |
| 2158 //File is open in append mode | 2158 //File is open in append mode |
| 2159 FILE* f = fopen(FILE_PATH, "ab"); | 2159 FILE* f = fopen(FILE_PATH, "ab"); |
| 2160 SkASSERT(f != NULL); | 2160 SkASSERT(f != nullptr); |
| 2161 fwrite((const char*)fBlock + fBytesWritten, 1, bytes, f); | 2161 fwrite((const char*)fBlock + fBytesWritten, 1, bytes, f); |
| 2162 fclose(f); | 2162 fclose(f); |
| 2163 #endif | 2163 #endif |
| 2164 #ifdef PIPE_NET | 2164 #ifdef PIPE_NET |
| 2165 if (fAtomsWritten > 1 && fTotalWritten > 4) { //ignore done | 2165 if (fAtomsWritten > 1 && fTotalWritten > 4) { //ignore done |
| 2166 gServer.acceptConnections(); | 2166 gServer.acceptConnections(); |
| 2167 gServer.writePacket(fBlock, fTotalWritten); | 2167 gServer.writePacket(fBlock, fTotalWritten); |
| 2168 } | 2168 } |
| 2169 #endif | 2169 #endif |
| 2170 } | 2170 } |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2334 test_rects(rect, N); | 2334 test_rects(rect, N); |
| 2335 } | 2335 } |
| 2336 } | 2336 } |
| 2337 | 2337 |
| 2338 // FIXME: this should be in a header | 2338 // FIXME: this should be in a header |
| 2339 SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv); | 2339 SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv); |
| 2340 SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv) { | 2340 SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv) { |
| 2341 if (false) { // avoid bit rot, suppress warning | 2341 if (false) { // avoid bit rot, suppress warning |
| 2342 test(); | 2342 test(); |
| 2343 } | 2343 } |
| 2344 return new SampleWindow(hwnd, argc, argv, NULL); | 2344 return new SampleWindow(hwnd, argc, argv, nullptr); |
| 2345 } | 2345 } |
| 2346 | 2346 |
| 2347 // FIXME: this should be in a header | 2347 // FIXME: this should be in a header |
| 2348 void get_preferred_size(int* x, int* y, int* width, int* height); | 2348 void get_preferred_size(int* x, int* y, int* width, int* height); |
| 2349 void get_preferred_size(int* x, int* y, int* width, int* height) { | 2349 void get_preferred_size(int* x, int* y, int* width, int* height) { |
| 2350 *x = 10; | 2350 *x = 10; |
| 2351 *y = 50; | 2351 *y = 50; |
| 2352 *width = 640; | 2352 *width = 640; |
| 2353 *height = 480; | 2353 *height = 480; |
| 2354 } | 2354 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2367 setenv("ANDROID_ROOT", "/android/device/data", 0); | 2367 setenv("ANDROID_ROOT", "/android/device/data", 0); |
| 2368 #endif | 2368 #endif |
| 2369 SkGraphics::Init(); | 2369 SkGraphics::Init(); |
| 2370 SkEvent::Init(); | 2370 SkEvent::Init(); |
| 2371 } | 2371 } |
| 2372 | 2372 |
| 2373 void application_term() { | 2373 void application_term() { |
| 2374 SkEvent::Term(); | 2374 SkEvent::Term(); |
| 2375 SkGraphics::Term(); | 2375 SkGraphics::Term(); |
| 2376 } | 2376 } |
| OLD | NEW |