1ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
2ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com/*
3ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com * Copyright 2012 Google Inc.
4ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com *
5ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com * Use of this source code is governed by a BSD-style license that can be
6ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com * found in the LICENSE file.
7ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com */
8ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
9ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
10ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#ifndef SKGLWIDGET_H_
11ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#define SKGLWIDGET_H_
12ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
13e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#if SK_SUPPORT_GPU
14e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com
15ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include <QtOpenGL/QGLWidget>
16ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "SkDebugCanvas.h"
17607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com#include "SkDebugger.h"
18ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "SkDevice.h"
19ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "SkGpuDevice.h"
20ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "GrContext.h"
21ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "gl/GrGLInterface.h"
22ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "gl/GrGLUtil.h"
23ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#include "GrRenderTarget.h"
24ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
25ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.comclass SkGLWidget : public QGLWidget {
26a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.comQ_OBJECT
27ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
28ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.compublic:
29607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com    SkGLWidget(SkDebugger* debugger);
30ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
31ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    ~SkGLWidget();
32ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
33607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com    void draw() {
34ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com        this->updateGL();
35ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    }
36fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org    void setSampleCount(int sampleCount);
37ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
38a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.comsignals:
39a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    void drawComplete();
40a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com
41ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.comprotected:
42ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    void initializeGL();
43ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    void resizeGL(int w, int h);
44ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    void paintGL();
45ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
46ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
47ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.comprivate:
48ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    const GrGLInterface* fCurIntf;
49ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    GrContext* fCurContext;
50ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    SkGpuDevice* fGpuDevice;
51ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    SkCanvas* fCanvas;
52607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com    SkDebugger* fDebugger;
5316e3ddea6a80972aced04b21b1d66377fa95e7c7bsalomon@google.com    GrBackendRenderTargetDesc getDesc(int w, int h);
54ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com};
55ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
56e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#endif /* SK_SUPPORT_GPU */
57e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com
58ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com#endif /* SKGLWIDGET_H_ */
59