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