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" 162c8208f3a444098aee562f5a1ef620142807eda2Scroggo#include "SkTDArray.h" 172c8208f3a444098aee562f5a1ef620142807eda2Scroggo#include "SkTouchGesture.h" 182c8208f3a444098aee562f5a1ef620142807eda2Scroggo#include "SkWindow.h" 192c8208f3a444098aee562f5a1ef620142807eda2Scroggo 202c8208f3a444098aee562f5a1ef620142807eda2Scroggoclass GrContext; 2129038ed2ab5cb87fda5a2a4d3267f0a5aa227a3dreed@google.comclass GrRenderTarget; 222c8208f3a444098aee562f5a1ef620142807eda2Scroggo 232c8208f3a444098aee562f5a1ef620142807eda2Scroggoclass SkCanvas; 24f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.orgclass SkData; 25f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.orgclass SkEvent; 262c8208f3a444098aee562f5a1ef620142807eda2Scroggoclass SkTypeface; 27f726a1c9e6efad526eba603be9f24b4b77b993ebtfarina@chromium.orgclass SkViewFactory; 282c8208f3a444098aee562f5a1ef620142807eda2Scroggo 292c8208f3a444098aee562f5a1ef620142807eda2Scroggoclass SampleWindow : public SkOSWindow { 3048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com SkTDArray<const SkViewFactory*> fSamples; 312c8208f3a444098aee562f5a1ef620142807eda2Scroggopublic: 32098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com enum DeviceType { 33098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com kRaster_DeviceType, 34098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com kPicture_DeviceType, 35cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#if SK_SUPPORT_GPU 3674913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com kGPU_DeviceType, 37b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com#if SK_ANGLE 38b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com kANGLE_DeviceType, 39cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#endif // SK_ANGLE 40cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com kNullGPU_DeviceType, 41cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#endif // SK_SUPPORT_GPU 42cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com 43cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com kDeviceTypeCnt 44098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com }; 4582502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com 4682502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com static bool IsGpuDeviceType(DeviceType devType) { 4782502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com #if SK_SUPPORT_GPU 4882502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com switch (devType) { 4982502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com case kGPU_DeviceType: 5082502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com #if SK_ANGLE 5182502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com case kANGLE_DeviceType: 5282502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com #endif // SK_ANGLE 5382502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com case kNullGPU_DeviceType: 5482502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com return true; 5558c0aaaf1bf51d3a9d5eab8e702946155b953284reed@google.com default: 5658c0aaaf1bf51d3a9d5eab8e702946155b953284reed@google.com return false; 5782502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com } 5882502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com #endif // SK_SUPPORT_GPU 5982502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com return false; 6082502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com } 6182502e2e3966a9b0e48665f20154eaacd2a452b3bsalomon@google.com 62098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com /** 63098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com * SampleApp ports can subclass this manager class if they want to: 64098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com * * filter the types of devices supported 651f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com * * customize plugging of SkBaseDevice objects into an SkCanvas 66098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com * * customize publishing the results of draw to the OS window 67098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com * * manage GrContext / GrRenderTarget lifetimes 68098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com */ 69098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com class DeviceManager : public SkRefCnt { 70098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com public: 71a22e2117e44efa4298dd0eb6df304a8166c8e9c3robertphillips@google.com SK_DECLARE_INST_COUNT(DeviceManager) 72a22e2117e44efa4298dd0eb6df304a8166c8e9c3robertphillips@google.com 731195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com virtual void setUpBackend(SampleWindow* win, int msaaSampleCount) = 0; 74098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 75b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com virtual void tearDownBackend(SampleWindow* win) = 0; 76098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 77098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // called before drawing. should install correct device 78098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // type on the canvas. Will skip drawing if returns false. 790397e9f3415b4646797f1b17e9a38b5deb864ff0reed virtual SkSurface* createSurface(DeviceType dType, SampleWindow* win) = 0; 80098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 81098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // called after drawing, should get the results onto the 82098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // screen. 83098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com virtual void publishCanvas(DeviceType dType, 84098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com SkCanvas* canvas, 85098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com SampleWindow* win) = 0; 86098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 87098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // called when window changes size, guaranteed to be called 88098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com // at least once before first draw (after init) 89098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com virtual void windowSizeChanged(SampleWindow* win) = 0; 90098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 91cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com // return the GrContext backing gpu devices (NULL if not built with GPU support) 92b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com virtual GrContext* getGrContext() = 0; 931195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com 94cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com // return the GrRenderTarget backing gpu devices (NULL if not built with GPU support) 951195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com virtual GrRenderTarget* getGrRenderTarget() = 0; 96a22e2117e44efa4298dd0eb6df304a8166c8e9c3robertphillips@google.com private: 97a22e2117e44efa4298dd0eb6df304a8166c8e9c3robertphillips@google.com typedef SkRefCnt INHERITED; 98098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com }; 99098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 100098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com SampleWindow(void* hwnd, int argc, char** argv, DeviceManager*); 1012c8208f3a444098aee562f5a1ef620142807eda2Scroggo virtual ~SampleWindow(); 1022c8208f3a444098aee562f5a1ef620142807eda2Scroggo 1030397e9f3415b4646797f1b17e9a38b5deb864ff0reed virtual SkSurface* createSurface() SK_OVERRIDE { 1040397e9f3415b4646797f1b17e9a38b5deb864ff0reed SkSurface* surface = NULL; 1055957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com if (fDevManager) { 1060397e9f3415b4646797f1b17e9a38b5deb864ff0reed surface = fDevManager->createSurface(fDeviceType, this); 1075957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com } 1080397e9f3415b4646797f1b17e9a38b5deb864ff0reed if (NULL == surface) { 1090397e9f3415b4646797f1b17e9a38b5deb864ff0reed surface = this->INHERITED::createSurface(); 1105957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com } 1110397e9f3415b4646797f1b17e9a38b5deb864ff0reed return surface; 1125957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com } 1135957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com 1140397e9f3415b4646797f1b17e9a38b5deb864ff0reed virtual void draw(SkCanvas*) SK_OVERRIDE; 1152c8208f3a444098aee562f5a1ef620142807eda2Scroggo 116921091f29e2ecfec55f4d1ac5611b4aa4731e7d6yangsu@google.com void setDeviceType(DeviceType type); 1172c8208f3a444098aee562f5a1ef620142807eda2Scroggo void toggleRendering(); 1182c8208f3a444098aee562f5a1ef620142807eda2Scroggo void toggleSlideshow(); 1192c8208f3a444098aee562f5a1ef620142807eda2Scroggo void toggleFPS(); 120db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com void showOverview(); 121098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 122b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com GrContext* getGrContext() const { return fDevManager->getGrContext(); } 123098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 1242c8208f3a444098aee562f5a1ef620142807eda2Scroggo void setZoomCenter(float x, float y); 1252c8208f3a444098aee562f5a1ef620142807eda2Scroggo void changeZoomLevel(float delta); 1262c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool nextSample(); 1272c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool previousSample(); 128501775e5ac99f9805d1aba3aa7ca554a83d2dc43yangsu@google.com bool goToSample(int i); 129501775e5ac99f9805d1aba3aa7ca554a83d2dc43yangsu@google.com SkString getSampleTitle(int i); 130501775e5ac99f9805d1aba3aa7ca554a83d2dc43yangsu@google.com int sampleCount(); 131a54e2f61f8d181b95dd1757d405eacf9f6a9d792Scroggo bool handleTouch(int ownerId, float x, float y, 132a54e2f61f8d181b95dd1757d405eacf9f6a9d792Scroggo SkView::Click::State state); 1338ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo void saveToPdf(); 134501775e5ac99f9805d1aba3aa7ca554a83d2dc43yangsu@google.com SkData* getPDFData() { return fPDFData; } 13562b65b0913566381db468277de07e5dd2a9237caScroggo void postInvalDelay(); 1362c8208f3a444098aee562f5a1ef620142807eda2Scroggo 137b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com DeviceType getDeviceType() const { return fDeviceType; } 138b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com 1392c8208f3a444098aee562f5a1ef620142807eda2Scroggoprotected: 1404d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE; 1414d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual bool onHandleKey(SkKey key) SK_OVERRIDE; 1424d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual bool onHandleChar(SkUnichar) SK_OVERRIDE; 1434d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual void onSizeChange() SK_OVERRIDE; 1444d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com 1454d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual SkCanvas* beforeChildren(SkCanvas*) SK_OVERRIDE; 1464d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual void afterChildren(SkCanvas*) SK_OVERRIDE; 1474d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual void beforeChild(SkView* child, SkCanvas* canvas) SK_OVERRIDE; 1484d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual void afterChild(SkView* child, SkCanvas* canvas) SK_OVERRIDE; 1494d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com 1504d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual bool onEvent(const SkEvent& evt) SK_OVERRIDE; 1514d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual bool onQuery(SkEvent* evt) SK_OVERRIDE; 1524d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com 1534d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual bool onDispatchClick(int x, int y, Click::State, void* owner, 1544d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com unsigned modi) SK_OVERRIDE; 1554d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual bool onClick(Click* click) SK_OVERRIDE; 1564d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual Click* onFindClickHandler(SkScalar x, SkScalar y, 1574d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com unsigned modi) SK_OVERRIDE; 1582c8208f3a444098aee562f5a1ef620142807eda2Scroggo 1592c8208f3a444098aee562f5a1ef620142807eda2Scroggoprivate: 160098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com class DefaultDeviceManager; 161098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com 1622c8208f3a444098aee562f5a1ef620142807eda2Scroggo int fCurrIndex; 1632c8208f3a444098aee562f5a1ef620142807eda2Scroggo 16484b18c7e3e042bf206e1ace3d1b6ea5bb929fe51robertphillips@google.com SkPictureRecorder fRecorder; 1652c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkPath fClipPath; 1662c8208f3a444098aee562f5a1ef620142807eda2Scroggo 1672c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkTouchGesture fGesture; 1682c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkScalar fZoomLevel; 1692c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkScalar fZoomScale; 1702c8208f3a444098aee562f5a1ef620142807eda2Scroggo 171098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com DeviceType fDeviceType; 172098e96df6ab0327f18537c7006ff2b0b4116ee30bsalomon@google.com DeviceManager* fDevManager; 1732c8208f3a444098aee562f5a1ef620142807eda2Scroggo 1748ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo bool fSaveToPdf; 1758ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo SkCanvas* fPdfCanvas; 176501775e5ac99f9805d1aba3aa7ca554a83d2dc43yangsu@google.com SkData* fPDFData; 1778ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo 1782c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fUseClip; 1792c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fNClip; 1802c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fAnimating; 1812c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fRotate; 182b17859133aeb0ebe80805fbd437759e2b956d859bungeman@google.com SkScalar fRotateAnimTime; 183e8f091093509d946a7f6722b40033a3dc946dc0fbsalomon@google.com bool fPerspAnim; 184e8f091093509d946a7f6722b40033a3dc946dc0fbsalomon@google.com SkScalar fPerspAnimTime; 1852c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fRequestGrabImage; 1862c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fMeasureFPS; 1872c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkMSec fMeasureFPS_Time; 188796763e0b2c06a7789185322561a1135e5484688djsollen@google.com SkMSec fMeasureFPS_StartTime; 189db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com bool fMagnify; 190cc63b32eb8702bfa4d965fa443cf00fc1c1d10b7commit-bot@chromium.org int fTilingMode; 1914605a3f3ff8fa2072f98e6bcb71bc43d4c6196d6chudy@google.com 1924605a3f3ff8fa2072f98e6bcb71bc43d4c6196d6chudy@google.com 193b073d920c90bc95f6c216327acd321a4fc809bfascroggo@google.com SkOSMenu::TriState fPipeState; // Mixed uses a tiled pipe 194b073d920c90bc95f6c216327acd321a4fc809bfascroggo@google.com // On uses a normal pipe 195b073d920c90bc95f6c216327acd321a4fc809bfascroggo@google.com // Off uses no pipe 196ef7bdfac618f60e9edc9f42cd4661d563937e6d8yangsu@google.com int fUsePipeMenuItemID; 1974605a3f3ff8fa2072f98e6bcb71bc43d4c6196d6chudy@google.com 1982c8208f3a444098aee562f5a1ef620142807eda2Scroggo // The following are for the 'fatbits' drawing 1992c8208f3a444098aee562f5a1ef620142807eda2Scroggo // Latest position of the mouse. 2002c8208f3a444098aee562f5a1ef620142807eda2Scroggo int fMouseX, fMouseY; 2012c8208f3a444098aee562f5a1ef620142807eda2Scroggo int fFatBitsScale; 2022c8208f3a444098aee562f5a1ef620142807eda2Scroggo // Used by the text showing position and color values. 2032c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkTypeface* fTypeface; 2042c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool fShowZoomer; 2054605a3f3ff8fa2072f98e6bcb71bc43d4c6196d6chudy@google.com 206db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com SkOSMenu::TriState fLCDState; 207db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com SkOSMenu::TriState fAAState; 20896aabc850835f6d08a117c0277be93848ddbf785bungeman@google.com SkOSMenu::TriState fSubpixelState; 20996aabc850835f6d08a117c0277be93848ddbf785bungeman@google.com int fHintingState; 21015bc13d20fe79914c7128881e45064becd11bc9dreed@google.com int fFilterLevelIndex; 2112c8208f3a444098aee562f5a1ef620142807eda2Scroggo unsigned fFlipAxis; 2122c8208f3a444098aee562f5a1ef620142807eda2Scroggo 2131195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com int fMSAASampleCount; 2141195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com 2152c8208f3a444098aee562f5a1ef620142807eda2Scroggo int fScrollTestX, fScrollTestY; 2162c8208f3a444098aee562f5a1ef620142807eda2Scroggo SkScalar fZoomCenterX, fZoomCenterY; 2172c8208f3a444098aee562f5a1ef620142807eda2Scroggo 218921091f29e2ecfec55f4d1ac5611b4aa4731e7d6yangsu@google.com //Stores global settings 2197dadc748d96fdf6c1eadc960f1481807d2ac90cfscroggo@google.com SkOSMenu* fAppMenu; // We pass ownership to SkWindow, when we call addMenu 220921091f29e2ecfec55f4d1ac5611b4aa4731e7d6yangsu@google.com //Stores slide specific settings 2217dadc748d96fdf6c1eadc960f1481807d2ac90cfscroggo@google.com SkOSMenu* fSlideMenu; // We pass ownership to SkWindow, when we call addMenu 2227dadc748d96fdf6c1eadc960f1481807d2ac90cfscroggo@google.com 223db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com int fTransitionNext; 224db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com int fTransitionPrev; 2257dadc748d96fdf6c1eadc960f1481807d2ac90cfscroggo@google.com 2262c8208f3a444098aee562f5a1ef620142807eda2Scroggo void loadView(SkView*); 2272c8208f3a444098aee562f5a1ef620142807eda2Scroggo void updateTitle(); 2282c8208f3a444098aee562f5a1ef620142807eda2Scroggo 2292c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool zoomIn(); 2302c8208f3a444098aee562f5a1ef620142807eda2Scroggo bool zoomOut(); 2312c8208f3a444098aee562f5a1ef620142807eda2Scroggo void updatePointer(int x, int y); 232db03eaa37111a63835ab7f61cb550971e609a621yangsu@google.com void magnify(SkCanvas* canvas); 2332c8208f3a444098aee562f5a1ef620142807eda2Scroggo void showZoomer(SkCanvas* canvas); 234f03bb566e25ace918f8fdda3cb8426626a00894creed@google.com void updateMatrix(); 2352c8208f3a444098aee562f5a1ef620142807eda2Scroggo void postAnimatingEvent(); 236e23f194bf9747267b9dd42e238dfe217ed585c03reed@google.com void installDrawFilter(SkCanvas*); 2376f6e8c39a7b07f8a916a60ad27f17bd13f3c89admike@reedtribe.org int findByTitle(const char*); 2387265e725555098637498db2f397623d7991ceb4brobertphillips@google.com void listTitles(); 239bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org SkSize tileSize() const; 2402c8208f3a444098aee562f5a1ef620142807eda2Scroggo 2412c8208f3a444098aee562f5a1ef620142807eda2Scroggo typedef SkOSWindow INHERITED; 2422c8208f3a444098aee562f5a1ef620142807eda2Scroggo}; 2432c8208f3a444098aee562f5a1ef620142807eda2Scroggo 2442c8208f3a444098aee562f5a1ef620142807eda2Scroggo#endif 245