| /* |
| * Copyright (C) 2011 Skia |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef SampleWindow_DEFINED |
| #define SampleWindow_DEFINED |
| |
| #include "SkWindow.h" |
| |
| #include "SampleCode.h" |
| #include "SkPath.h" |
| #include "SkScalar.h" |
| #include "SkTDArray.h" |
| #include "SkTouchGesture.h" |
| #include "SkWindow.h" |
| |
| class GrContext; |
| |
| class SkEvent; |
| class SkCanvas; |
| class SkGpuCanvas; |
| class SkPicture; |
| class SkTypeface; |
| |
| enum SkTriState { |
| kFalse_SkTriState, |
| kTrue_SkTriState, |
| kUnknown_SkTriState, |
| }; |
| |
| class SampleWindow : public SkOSWindow { |
| SkTDArray<SkViewFactory> fSamples; |
| public: |
| SampleWindow(void* hwnd); |
| virtual ~SampleWindow(); |
| |
| virtual void draw(SkCanvas* canvas); |
| |
| void toggleRendering(); |
| void toggleSlideshow(); |
| void toggleFPS(); |
| bool drawsToHardware() { return fCanvasType == kGPU_CanvasType; } |
| bool setGrContext(GrContext*); |
| GrContext* getGrContext(); |
| void setZoomCenter(float x, float y); |
| void changeZoomLevel(float delta); |
| bool nextSample(); |
| bool previousSample(); |
| |
| protected: |
| virtual void onDraw(SkCanvas* canvas); |
| virtual bool onHandleKey(SkKey key); |
| virtual bool onHandleChar(SkUnichar); |
| virtual void onSizeChange(); |
| |
| virtual SkCanvas* beforeChildren(SkCanvas*); |
| virtual void afterChildren(SkCanvas*); |
| virtual void beforeChild(SkView* child, SkCanvas* canvas); |
| virtual void afterChild(SkView* child, SkCanvas* canvas); |
| |
| virtual bool onEvent(const SkEvent& evt); |
| virtual bool onQuery(SkEvent* evt); |
| |
| virtual bool onDispatchClick(int x, int y, Click::State); |
| virtual bool onClick(Click* click); |
| virtual Click* onFindClickHandler(SkScalar x, SkScalar y); |
| |
| private: |
| int fCurrIndex; |
| |
| SkPicture* fPicture; |
| SkGpuCanvas* fGpuCanvas; |
| GrContext* fGrContext; |
| SkPath fClipPath; |
| |
| SkTouchGesture fGesture; |
| SkScalar fZoomLevel; |
| SkScalar fZoomScale; |
| |
| enum CanvasType { |
| kRaster_CanvasType, |
| kPicture_CanvasType, |
| kGPU_CanvasType |
| }; |
| CanvasType fCanvasType; |
| |
| bool fUseClip; |
| bool fNClip; |
| bool fRepeatDrawing; |
| bool fAnimating; |
| bool fRotate; |
| bool fScale; |
| bool fRequestGrabImage; |
| bool fUsePipe; |
| bool fMeasureFPS; |
| SkMSec fMeasureFPS_Time; |
| |
| // 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. |
| SkTypeface* fTypeface; |
| bool fShowZoomer; |
| |
| SkTriState fLCDState; |
| SkTriState fAAState; |
| SkTriState fFilterState; |
| SkTriState fHintingState; |
| unsigned fFlipAxis; |
| |
| int fScrollTestX, fScrollTestY; |
| SkScalar fZoomCenterX, fZoomCenterY; |
| |
| bool make3DReady(); |
| |
| void loadView(SkView*); |
| void updateTitle(); |
| |
| void toggleZoomer(); |
| bool zoomIn(); |
| bool zoomOut(); |
| void updatePointer(int x, int y); |
| void showZoomer(SkCanvas* canvas); |
| |
| void postAnimatingEvent(); |
| |
| static CanvasType cycle_canvastype(CanvasType); |
| |
| typedef SkOSWindow INHERITED; |
| }; |
| |
| #endif |