• Home
  • History
  • Annotate
  • 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