1 // 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 3 // 2011 Free Software Foundation, Inc 4 // 5 // This program is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation; either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with this program; if not, write to the Free Software 17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 19 #ifndef GNASH_KDE4_CAIRO_GLUE_H 20 #define GNASH_KDE4_CAIRO_GLUE_H 21 22 23 #ifdef HAVE_CONFIG_H 24 #include "gnashconfig.h" 25 #endif 26 27 #include "Qt4Glue.h" 28 29 #include <memory> // for unique_ptr 30 #include <QImage> 31 #include <QPainter> 32 #include "snappingrange.h" 33 34 #include <cairo.h> 35 36 class QRect; 37 38 namespace gnash 39 { 40 41 class Qt4CairoGlue : public Qt4Glue 42 { 43 public: 44 Qt4CairoGlue(); 45 ~Qt4CairoGlue(); 46 47 bool init(int argc, char **argv[]); 48 void initBuffer(int width, int height); 49 void prepDrawingArea(DrawingWidget *drawing_area); 50 Renderer* createRenderHandler(); 51 void render(); 52 void render(const QRect& updateRect); 53 void resize(int width, int height); 54 55 private: 56 int _width; 57 int _height; 58 std::unique_ptr<unsigned char[]> _offscreenbuf; 59 Renderer* _renderer; // We don't own this pointer. 60 std::unique_ptr<QImage> _image; 61 std::unique_ptr<QPainter> _painter; 62 63 cairo_t *_cairo_handle; 64 cairo_surface_t *_cairo_surface; 65 }; 66 67 68 } 69 70 #endif 71