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