diff options
Diffstat (limited to 'samplecode/SampleApp.h')
-rw-r--r-- | samplecode/SampleApp.h | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h deleted file mode 100644 index 9f7b5dbd71..0000000000 --- a/samplecode/SampleApp.h +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright 2011 Skia - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SampleApp_DEFINED -#define SampleApp_DEFINED - -#include "SkExecutor.h" -#include "SkOSMenu.h" -#include "SkPath.h" -#include "SkPicture.h" -#include "SkPictureRecorder.h" -#include "SkScalar.h" -#include "SkStream.h" -#include "SkSurface.h" -#include "SkTDArray.h" -#include "SkTouchGesture.h" -#include "SkWindow.h" -#include "timer/Timer.h" - -#include "SkPipe.h" - -#if SK_SUPPORT_GPU -#include "GrContextOptions.h" -#endif - -class GrContext; -class GrRenderTarget; - -class SkCanvas; -class SkData; -class SkDocument; -class SkEvent; -class SkTypeface; -class SkViewFactory; - -class SampleWindow : public SkOSWindow { - SkTDArray<const SkViewFactory*> fSamples; -public: - enum DeviceType { - kRaster_DeviceType, -#if SK_SUPPORT_GPU - kGPU_DeviceType, -#if SK_ANGLE - kANGLE_DeviceType, -#endif // SK_ANGLE -#endif // SK_SUPPORT_GPU - kDeviceTypeCnt - }; - - static bool IsGpuDeviceType(DeviceType devType) { - #if SK_SUPPORT_GPU - switch (devType) { - case kGPU_DeviceType: - #if SK_ANGLE - case kANGLE_DeviceType: - #endif // SK_ANGLE - return true; - default: - return false; - } - #endif // SK_SUPPORT_GPU - return false; - } - - /** - * SampleApp ports can subclass this manager class if they want to: - * * filter the types of devices supported - * * customize plugging of SkBaseDevice objects into an SkCanvas - * * customize publishing the results of draw to the OS window - * * manage GrContext / GrRenderTarget lifetimes - */ - class DeviceManager : public SkRefCnt { - public: - struct BackendOptions { -#if SK_SUPPORT_GPU - GrContextOptions fGrContextOptions; - int fMSAASampleCount; - bool fDeepColor; -#endif - }; - - virtual void setUpBackend(SampleWindow* win, const BackendOptions&) = 0; - - virtual void tearDownBackend(SampleWindow* win) = 0; - - // called before drawing. should install correct device - // type on the canvas. Will skip drawing if returns false. - virtual sk_sp<SkSurface> makeSurface(DeviceType dType, SampleWindow* win) = 0; - - // called after drawing, should get the results onto the - // screen. - virtual void publishCanvas(DeviceType dType, - SkCanvas* canvas, - SampleWindow* win) = 0; - - // called when window changes size, guaranteed to be called - // at least once before first draw (after init) - virtual void windowSizeChanged(SampleWindow* win) = 0; - - // return the GrContext backing gpu devices (nullptr if not built with GPU support) - virtual GrContext* getGrContext() = 0; - - // return the GrRenderTarget backing gpu devices (nullptr if not built with GPU support) - virtual int numColorSamples() const = 0; - - // return the color depth of the output device - virtual int getColorBits() = 0; - - private: - typedef SkRefCnt INHERITED; - }; - - SampleWindow(void* hwnd, int argc, char** argv, DeviceManager*); - ~SampleWindow() override; - - sk_sp<SkSurface> makeSurface() override { - sk_sp<SkSurface> surface; - if (fDevManager) { - surface = fDevManager->makeSurface(fDeviceType, this); - } - if (!surface) { - surface = this->INHERITED::makeSurface(); - } - return surface; - } - - void draw(SkCanvas*) override; - - void setDeviceType(DeviceType type); - void setDeviceColorType(SkColorType, sk_sp<SkColorSpace>); - void toggleRendering(); - void toggleSlideshow(); - void toggleFPS(); - void resetFPS(); - void showOverview(); - void toggleDistanceFieldFonts(); - void setPixelGeometry(int pixelGeometryIndex); - - GrContext* getGrContext() const { return fDevManager->getGrContext(); } - - void setZoomCenter(float x, float y); - void changeZoomLevel(float delta); - void changeOffset(SkVector delta); - bool nextSample(); - bool previousSample(); - bool goToSample(int i); - SkString getSampleTitle(int i); - int sampleCount(); - bool handleTouch(int ownerId, float x, float y, - SkView::Click::State state); - void saveToPdf(); - void postInvalDelay(); - - DeviceType getDeviceType() const { return fDeviceType; } - int getColorConfigIndex() const { return fColorConfigIndex; } - - int getTiles() const { return fTiles; } - void setTiles(int tiles) { fTiles = tiles; this->resetExecutor(); } - int getThreads() const { return fThreads; } - void setThreads(int threads) { fThreads = threads; this->resetExecutor(); } - - -protected: - void onDraw(SkCanvas* canvas) override; - bool onHandleKey(SkKey key) override; - bool onHandleChar(SkUnichar) override; - void onSizeChange() override; - - SkCanvas* beforeChildren(SkCanvas*) override; - void afterChildren(SkCanvas*) override; - void beforeChild(SkView* child, SkCanvas* canvas) override; - - bool onEvent(const SkEvent& evt) override; - bool onQuery(SkEvent* evt) override; - - virtual bool onDispatchClick(int x, int y, Click::State, void* owner, - unsigned modi) override; - bool onClick(Click* click) override; - virtual Click* onFindClickHandler(SkScalar x, SkScalar y, - unsigned modi) override; - -private: - class DefaultDeviceManager; - - int fCurrIndex; - - std::unique_ptr<SkDynamicMemoryWStream> fPipeStream; - SkPipeSerializer fPipeSerializer; - SkPipeDeserializer fPipeDeserializer; - - SkPictureRecorder fRecorder; - std::unique_ptr<SkCanvas> fFlagsFilterCanvas; - SkPath fClipPath; - - SkTouchGesture fGesture; - SkScalar fZoomLevel; - SkScalar fZoomScale; - SkVector fOffset; - - DeviceType fDeviceType; - DeviceManager* fDevManager; - - bool fSaveToPdf; - bool fSaveToSKP; - sk_sp<SkDocument> fPDFDocument; - - bool fUseClip; - bool fUsePicture; - bool fAnimating; - bool fRotate; - bool fPerspAnim; - bool fRequestGrabImage; - bool fMeasureFPS; - bool fUseDeferredCanvas; - WallTimer fTimer; - double fMeasureFPS_Time; - double fCumulativeFPS_Time; - int fCumulativeFPS_Count; - bool fMagnify; - int fTilingMode; - - // The following are for the 'fatbits' drawing - // Latest position of the mouse. - int fMouseX, fMouseY; - int fFatBitsScale; - // Used by the text showing position and color values. - sk_sp<SkTypeface> fTypeface; - bool fShowZoomer; - - SkOSMenu::TriState fLCDState; - SkOSMenu::TriState fAAState; - SkOSMenu::TriState fSubpixelState; - int fHintingState; - int fPixelGeometryIndex; - int fFilterQualityIndex; - unsigned fFlipAxis; - - DeviceManager::BackendOptions fBackendOptions; - - int fColorConfigIndex; - - SkScalar fZoomCenterX, fZoomCenterY; - - //Stores global settings - SkOSMenu* fAppMenu; // We pass ownership to SkWindow, when we call addMenu - //Stores slide specific settings - SkOSMenu* fSlideMenu; // We pass ownership to SkWindow, when we call addMenu - - int fTiles = 0; - int fThreads = 0; - std::unique_ptr<SkExecutor> fExecutor; - - int fMeasureMS; // the number of milliseconds to measure the FPS before we close the SampleApp - - void loadView(SkView*); - void updateTitle(); - bool getRawTitle(SkString*); - - bool zoomIn(); - bool zoomOut(); - void updatePointer(int x, int y); - void magnify(SkCanvas* canvas); - void showZoomer(SkCanvas* canvas); - void updateMatrix(); - void postAnimatingEvent(); - int findByTitle(const char*); - void listTitles(); - SkSize tileSize() const; - bool sendAnimatePulse(); - - void resetExecutor() { - fExecutor = SkExecutor::MakeFIFOThreadPool(fThreads == 0 ? fTiles : fThreads); - } - - typedef SkOSWindow INHERITED; -}; - -#endif |