diff options
author | 2014-10-06 12:29:56 -0700 | |
---|---|---|
committer | 2014-10-06 12:29:56 -0700 | |
commit | 4302ae91b0c97993f7b659474a5fd305921cdc5e (patch) | |
tree | bab85c4316b7d205deb06e4958fd3aee266c7fed | |
parent | 3342d1b5a03e816b0ab1a11bf92d2da0f4b5ca4c (diff) |
add surfaceprops to SkWindow, and 'D' to toggle distancefieldfonts
BUG=skia:
Review URL: https://codereview.chromium.org/631943002
-rw-r--r-- | include/views/SkWindow.h | 7 | ||||
-rw-r--r-- | samplecode/SampleApp.cpp | 18 | ||||
-rw-r--r-- | samplecode/SampleApp.h | 1 | ||||
-rw-r--r-- | src/views/SkWindow.cpp | 7 |
4 files changed, 30 insertions, 3 deletions
diff --git a/include/views/SkWindow.h b/include/views/SkWindow.h index 40cc5ecb31..e18aff3512 100644 --- a/include/views/SkWindow.h +++ b/include/views/SkWindow.h @@ -14,6 +14,7 @@ #include "SkRegion.h" #include "SkEvent.h" #include "SkKey.h" +#include "SkSurfaceProps.h" #include "SkTDArray.h" #ifdef SK_BUILD_FOR_WINCEx @@ -29,6 +30,11 @@ public: SkWindow(); virtual ~SkWindow(); + SkSurfaceProps getSurfaceProps() const { return fSurfaceProps; } + void setSurfaceProps(const SkSurfaceProps& props) { + fSurfaceProps = props; + } + const SkBitmap& getBitmap() const { return fBitmap; } void setColorType(SkColorType); @@ -80,6 +86,7 @@ protected: virtual bool onSetFocusView(SkView* focus); private: + SkSurfaceProps fSurfaceProps; SkColorType fColorType; SkBitmap fBitmap; SkRegion fDirtyRgn; diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp index 6ca67bcbcd..1b766b021b 100644 --- a/samplecode/SampleApp.cpp +++ b/samplecode/SampleApp.cpp @@ -275,7 +275,8 @@ public: SampleWindow* win) SK_OVERRIDE { #if SK_SUPPORT_GPU if (IsGpuDeviceType(dType) && fCurContext) { - return SkSurface::NewRenderTargetDirect(fCurRenderTarget); + SkSurfaceProps props(win->getSurfaceProps()); + return SkSurface::NewRenderTargetDirect(fCurRenderTarget, &props); } #endif return NULL; @@ -1715,6 +1716,9 @@ bool SampleWindow::onHandleChar(SkUnichar uni) { post_event_to_sink(SkNEW_ARGS(SkEvent, (gUpdateWindowTitleEvtName)), this); this->inval(NULL); break; + case 'D': + toggleDistanceFieldFonts(); + break; case 'f': // only toggleFPS(); @@ -1812,6 +1816,15 @@ void SampleWindow::toggleFPS() { this->inval(NULL); } +void SampleWindow::toggleDistanceFieldFonts() { + SkSurfaceProps props = this->getSurfaceProps(); + uint32_t flags = props.flags() ^ SkSurfaceProps::kUseDistanceFieldFonts_Flag; + this->setSurfaceProps(SkSurfaceProps(flags, props.pixelGeometry())); + + this->updateTitle(); + this->inval(NULL); +} + #include "SkDumpCanvas.h" bool SampleWindow::onHandleKey(SkKey key) { @@ -2023,6 +2036,9 @@ void SampleWindow::updateTitle() { if (fPerspAnim) { title.prepend("<K> "); } + if (this->getSurfaceProps().flags() & SkSurfaceProps::kUseDistanceFieldFonts_Flag) { + title.prepend("<DFF> "); + } title.prepend(trystate_str(fLCDState, "LCD ", "lcd ")); title.prepend(trystate_str(fAAState, "AA ", "aa ")); diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h index abb1f24002..2e9a11c2a1 100644 --- a/samplecode/SampleApp.h +++ b/samplecode/SampleApp.h @@ -118,6 +118,7 @@ public: void toggleSlideshow(); void toggleFPS(); void showOverview(); + void toggleDistanceFieldFonts(); GrContext* getGrContext() const { return fDevManager->getGrContext(); } diff --git a/src/views/SkWindow.cpp b/src/views/SkWindow.cpp index 90ef2804e6..7870d06bfe 100644 --- a/src/views/SkWindow.cpp +++ b/src/views/SkWindow.cpp @@ -14,7 +14,10 @@ #define SK_EventDelayInval "\xd" "n" "\xa" "l" -SkWindow::SkWindow() : fFocusView(NULL) { +SkWindow::SkWindow() + : fSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType) + , fFocusView(NULL) +{ fClicks.reset(); fWaitingOnInval = false; @@ -34,7 +37,7 @@ SkWindow::~SkWindow() { SkSurface* SkWindow::createSurface() { const SkBitmap& bm = this->getBitmap(); - return SkSurface::NewRasterDirect(bm.info(), bm.getPixels(), bm.rowBytes()); + return SkSurface::NewRasterDirect(bm.info(), bm.getPixels(), bm.rowBytes(), &fSurfaceProps); } void SkWindow::setMatrix(const SkMatrix& matrix) { |