• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2012 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 
10 #ifndef SKCANVASWIDGET_H_
11 #define SKCANVASWIDGET_H_
12 
13 #include <QWidget>
14 #include <QHBoxLayout>
15 #include "SkStream.h"
16 #include "SkRasterWidget.h"
17 #include "SkGLWidget.h"
18 #include "SkDebugger.h"
19 
20 class SkCanvasWidget : public QWidget {
21     Q_OBJECT
22 
23 public:
24     SkCanvasWidget(QWidget* parent, SkDebugger* debugger);
25 
26     ~SkCanvasWidget();
27 
28     enum WidgetType {
29         kRaster_8888_WidgetType = 1 << 0,
30 #if SK_SUPPORT_GPU
31         kGPU_WidgetType         = 1 << 1,
32 #endif
33     };
34 
35     void drawTo(int index);
36 
37     void setWidgetVisibility(WidgetType type, bool isHidden);
38 
39 #if SK_SUPPORT_GPU
40     void setGLSampleCount(int sampleCount);
41 #endif
42 
43     /** Zooms the canvas by scale with the transformation centered at the widget point (px, py). */
44     void zoom(float scale, int px, int py);
45 
46     void resetWidgetTransform();
47 
48     enum ZoomCommandTypes {
49         kIn_ZoomCommand,
50         kOut_ZoomCommand,
51     };
52 public slots:
53     /**
54      *  Zooms in or out (see ZoomCommandTypes) by the standard zoom factor
55      *  with the transformation centered in the middle of the widget.
56      */
57     void zoom(int zoomCommand);
58 
59 signals:
60     void scaleFactorChanged(float newScaleFactor);
61     void commandChanged(int newCommand);
62     void hitChanged(int hit);
63 
64 private:
65     QHBoxLayout fHorizontalLayout;
66     SkRasterWidget fRasterWidget;
67 #if SK_SUPPORT_GPU
68     SkGLWidget fGLWidget;
69 #endif
70     SkDebugger* fDebugger;
71     SkIPoint fPreviousPoint;
72     SkMatrix fUserMatrix;
73 
74     void mouseMoveEvent(QMouseEvent* event);
75 
76     void mousePressEvent(QMouseEvent* event);
77 
78     void mouseDoubleClickEvent(QMouseEvent* event);
79 
80     void wheelEvent(QWheelEvent* event);
81 
82     void snapWidgetTransform();
83 };
84 
85 
86 #endif /* SKCANVASWIDGET_H_ */
87