virtual void on_draw() { pixfmt pixf(rbuf_window()); renderer_base rb(pixf); renderer_solid r(rb); rb.clear(agg::rgba(1, 1, 1)); agg::trans_warp_magnifier lens; lens.center(g_x1, g_y1); lens.magnification(m_magn_slider.value()); lens.radius(m_radius_slider.value() / m_magn_slider.value()); agg::conv_segmentator<agg::path_storage> segm(g_path); agg::trans_affine mtx; mtx *= agg::trans_affine_translation(-g_base_dx, -g_base_dy); mtx *= agg::trans_affine_rotation(g_angle + agg::pi); mtx *= agg::trans_affine_translation(width()/2, height()/2); agg::conv_transform< agg::conv_segmentator< agg::path_storage> > trans_mtx(segm, mtx); agg::conv_transform< agg::conv_transform< agg::conv_segmentator< agg::path_storage> >, agg::trans_warp_magnifier> trans_lens(trans_mtx, lens); agg::render_all_paths(g_rasterizer, g_scanline, r, trans_lens, g_colors, g_path_idx, g_npaths); agg::render_ctrl(g_rasterizer, g_scanline, rb, m_magn_slider); agg::render_ctrl(g_rasterizer, g_scanline, rb, m_radius_slider); // Testing inverse_transform() //-------------------- //double x, y; //for(y = 0; y < height(); y += 10) //{ // for(x = 0; x < height(); x += 10) // { // double x2 = x+0.5; // double y2 = y+0.5; // lens.transform(&x2, &y2); // lens.inverse_transform(&x2, &y2); // agg::ellipse e(x2, y2, 1, 1); // g_rasterizer.add_path(e); // r.color(agg::rgba8(0,0,0)); // agg::render_scanlines(g_rasterizer, g_scanline, r); // } //} }
virtual void on_draw() { typedef agg::renderer_base<agg::pixfmt_bgr24> ren_base; typedef agg::renderer_scanline_aa_solid<ren_base> renderer; agg::pixfmt_bgr24 pixf(rbuf_window()); ren_base rb(pixf); renderer ren(rb); agg::scanline_u8 sl; rb.clear(agg::rgba(1,1,1)); agg::rasterizer_scanline_aa<> ras; agg::render_ctrl(ras, sl, rb, m_slider1); agg::render_ctrl(ras, sl, rb, m_slider_spiral); agg::render_ctrl(ras, sl, rb, m_slider_base_y); typedef agg::conv_segmentator<agg::slider_ctrl<agg::rgba8> > conv_segmentator_type; typedef agg::conv_transform<conv_segmentator_type, agg::trans_polar> conv_transform_type; agg::trans_polar trans; trans.full_circle(-600); trans.base_scale(-1.0); trans.base_offset(0.0, m_slider_base_y.value()); trans.translation(width() / 2.0, height() / 2.0 + 30.0); trans.spiral(-m_slider_spiral.value()); conv_segmentator_type segm(m_slider1); conv_transform_type pipeline(segm, trans); agg::transformed_control<agg::rgba8, agg::slider_ctrl<agg::rgba8>, conv_transform_type> ctrl(m_slider1, pipeline); agg::render_ctrl(ras, sl, rb, ctrl); }