aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleApp.h
diff options
context:
space:
mode:
Diffstat (limited to 'samplecode/SampleApp.h')
-rw-r--r--samplecode/SampleApp.h282
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