12c8208f3a444098aee562f5a1ef620142807eda2Scroggo/* 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Skia 32c8208f3a444098aee562f5a1ef620142807eda2Scroggo * 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 62c8208f3a444098aee562f5a1ef620142807eda2Scroggo */ 72c8208f3a444098aee562f5a1ef620142807eda2Scroggo 8f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.org#ifndef SampleApp_DEFINED 9f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.org#define SampleApp_DEFINED 10ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 11f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.org#include "SkOSMenu.h" 122c8208f3a444098aee562f5a1ef620142807eda2Scroggo#include "SkPath.h" 1384b18c7e3e042bf206e1ace3d1b6ea5bb929fe51robertphillips@google.com#include "SkPicture.h" 14770963f23f4fc313db0fa3bac18b1b8aafb55f17robertphillips@google.com#include "SkPictureRecorder.h" 152c8208f3a444098aee562f5a1ef620142807eda2Scroggo#include "SkScalar.h" 1654dc4878b02765efea39e68b218df1e4bfff4b88reed#include "SkStream.h" 1738c72151576a6e89b31b0bd4c45a0b01c11641ffjvanverth#include "SkSurface.h" 182c8208f3a444098aee562f5a1ef620142807eda2Scroggo#include "SkTDArray.h" 192c8208f3a444098aee562f5a1ef620142807eda2Scroggo#include "SkTouchGesture.h" 202c8208f3a444098aee562f5a1ef620142807eda2Scroggo#include "SkWindow.h" 214d0d81aec2667cf4dc82971ee42c29c1ec1aeb13jvanverth#include "timer/Timer.h" 222c8208f3a444098aee562f5a1ef620142807eda2Scroggo 2354dc4878b02765efea39e68b218df1e4bfff4b88reed#include "SkPipe.h" 2454dc4878b02765efea39e68b218df1e4bfff4b88reed 25008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton#if SK_SUPPORT_GPU 26008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton#include "GrContextOptions.h" 27008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton#endif 28008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton 292c8208f3a444098aee562f5a1ef620142807eda2Scroggoclass GrContext; 3029038ed2ab5cb87fda5a2a4d3267f0a5aa227a3dreed@google.comclass GrRenderTarget; 312c8208f3a444098aee562f5a1ef620142807eda2Scroggo 322c8208f3a444098aee562f5a1ef620142807eda2Scroggoclass SkCanvas; 33f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.orgclass SkData; 34ddb5eca198736a320b8318eb5f6dfd6d0b6ad1d3reedclass SkDocument; 35f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.orgclass SkEvent; 362c8208f3a444098aee562f5a1ef620142807eda2Scroggoclass SkTypeface; 37f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.orgclass SkViewFactory; 382c8208f3a444098aee562f5a1ef620142807eda2Scroggo 392c8208f3a444098aee562f5a1ef620142807eda2Scroggoclass SampleWindow : public SkOSWindow { 4048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com SkTDArray<const SkViewFactory*> fSamples; 412c8208f3a444098aee562f5a1ef620142807eda2Scroggopublic: 42098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com enum DeviceType { 43098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com kRaster_DeviceType, 44cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#if SK_SUPPORT_GPU 4574913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com kGPU_DeviceType, 46b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com#if SK_ANGLE 47b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com kANGLE_DeviceType, 48cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#endif // SK_ANGLE 49cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#endif // SK_SUPPORT_GPU 50cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com kDeviceTypeCnt 51098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com }; 5282502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com 5382502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com static bool IsGpuDeviceType(DeviceType devType) { 5482502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com #if SK_SUPPORT_GPU 5582502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com switch (devType) { 5682502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com case kGPU_DeviceType: 5782502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com #if SK_ANGLE 5882502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com case kANGLE_DeviceType: 5982502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com #endif // SK_ANGLE 6082502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com return true; 6158c0aaaf1bf51d3a9d5eab8e702946155b953284reed@google.com default: 6258c0aaaf1bf51d3a9d5eab8e702946155b953284reed@google.com return false; 6382502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com } 6482502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com #endif // SK_SUPPORT_GPU 6582502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com return false; 6682502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com } 6782502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com 68098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com /** 69098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com * SampleApp ports can subclass this manager class if they want to: 70098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com * * filter the types of devices supported 711f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com * * customize plugging of SkBaseDevice objects into an SkCanvas 72098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com * * customize publishing the results of draw to the OS window 73098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com * * manage GrContext / GrRenderTarget lifetimes 74098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com */ 75098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com class DeviceManager : public SkRefCnt { 76098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com public: 77008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton struct BackendOptions { 78008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton#if SK_SUPPORT_GPU 79008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton GrContextOptions fGrContextOptions; 80008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton int fMSAASampleCount; 81008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton bool fDeepColor; 82008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton#endif 83008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton }; 849d524f22bfde5dc3dc8f48e1be39bdebd3bb0304halcanary 85008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton virtual void setUpBackend(SampleWindow* win, const BackendOptions&) = 0; 86098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 87b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com virtual void tearDownBackend(SampleWindow* win) = 0; 88098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 89098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // called before drawing. should install correct device 90098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // type on the canvas. Will skip drawing if returns false. 91ecf3dbe8f2987a08b21be1aff61b7fbfbb69640arobertphillips virtual sk_sp<SkSurface> makeSurface(DeviceType dType, SampleWindow* win) = 0; 92098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 93098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // called after drawing, should get the results onto the 94098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // screen. 95098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com virtual void publishCanvas(DeviceType dType, 96098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com SkCanvas* canvas, 97098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com SampleWindow* win) = 0; 98098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 99098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // called when window changes size, guaranteed to be called 100098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // at least once before first draw (after init) 101098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com virtual void windowSizeChanged(SampleWindow* win) = 0; 102098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 10396fcdcc219d2a0d3579719b84b28bede76efba64halcanary // return the GrContext backing gpu devices (nullptr if not built with GPU support) 104b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com virtual GrContext* getGrContext() = 0; 1051195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com 10696fcdcc219d2a0d3579719b84b28bede76efba64halcanary // return the GrRenderTarget backing gpu devices (nullptr if not built with GPU support) 107ecf3dbe8f2987a08b21be1aff61b7fbfbb69640arobertphillips virtual int numColorSamples() const = 0; 1082d1ee7936e3536e45c963db004e3b512bb415fd8brianosman 1092d1ee7936e3536e45c963db004e3b512bb415fd8brianosman // return the color depth of the output device 1102d1ee7936e3536e45c963db004e3b512bb415fd8brianosman virtual int getColorBits() = 0; 1112d1ee7936e3536e45c963db004e3b512bb415fd8brianosman 112a22e2117e44efa4298dd0eb6df304a8166c8e9c3robertphillips@google.com private: 113a22e2117e44efa4298dd0eb6df304a8166c8e9c3robertphillips@google.com typedef SkRefCnt INHERITED; 114098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com }; 115098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 116098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com SampleWindow(void* hwnd, int argc, char** argv, DeviceManager*); 117d3b65972aad96453ff4510caa3e25a2b847c6d1eBrian Salomon ~SampleWindow() override; 1182c8208f3a444098aee562f5a1ef620142807eda2Scroggo 119ecf3dbe8f2987a08b21be1aff61b7fbfbb69640arobertphillips sk_sp<SkSurface> makeSurface() override { 120ecf3dbe8f2987a08b21be1aff61b7fbfbb69640arobertphillips sk_sp<SkSurface> surface; 1215957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com if (fDevManager) { 122ecf3dbe8f2987a08b21be1aff61b7fbfbb69640arobertphillips surface = fDevManager->makeSurface(fDeviceType, this); 1235957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com } 124ecf3dbe8f2987a08b21be1aff61b7fbfbb69640arobertphillips if (!surface) { 125ecf3dbe8f2987a08b21be1aff61b7fbfbb69640arobertphillips surface = this->INHERITED::makeSurface(); 1265957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com } 1270397e9f3415b4646797f1b17e9a38b5deb864ff0reed return surface; 1285957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com } 1295957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com 13036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void draw(SkCanvas*) override; 1312c8208f3a444098aee562f5a1ef620142807eda2Scroggo 132921091f29e2ecfec55f4d1ac5611b4aa4731e7d6yangsu@google.com void setDeviceType(DeviceType type); 133b109b8c5ec40a7dd85a0a2951a1f98fa63b805aabrianosman void setDeviceColorType(SkColorType, sk_sp<SkColorSpace>); 1342c8208f3a444098aee562f5a1ef620142807eda2Scroggo void toggleRendering(); 1352c8208f3a444098aee562f5a1ef620142807eda2Scroggo void toggleSlideshow(); 1362c8208f3a444098aee562f5a1ef620142807eda2Scroggo void toggleFPS(); 137db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com void showOverview(); 1384302ae91b0c97993f7b659474a5fd305921cdc5ereed void toggleDistanceFieldFonts(); 1395a59a422970eb63dd5af6baa797b25fba9dec5bbbungeman void setPixelGeometry(int pixelGeometryIndex); 140098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 141b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com GrContext* getGrContext() const { return fDevManager->getGrContext(); } 142098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 1432c8208f3a444098aee562f5a1ef620142807eda2Scroggo void setZoomCenter(float x, float y); 1442c8208f3a444098aee562f5a1ef620142807eda2Scroggo void changeZoomLevel(float delta); 145ce56026db55d8585c2f920a6107a25b40fd5160abungeman void changeOffset(SkVector delta); 1462c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool nextSample(); 1472c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool previousSample(); 148501775e5ac99f9805d1aba3aa7ca554a83d2dc43yangsu@google.com bool goToSample(int i); 149501775e5ac99f9805d1aba3aa7ca554a83d2dc43yangsu@google.com SkString getSampleTitle(int i); 150501775e5ac99f9805d1aba3aa7ca554a83d2dc43yangsu@google.com int sampleCount(); 151a54e2f61f8d181b95dd1757d405eacf9f6a9d792Scroggo bool handleTouch(int ownerId, float x, float y, 152a54e2f61f8d181b95dd1757d405eacf9f6a9d792Scroggo SkView::Click::State state); 1538ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo void saveToPdf(); 15462b65b0913566381db468277de07e5dd2a9237caScroggo void postInvalDelay(); 1552c8208f3a444098aee562f5a1ef620142807eda2Scroggo 156b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com DeviceType getDeviceType() const { return fDeviceType; } 15735a02a83f5642de3afe88657c3fafd84b7b90735brianosman int getColorConfigIndex() const { return fColorConfigIndex; } 158b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com 1592c8208f3a444098aee562f5a1ef620142807eda2Scroggoprotected: 16036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDraw(SkCanvas* canvas) override; 16136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool onHandleKey(SkKey key) override; 16236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool onHandleChar(SkUnichar) override; 16336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onSizeChange() override; 1644d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com 16536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkCanvas* beforeChildren(SkCanvas*) override; 16636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void afterChildren(SkCanvas*) override; 16736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void beforeChild(SkView* child, SkCanvas* canvas) override; 1684d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com 16936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool onEvent(const SkEvent& evt) override; 17036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool onQuery(SkEvent* evt) override; 1714d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com 1724d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual bool onDispatchClick(int x, int y, Click::State, void* owner, 17336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein unsigned modi) override; 17436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool onClick(Click* click) override; 1754d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual Click* onFindClickHandler(SkScalar x, SkScalar y, 17636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein unsigned modi) override; 1772c8208f3a444098aee562f5a1ef620142807eda2Scroggo 1782c8208f3a444098aee562f5a1ef620142807eda2Scroggoprivate: 179098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com class DefaultDeviceManager; 180098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 1812c8208f3a444098aee562f5a1ef620142807eda2Scroggo int fCurrIndex; 1822c8208f3a444098aee562f5a1ef620142807eda2Scroggo 18354dc4878b02765efea39e68b218df1e4bfff4b88reed std::unique_ptr<SkDynamicMemoryWStream> fPipeStream; 18454dc4878b02765efea39e68b218df1e4bfff4b88reed SkPipeSerializer fPipeSerializer; 18554dc4878b02765efea39e68b218df1e4bfff4b88reed SkPipeDeserializer fPipeDeserializer; 18654dc4878b02765efea39e68b218df1e4bfff4b88reed 18784b18c7e3e042bf206e1ace3d1b6ea5bb929fe51robertphillips@google.com SkPictureRecorder fRecorder; 188145dbcd165d9d27298eb8888bc240e2d06a95464Ben Wagner std::unique_ptr<SkCanvas> fFlagsFilterCanvas; 1892c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkPath fClipPath; 1902c8208f3a444098aee562f5a1ef620142807eda2Scroggo 1912c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkTouchGesture fGesture; 1922c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkScalar fZoomLevel; 1932c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkScalar fZoomScale; 194ce56026db55d8585c2f920a6107a25b40fd5160abungeman SkVector fOffset; 1952c8208f3a444098aee562f5a1ef620142807eda2Scroggo 196098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com DeviceType fDeviceType; 197098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com DeviceManager* fDevManager; 1982c8208f3a444098aee562f5a1ef620142807eda2Scroggo 1998ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo bool fSaveToPdf; 200093b4e8f51ab3432cc22ae506a2bd036d5716c98reed bool fSaveToSKP; 201676ab68b04597c997e3152f31c08090c0d2ccbe4halcanary sk_sp<SkDocument> fPDFDocument; 2028ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo 2032c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fUseClip; 20491b4dfbb2fe995db8404fe881a99d4d3d36fee71reed bool fUsePicture; 2052c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fAnimating; 2062c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fRotate; 207e8f091093509d946a7f6722b40033a3dc946dc0fbsalomon@google.com bool fPerspAnim; 2082c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fRequestGrabImage; 2092c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fMeasureFPS; 210babc3de2ce7c2f7b32b1b6b9f36d2ac4a4d8dee1reed bool fUseDeferredCanvas; 2114d0d81aec2667cf4dc82971ee42c29c1ec1aeb13jvanverth WallTimer fTimer; 2124d0d81aec2667cf4dc82971ee42c29c1ec1aeb13jvanverth double fMeasureFPS_Time; 213db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com bool fMagnify; 214cc63b32eb8702bfa4d965fa443cf00fc1c1d10b7commit-bot@chromium.org int fTilingMode; 2154605a3f3ff8fa2072f98e6bcb71bc43d4c6196d6chudy@google.com 2162c8208f3a444098aee562f5a1ef620142807eda2Scroggo // The following are for the 'fatbits' drawing 2172c8208f3a444098aee562f5a1ef620142807eda2Scroggo // Latest position of the mouse. 2182c8208f3a444098aee562f5a1ef620142807eda2Scroggo int fMouseX, fMouseY; 2192c8208f3a444098aee562f5a1ef620142807eda2Scroggo int fFatBitsScale; 2202c8208f3a444098aee562f5a1ef620142807eda2Scroggo // Used by the text showing position and color values. 22113b9c95295f4c5732e34574789e721a6bc08f7b4bungeman sk_sp<SkTypeface> fTypeface; 2222c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fShowZoomer; 2234605a3f3ff8fa2072f98e6bcb71bc43d4c6196d6chudy@google.com 224db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com SkOSMenu::TriState fLCDState; 225db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com SkOSMenu::TriState fAAState; 22696aabc850835f6d08a117c0277be93848ddbf785bungeman@google.com SkOSMenu::TriState fSubpixelState; 22796aabc850835f6d08a117c0277be93848ddbf785bungeman@google.com int fHintingState; 2285a59a422970eb63dd5af6baa797b25fba9dec5bbbungeman int fPixelGeometryIndex; 22993a1215fe0ab007ce941c721f1fd3e9dcb5d4754reed int fFilterQualityIndex; 2302c8208f3a444098aee562f5a1ef620142807eda2Scroggo unsigned fFlipAxis; 2312c8208f3a444098aee562f5a1ef620142807eda2Scroggo 232008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton DeviceManager::BackendOptions fBackendOptions; 233008b9d80ab9adbf2656eceaf54d11cd15e4dda05csmartdalton 23435a02a83f5642de3afe88657c3fafd84b7b90735brianosman int fColorConfigIndex; 2351195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com 2362c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkScalar fZoomCenterX, fZoomCenterY; 2372c8208f3a444098aee562f5a1ef620142807eda2Scroggo 238921091f29e2ecfec55f4d1ac5611b4aa4731e7d6yangsu@google.com //Stores global settings 2397dadc748d96fdf6c1eadc960f1481807d2ac90cfscroggo@google.com SkOSMenu* fAppMenu; // We pass ownership to SkWindow, when we call addMenu 240921091f29e2ecfec55f4d1ac5611b4aa4731e7d6yangsu@google.com //Stores slide specific settings 2417dadc748d96fdf6c1eadc960f1481807d2ac90cfscroggo@google.com SkOSMenu* fSlideMenu; // We pass ownership to SkWindow, when we call addMenu 2427dadc748d96fdf6c1eadc960f1481807d2ac90cfscroggo@google.com 2432c8208f3a444098aee562f5a1ef620142807eda2Scroggo void loadView(SkView*); 2442c8208f3a444098aee562f5a1ef620142807eda2Scroggo void updateTitle(); 245ddb5eca198736a320b8318eb5f6dfd6d0b6ad1d3reed bool getRawTitle(SkString*); 2462c8208f3a444098aee562f5a1ef620142807eda2Scroggo 2472c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool zoomIn(); 2482c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool zoomOut(); 2492c8208f3a444098aee562f5a1ef620142807eda2Scroggo void updatePointer(int x, int y); 250db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com void magnify(SkCanvas* canvas); 2512c8208f3a444098aee562f5a1ef620142807eda2Scroggo void showZoomer(SkCanvas* canvas); 252f03bb566e25ace918f8fdda3cb8426626a00894creed@google.com void updateMatrix(); 2532c8208f3a444098aee562f5a1ef620142807eda2Scroggo void postAnimatingEvent(); 2546f6e8c39a7b07f8a916a60ad27f17bd13f3c89admike@reedtribe.org int findByTitle(const char*); 2557265e725555098637498db2f397623d7991ceb4brobertphillips@google.com void listTitles(); 256bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org SkSize tileSize() const; 257d9adfe6a223955bc69c8c7661ab8e0a078afbc32reed bool sendAnimatePulse(); 2582c8208f3a444098aee562f5a1ef620142807eda2Scroggo 2592c8208f3a444098aee562f5a1ef620142807eda2Scroggo typedef SkOSWindow INHERITED; 2602c8208f3a444098aee562f5a1ef620142807eda2Scroggo}; 2612c8208f3a444098aee562f5a1ef620142807eda2Scroggo 2622c8208f3a444098aee562f5a1ef620142807eda2Scroggo#endif 263