SkCanvasWidget.h revision 607357fde8a9c4c70549d4223e0bd1181b012e0e
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
20class SkCanvasWidget : public QWidget {
21    Q_OBJECT
22
23public:
24    SkCanvasWidget(QWidget* parent, SkDebugger* debugger);
25
26    ~SkCanvasWidget();
27
28    enum WidgetType {
29        kRaster_8888_WidgetType = 1 << 0,
30        kGPU_WidgetType         = 1 << 1,
31    };
32
33    void drawTo(int index);
34
35    void setWidgetVisibility(WidgetType type, bool isHidden);
36
37    void zoom(float zoomIncrement);
38
39signals:
40    void scaleFactorChanged(float newScaleFactor);
41    void commandChanged(int newCommand);
42    void hitChanged(int hit);
43
44private slots:
45    void keyZoom(int zoomIncrement) {
46        zoom(zoomIncrement);
47    }
48
49private:
50    QHBoxLayout fHorizontalLayout;
51    SkRasterWidget fRasterWidget;
52    SkGLWidget fGLWidget;
53    SkDebugger* fDebugger;
54    SkIPoint fPreviousPoint;
55    SkIPoint fUserOffset;
56    float fUserScaleFactor;
57
58    void resetWidgetTransform();
59
60    void mouseMoveEvent(QMouseEvent* event);
61
62    void mousePressEvent(QMouseEvent* event);
63
64    void mouseDoubleClickEvent(QMouseEvent* event);
65
66    void wheelEvent(QWheelEvent* event) {
67        zoom(event->delta()/120);
68    }
69};
70
71
72#endif /* SKCANVASWIDGET_H_ */
73