1902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com/* 3902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Copyright 2012 Google Inc. 4902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * 5902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Use of this source code is governed by a BSD-style license that can be 6902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * found in the LICENSE file. 7902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 8902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 9902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 10ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#ifndef SKCANVASWIDGET_H_ 11ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#define SKCANVASWIDGET_H_ 12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 13ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include <QWidget> 14ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include <QHBoxLayout> 15ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "SkStream.h" 16ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "SkRasterWidget.h" 17ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "SkGLWidget.h" 18607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com#include "SkDebugger.h" 19902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 20902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comclass SkCanvasWidget : public QWidget { 21902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Q_OBJECT 22902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 23902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 24607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkCanvasWidget(QWidget* parent, SkDebugger* debugger); 25902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 262d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com ~SkCanvasWidget(); 27902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 28ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com enum WidgetType { 29ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com kRaster_8888_WidgetType = 1 << 0, 30e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#if SK_SUPPORT_GPU 31ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com kGPU_WidgetType = 1 << 1, 32e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#endif 33ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com }; 34902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 35ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com void drawTo(int index); 36ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 37ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com void setWidgetVisibility(WidgetType type, bool isHidden); 38ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 39fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org#if SK_SUPPORT_GPU 40fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org void setGLSampleCount(int sampleCount); 41fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org#endif 42fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org 43e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com /** Zooms the canvas by scale with the transformation centered at the widget point (px, py). */ 44e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com void zoom(float scale, int px, int py); 45902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 46686e68019374dca3692cac6d5f8d94515e53d6c8chudy@google.com void resetWidgetTransform(); 47686e68019374dca3692cac6d5f8d94515e53d6c8chudy@google.com 48e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com enum ZoomCommandTypes { 49e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com kIn_ZoomCommand, 50e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com kOut_ZoomCommand, 51e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com }; 52e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.compublic slots: 53e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com /** 54e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com * Zooms in or out (see ZoomCommandTypes) by the standard zoom factor 55e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com * with the transformation centered in the middle of the widget. 56e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com */ 57e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com void zoom(int zoomCommand); 58e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com 597dcae67cae277549accdd38d0496b72d00151239chudy@google.comsignals: 607dcae67cae277549accdd38d0496b72d00151239chudy@google.com void scaleFactorChanged(float newScaleFactor); 617dcae67cae277549accdd38d0496b72d00151239chudy@google.com void commandChanged(int newCommand); 62e606d6e210b17dd9dd582d4d3ec70acb4f3213d5chudy@google.com void hitChanged(int hit); 637dcae67cae277549accdd38d0496b72d00151239chudy@google.com 64902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 65ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com QHBoxLayout fHorizontalLayout; 66ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com SkRasterWidget fRasterWidget; 67e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#if SK_SUPPORT_GPU 68ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com SkGLWidget fGLWidget; 69e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#endif 70607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkDebugger* fDebugger; 712f891793957252b0262276c957c67798c905be80chudy@google.com SkIPoint fPreviousPoint; 72e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com SkMatrix fUserMatrix; 73ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 74ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com void mouseMoveEvent(QMouseEvent* event); 75ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 76ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com void mousePressEvent(QMouseEvent* event); 77ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 78ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com void mouseDoubleClickEvent(QMouseEvent* event); 79ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 80e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com void wheelEvent(QWheelEvent* event); 81e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com 82e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com void snapWidgetTransform(); 83902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 84902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 85ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 86ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#endif /* SKCANVASWIDGET_H_ */ 87