aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2014-10-06 12:29:56 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-10-06 12:29:56 -0700
commit4302ae91b0c97993f7b659474a5fd305921cdc5e (patch)
treebab85c4316b7d205deb06e4958fd3aee266c7fed
parent3342d1b5a03e816b0ab1a11bf92d2da0f4b5ca4c (diff)
add surfaceprops to SkWindow, and 'D' to toggle distancefieldfonts
-rw-r--r--include/views/SkWindow.h7
-rw-r--r--samplecode/SampleApp.cpp18
-rw-r--r--samplecode/SampleApp.h1
-rw-r--r--src/views/SkWindow.cpp7
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) {