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

Side by Side Diff: samplecode/SampleApp.cpp

Issue 2120333002: deferred canvas (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: override drawTextRSXform Created 4 years, 5 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
« no previous file with comments | « samplecode/SampleApp.h ('k') | src/utils/SkDeferredCanvas.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 7
8 #include "SampleApp.h" 8 #include "SampleApp.h"
9 9
10 #include "OverView.h" 10 #include "OverView.h"
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 #endif 797 #endif
798 798
799 fUseClip = false; 799 fUseClip = false;
800 fUsePicture = false; 800 fUsePicture = false;
801 fAnimating = false; 801 fAnimating = false;
802 fRotate = false; 802 fRotate = false;
803 fPerspAnim = false; 803 fPerspAnim = false;
804 fRequestGrabImage = false; 804 fRequestGrabImage = false;
805 fTilingMode = kNo_Tiling; 805 fTilingMode = kNo_Tiling;
806 fMeasureFPS = false; 806 fMeasureFPS = false;
807 fUseDeferredCanvas = false;
807 fLCDState = SkOSMenu::kMixedState; 808 fLCDState = SkOSMenu::kMixedState;
808 fAAState = SkOSMenu::kMixedState; 809 fAAState = SkOSMenu::kMixedState;
809 fSubpixelState = SkOSMenu::kMixedState; 810 fSubpixelState = SkOSMenu::kMixedState;
810 fHintingState = 0; 811 fHintingState = 0;
811 fPixelGeometryIndex = 0; 812 fPixelGeometryIndex = 0;
812 fFilterQualityIndex = 0; 813 fFilterQualityIndex = 0;
813 fFlipAxis = 0; 814 fFlipAxis = 0;
814 815
815 fMouseX = fMouseY = 0; 816 fMouseX = fMouseY = 0;
816 fFatBitsScale = 8; 817 fFatBitsScale = 8;
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 paint.setColor(SK_ColorBLACK); 981 paint.setColor(SK_ColorBLACK);
981 canvas->drawText(c_str, size, left + SK_Scalar1, top + SK_Scalar1, paint ); 982 canvas->drawText(c_str, size, left + SK_Scalar1, top + SK_Scalar1, paint );
982 } 983 }
983 paint.setColor(desiredColor); 984 paint.setColor(desiredColor);
984 canvas->drawText(c_str, size, left, top, paint); 985 canvas->drawText(c_str, size, left, top, paint);
985 } 986 }
986 987
987 #define XCLIP_N 8 988 #define XCLIP_N 8
988 #define YCLIP_N 8 989 #define YCLIP_N 8
989 990
991 #include "SkDeferredCanvas.h"
992 #include "SkDumpCanvas.h"
993
990 void SampleWindow::draw(SkCanvas* canvas) { 994 void SampleWindow::draw(SkCanvas* canvas) {
991 gAnimTimer.updateTime(); 995 gAnimTimer.updateTime();
992 996
993 if (fGesture.isActive()) { 997 if (fGesture.isActive()) {
994 this->updateMatrix(); 998 this->updateMatrix();
995 } 999 }
996 1000
997 if (fMeasureFPS) { 1001 if (fMeasureFPS) {
998 fMeasureFPS_Time = 0; 1002 fMeasureFPS_Time = 0;
999 } 1003 }
1000 1004
1001 SkSize tile = this->tileSize(); 1005 SkSize tile = this->tileSize();
1002 1006
1003 if (kNo_Tiling == fTilingMode) { 1007 if (kNo_Tiling == fTilingMode) {
1004 this->INHERITED::draw(canvas); // no looping or surfaces needed 1008 SkDebugfDumper dumper;
1009 SkDumpCanvas dump(&dumper);
1010 SkDeferredCanvas deferred(canvas);
1011 SkCanvas* c = fUseDeferredCanvas ? &deferred : canvas;
1012 this->INHERITED::draw(c); // no looping or surfaces needed
1005 } else { 1013 } else {
1006 const SkScalar w = SkScalarCeilToScalar(tile.width()); 1014 const SkScalar w = SkScalarCeilToScalar(tile.width());
1007 const SkScalar h = SkScalarCeilToScalar(tile.height()); 1015 const SkScalar h = SkScalarCeilToScalar(tile.height());
1008 SkImageInfo info = SkImageInfo::MakeN32Premul(SkScalarTruncToInt(w), SkS calarTruncToInt(h)); 1016 SkImageInfo info = SkImageInfo::MakeN32Premul(SkScalarTruncToInt(w), SkS calarTruncToInt(h));
1009 auto surface(canvas->makeSurface(info)); 1017 auto surface(canvas->makeSurface(info));
1010 SkCanvas* tileCanvas = surface->getCanvas(); 1018 SkCanvas* tileCanvas = surface->getCanvas();
1011 1019
1012 for (SkScalar y = 0; y < height(); y += h) { 1020 for (SkScalar y = 0; y < height(); y += h) {
1013 for (SkScalar x = 0; x < width(); x += w) { 1021 for (SkScalar x = 0; x < width(); x += w) {
1014 SkAutoCanvasRestore acr(tileCanvas, true); 1022 SkAutoCanvasRestore acr(tileCanvas, true);
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
1660 case 'B': 1668 case 'B':
1661 post_event_to_sink(new SkEvent("PictFileView::toggleBBox"), curr_vie w(this)); 1669 post_event_to_sink(new SkEvent("PictFileView::toggleBBox"), curr_vie w(this));
1662 // Cannot call updateTitle() synchronously, because the toggleBBox e vent is still in 1670 // Cannot call updateTitle() synchronously, because the toggleBBox e vent is still in
1663 // the queue. 1671 // the queue.
1664 post_event_to_sink(new SkEvent(gUpdateWindowTitleEvtName), this); 1672 post_event_to_sink(new SkEvent(gUpdateWindowTitleEvtName), this);
1665 this->inval(nullptr); 1673 this->inval(nullptr);
1666 break; 1674 break;
1667 case 'D': 1675 case 'D':
1668 toggleDistanceFieldFonts(); 1676 toggleDistanceFieldFonts();
1669 break; 1677 break;
1678 case 'E':
1679 fUseDeferredCanvas = !fUseDeferredCanvas;
1680 this->inval(nullptr);
1681 break;
1670 case 'f': 1682 case 'f':
1671 // only 1683 // only
1672 toggleFPS(); 1684 toggleFPS();
1673 break; 1685 break;
1674 case 'F': 1686 case 'F':
1675 FLAGS_portableFonts ^= true; 1687 FLAGS_portableFonts ^= true;
1676 this->inval(nullptr); 1688 this->inval(nullptr);
1677 break; 1689 break;
1678 case 'g': 1690 case 'g':
1679 fRequestGrabImage = true; 1691 fRequestGrabImage = true;
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
2013 } 2025 }
2014 if (fPerspAnim) { 2026 if (fPerspAnim) {
2015 title.prepend("<K> "); 2027 title.prepend("<K> ");
2016 } 2028 }
2017 if (this->getSurfaceProps().flags() & SkSurfaceProps::kUseDeviceIndependentF onts_Flag) { 2029 if (this->getSurfaceProps().flags() & SkSurfaceProps::kUseDeviceIndependentF onts_Flag) {
2018 title.prepend("<DIF> "); 2030 title.prepend("<DIF> ");
2019 } 2031 }
2020 if (fUsePicture) { 2032 if (fUsePicture) {
2021 title.prepend("<P> "); 2033 title.prepend("<P> ");
2022 } 2034 }
2035 if (fUseDeferredCanvas) {
2036 title.prepend("<E> ");
2037 }
2023 2038
2024 title.prepend(trystate_str(fLCDState, "LCD ", "lcd ")); 2039 title.prepend(trystate_str(fLCDState, "LCD ", "lcd "));
2025 title.prepend(trystate_str(fAAState, "AA ", "aa ")); 2040 title.prepend(trystate_str(fAAState, "AA ", "aa "));
2026 title.prepend(gFilterQualityStates[fFilterQualityIndex].fLabel); 2041 title.prepend(gFilterQualityStates[fFilterQualityIndex].fLabel);
2027 title.prepend(trystate_str(fSubpixelState, "S ", "s ")); 2042 title.prepend(trystate_str(fSubpixelState, "S ", "s "));
2028 title.prepend(fFlipAxis & kFlipAxis_X ? "X " : nullptr); 2043 title.prepend(fFlipAxis & kFlipAxis_X ? "X " : nullptr);
2029 title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : nullptr); 2044 title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : nullptr);
2030 title.prepend(gHintingStates[fHintingState].label); 2045 title.prepend(gHintingStates[fHintingState].label);
2031 title.prepend(gPixelGeometryStates[fPixelGeometryIndex].label); 2046 title.prepend(gPixelGeometryStates[fPixelGeometryIndex].label);
2032 2047
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
2238 #ifdef SK_BUILD_FOR_MAC 2253 #ifdef SK_BUILD_FOR_MAC
2239 setenv("ANDROID_ROOT", "/android/device/data", 0); 2254 setenv("ANDROID_ROOT", "/android/device/data", 0);
2240 #endif 2255 #endif
2241 SkGraphics::Init(); 2256 SkGraphics::Init();
2242 SkEvent::Init(); 2257 SkEvent::Init();
2243 } 2258 }
2244 2259
2245 void application_term() { 2260 void application_term() {
2246 SkEvent::Term(); 2261 SkEvent::Term();
2247 } 2262 }
OLDNEW
« no previous file with comments | « samplecode/SampleApp.h ('k') | src/utils/SkDeferredCanvas.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698