Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

component_rendering.cpp

Go to the documentation of this file.
00001 #include "agg_basics.h"
00002 #include "agg_rendering_buffer.h"
00003 #include "agg_rasterizer_scanline_aa.h"
00004 #include "agg_scanline_p.h"
00005 #include "agg_renderer_scanline.h"
00006 #include "agg_ellipse.h"
00007 #include "agg_pixfmt_gray.h"
00008 #include "agg_pixfmt_rgb.h"
00009 #include "ctrl/agg_slider_ctrl.h"
00010 #include "platform/agg_platform_support.h"
00011 
00012 enum flip_y_e { flip_y = true };
00013 
00014 
00015 class the_application : public agg::platform_support
00016 {
00017     agg::slider_ctrl<agg::rgba8> m_alpha;
00018 
00019 public:
00020     the_application(agg::pix_format_e format, bool flip_y) :
00021         agg::platform_support(format, flip_y),
00022         m_alpha(5, 5, 320-5, 10+5, !flip_y)
00023     {
00024         m_alpha.label("Alpha=%1.0f");
00025         m_alpha.range(0, 255);
00026         m_alpha.value(255);
00027         add_ctrl(m_alpha);
00028     }
00029 
00030     virtual void on_draw()
00031     {
00032         agg::pixfmt_bgr24 pf(rbuf_window());
00033 
00034         typedef agg::pixfmt_alpha_blend_gray<agg::blender_gray8, agg::rendering_buffer, 3, 2> pixfmt_gray8_bgr24r;
00035         typedef agg::pixfmt_alpha_blend_gray<agg::blender_gray8, agg::rendering_buffer, 3, 1> pixfmt_gray8_bgr24g;
00036         typedef agg::pixfmt_alpha_blend_gray<agg::blender_gray8, agg::rendering_buffer, 3, 0> pixfmt_gray8_bgr24b;
00037 
00038         pixfmt_gray8_bgr24r pfr(rbuf_window());
00039         pixfmt_gray8_bgr24g pfg(rbuf_window());
00040         pixfmt_gray8_bgr24b pfb(rbuf_window());
00041 
00042         agg::renderer_base<agg::pixfmt_bgr24>   rbase(pf);
00043         agg::renderer_base<pixfmt_gray8_bgr24r> rbr(pfr);
00044         agg::renderer_base<pixfmt_gray8_bgr24g> rbg(pfg);
00045         agg::renderer_base<pixfmt_gray8_bgr24b> rbb(pfb);
00046 
00047         agg::rasterizer_scanline_aa<> ras;
00048         agg::scanline_p8 sl;
00049 
00050         rbase.clear(agg::rgba(1,1,1));
00051 
00052         agg::ellipse er(width() / 2 - 0.87*50, height() / 2 - 0.5*50, 100, 100, 100);
00053         ras.add_path(er);
00054         agg::render_scanlines_aa_solid(ras, sl, rbr,
00055                                        agg::gray8(0, unsigned(m_alpha.value())));
00056         
00057         agg::ellipse eg(width() / 2 + 0.87*50, height() / 2 - 0.5*50, 100, 100, 100);
00058         ras.add_path(eg);
00059         agg::render_scanlines_aa_solid(ras, sl, rbg, 
00060                                        agg::gray8(0, unsigned(m_alpha.value())));
00061 
00062         agg::ellipse eb(width() / 2, height() / 2 + 50, 100, 100, 100);
00063         ras.add_path(eb);
00064         agg::render_scanlines_aa_solid(ras, sl, rbb,
00065                                        agg::gray8(0, unsigned(m_alpha.value())));
00066 
00067         agg::render_ctrl(ras, sl, rbase, m_alpha);
00068     }
00069 
00070 };
00071 
00072 
00073 
00074 int agg_main(int argc, char* argv[])
00075 {
00076     the_application app(agg::pix_format_bgr24, flip_y);
00077     app.caption("AGG Example. Component Rendering");
00078 
00079     if(app.init(320, 320, 0))
00080     {
00081         return app.run();
00082     }
00083     return 1;
00084 }
00085 
00086 

© sourcejam.com 2005-2008