Gnash  0.8.11dev
fb_glue_agg.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
3 // 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_FB_GLUE_AGG_H
20 #define GNASH_FB_GLUE_AGG_H
21 
22 #ifdef HAVE_CONFIG_H
23 #include "gnashconfig.h"
24 #endif
25 
26 #include <boost/cstdint.hpp>
27 #include <boost/shared_ptr.hpp>
28 
29 #include "Renderer.h"
30 #include "fbsup.h"
31 #include "fb_glue.h"
32 
33 namespace gnash {
34 
35 namespace gui {
36 
37 class FBAggGlue: public FBGlue
38 {
39 public:
40  FBAggGlue();
41 
42  // This constructor is not part of the API, as it's AGG and
43  // Framebuffer specific
44  FBAggGlue(int fd);
45 
46  // All of these virtuals are all defined in the base FBGlue class
47  ~FBAggGlue();
48 
55  bool init(int argc, char ***argv);
56 
59 
62  void prepDrawingArea(void *drawing_area);
63 
65  //
79  // does not need to be implemented (optional feature),
80  // but still needs to be available.
81  //
82  void setInvalidatedRegion(const SWFRect& bounds);
83  void setInvalidatedRegions(const InvalidatedRanges &ranges);
84 
88  int width();
89 
92  int height();
93 
95  void render();
96  void render(void* const /* region */) { };
97 
98  size_t getWidth() { return (_device) ? _device->getWidth() : 0; };
99  size_t getHeight() { return (_device) ? _device->getWidth() : 0; };
100  size_t getDepth() { return (_device) ? _device->getDepth() : 0; };
101 
102 protected:
104  int _fd;
105  struct fb_fix_screeninfo _fixinfo;
106  struct fb_var_screeninfo _varinfo;
107 
108  boost::scoped_ptr<Renderer> _renderer;
109 
111  std::vector< geometry::Range2d<int> > _drawbounds;
112 };
113 
114 } // end of namespace gui
115 } // end of gnash namespace
116 
117 #endif // GNASH_FB_GLUE_AGG_H
118 
119 // Local Variables:
120 // mode: C++
121 // indent-tabs-mode: nil
122 // End: