SkCanvasWidget.h revision 686e68019374dca3692cac6d5f8d94515e53d6c8
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
39    void resetWidgetTransform();
40
41signals:
42    void scaleFactorChanged(float newScaleFactor);
43    void commandChanged(int newCommand);
44    void hitChanged(int hit);
45
46private slots:
47    void keyZoom(int zoomIncrement) {
48        zoom(zoomIncrement);
49    }
50
51private:
52    QHBoxLayout fHorizontalLayout;
53    SkRasterWidget fRasterWidget;
54    SkGLWidget fGLWidget;
55    SkDebugger* fDebugger;
56    SkIPoint fPreviousPoint;
57    SkIPoint fUserOffset;
58    float fUserScaleFactor;
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