the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_quad1(4, 5.0), m_quad2(4, 5.0), m_trans_type(420, 5.0, 420+130.0, 145.0, !flip_y), m_reset (350, 5.0, "Reset", !flip_y), m_mul1 (5.0, 5.0, 340.0, 12.0, !flip_y), m_mul2 (5.0, 20.0, 340.0, 27.0, !flip_y) { m_trans_type.add_item("Union"); m_trans_type.add_item("Intersection"); m_trans_type.add_item("Linear XOR"); m_trans_type.add_item("Saddle XOR"); m_trans_type.add_item("Abs Diff XOR"); m_trans_type.add_item("A-B"); m_trans_type.add_item("B-A"); m_trans_type.cur_item(0); add_ctrl(m_trans_type); add_ctrl(m_reset); add_ctrl(m_mul1); add_ctrl(m_mul2); m_mul1.value(1.0); m_mul2.value(1.0); m_mul1.label("Opacity1=%.3f"); m_mul2.label("Opacity2=%.3f"); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_polygons (5.0, 5.0, 5.0+205.0, 110.0, !flip_y), m_operation(555.0, 5.0, 555.0+80.0, 55.0, !flip_y), m_alpha_buf(0), m_alpha_mask_rbuf(), m_alpha_mask(m_alpha_mask_rbuf), m_x(0), m_y(0) { m_operation.add_item("AND"); m_operation.add_item("SUB"); m_operation.cur_item(0); add_ctrl(m_operation); m_operation.no_transform(); m_polygons.add_item("Two Simple Paths"); m_polygons.add_item("Closed Stroke"); m_polygons.add_item("Great Britain and Arrows"); m_polygons.add_item("Great Britain and Spiral"); m_polygons.add_item("Spiral and Glyph"); m_polygons.cur_item(3); add_ctrl(m_polygons); m_polygons.no_transform(); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_quad(4, 5.0), m_trans_type(460, 5.0, 420+170.0, 60.0, !flip_y), m_test_flag(false) { m_trans_type.text_size(8); m_trans_type.text_thickness(1); m_trans_type.add_item("Affine"); m_trans_type.add_item("Bilinear"); m_trans_type.add_item("Perspective"); m_trans_type.cur_item(2); add_ctrl(m_trans_type); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_type(-1, -1, -1, -1, !flip_y), m_width(110+80, 8.0, 110+200.0+80, 8.0 + 7.0, !flip_y), m_benchmark(110+200+80+8, 8.0-2.0, "Benchmark", !flip_y), m_draw_nodes(110+200+80+8, 8.0-2.0+15.0, "Draw Nodes", !flip_y), m_draw_edges(200+200+80+8, 8.0-2.0+15.0, "Draw Edges", !flip_y), m_draft(200+200+80+8, 8.0-2.0, "Draft Mode", !flip_y), m_translucent(110+80, 8.0-2.0+15.0, "Translucent Mode", !flip_y), m_graph(200, 100), m_gradient_colors(), m_draw(3) { add_ctrl(m_type); m_type.text_size(8.0); m_type.add_item("Solid lines"); m_type.add_item("Bezier curves"); m_type.add_item("Dashed curves"); m_type.add_item("Poygons AA"); m_type.add_item("Poygons Bin"); m_type.cur_item(0); add_ctrl(m_width); m_width.num_steps(20); m_width.range(0.0, 5.0); m_width.value(2.0); m_width.label("Width=%1.2f"); m_benchmark.text_size(8.0); m_draw_nodes.text_size(8.0); m_draft.text_size(8.0); m_draw_nodes.status(true); m_draw_edges.status(true); add_ctrl(m_benchmark); add_ctrl(m_draw_nodes); add_ctrl(m_draw_edges); add_ctrl(m_draft); add_ctrl(m_translucent); agg::rgba c1(1, 1, 0, 0.25); agg::rgba c2(0, 0, 1); int i; for(i = 0; i < 256; i++) { m_gradient_colors[i] = c1.gradient(c2, double(i) / 255.0); } }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_angle (5, 5, 150, 12, !flip_y), m_scale (5, 5+15, 150, 12+15, !flip_y), m_period (5+170, 5, 150+170, 12, !flip_y), m_amplitude (5+170, 5+15, 150+170, 12+15, !flip_y), m_distortion(480, 5, 600, 90, !flip_y), m_center_x(0.0), m_center_y(0.0), m_phase(0.0) { add_ctrl(m_angle); add_ctrl(m_scale); add_ctrl(m_amplitude); add_ctrl(m_period); add_ctrl(m_distortion); m_angle.label("Angle=%3.2f"); m_scale.label("Scale=%3.2f"); m_angle.range(-180.0, 180.0); m_angle.value(20.0); m_scale.range(0.1, 5.0); m_scale.value(1.0); m_amplitude.label("Amplitude=%3.2f"); m_period.label("Period=%3.2f"); m_amplitude.range(0.1, 40.0); m_period.range(0.1, 2.0); m_amplitude.value(10.0); m_period.value(1.0); m_distortion.add_item("Wave"); m_distortion.add_item("Swirl"); m_distortion.add_item("Wave-Swirl"); m_distortion.add_item("Swirl-Wave"); m_distortion.cur_item(0); unsigned i; const agg::int8u* p = g_gradient_colors; for(i = 0; i < 256; i++) { m_gradient_colors[i] = agg::rgba8(p[0], p[1], p[2], p[3]); p += 4; } }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_close (10.0, 10.0, 130.0, 80.0, !flip_y), m_width (130 + 10.0, 10.0 + 4.0, 130 + 300.0, 10.0 + 8.0 + 4.0, !flip_y), m_auto_detect(130 + 10.0, 10.0 + 4.0 + 16.0, "Autodetect orientation if not defined", !flip_y) { add_ctrl(m_close); m_close.add_item("Close"); m_close.add_item("Close CW"); m_close.add_item("Close CCW"); m_close.cur_item(0); add_ctrl(m_width); m_width.range(-100.0, 100.0); m_width.value(0.0); m_width.label("Width=%1.2f"); add_ctrl(m_auto_detect); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_quad(4, 5.0), m_trans_type(420, 5.0, 420+130.0, 55.0, !flip_y) { parse_lion(); m_quad.xn(0) = g_x1; m_quad.yn(0) = g_y1; m_quad.xn(1) = g_x2; m_quad.yn(1) = g_y1; m_quad.xn(2) = g_x2; m_quad.yn(2) = g_y2; m_quad.xn(3) = g_x1; m_quad.yn(3) = g_y2; m_trans_type.add_item("Bilinear"); m_trans_type.add_item("Perspective"); m_trans_type.cur_item(0); add_ctrl(m_trans_type); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_gamma_lut(2.0), m_quad(4, 5.0), m_trans_type(400, 5.0, 430+170.0, 100.0, !flip_y), m_gamma(5.0, 5.0+15*0, 400-5, 10.0+15*0, !flip_y), m_blur (5.0, 5.0+15*1, 400-5, 10.0+15*1, !flip_y), m_old_gamma(2.0) { m_trans_type.text_size(7); m_trans_type.add_item("Affine No Resample"); m_trans_type.add_item("Affine Resample"); m_trans_type.add_item("Perspective No Resample LERP"); m_trans_type.add_item("Perspective No Resample Exact"); m_trans_type.add_item("Perspective Resample LERP"); m_trans_type.add_item("Perspective Resample Exact"); m_trans_type.cur_item(4); add_ctrl(m_trans_type); m_gamma.range(0.5, 3.0); m_gamma.value(2.0); m_gamma.label("Gamma=%.3f"); add_ctrl(m_gamma); m_blur.range(0.5, 5.0); m_blur.value(1.0); m_blur.label("Blur=%.3f"); add_ctrl(m_blur); }
//------------------------------------------------------------------------ the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_polygon_angle(5, 5, 145, 11, !flip_y), m_polygon_scale(5, 5+14, 145, 12+14, !flip_y), m_image_angle (155, 5, 300, 12, !flip_y), m_image_scale (155, 5+14, 300, 12+14, !flip_y), m_rotate_polygon(5, 5+14+14, "Rotate Polygon", !flip_y), m_rotate_image (5, 5+14+14+14, "Rotate Image", !flip_y), m_example(-3.0, 14+14+14+14, -3.0, 14+14+14+14, !flip_y), m_flag(0) { add_ctrl(m_polygon_angle); add_ctrl(m_polygon_scale); add_ctrl(m_image_angle); add_ctrl(m_image_scale); add_ctrl(m_rotate_polygon); add_ctrl(m_rotate_image); add_ctrl(m_example); m_polygon_angle.label("Polygon Angle=%3.2f"); m_polygon_scale.label("Polygon Scale=%3.2f"); m_polygon_angle.range(-180.0, 180.0); m_polygon_scale.range(0.1, 5.0); m_polygon_scale.value(1.0); m_image_angle.label("Image Angle=%3.2f"); m_image_scale.label("Image Scale=%3.2f"); m_image_angle.range(-180.0, 180.0); m_image_scale.range(0.1, 5.0); m_image_scale.value(1.0); m_example.add_item("0"); m_example.add_item("1"); m_example.add_item("2"); m_example.add_item("3"); m_example.add_item("4"); m_example.add_item("5"); m_example.add_item("6"); m_example.cur_item(0); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_idx(-1), m_cap(10.0, 10.0, 130.0, 80.0, !flip_y), m_width(130 + 10.0, 10.0 + 4.0, 130 + 150.0, 10.0 + 8.0 + 4.0, !flip_y), m_smooth(130 + 150.0 + 10.0, 10.0 + 4.0, 500 - 10.0, 10.0 + 8.0 + 4.0, !flip_y), m_close(130 + 10.0, 10.0 + 4.0 + 16.0, "Close Polygons", !flip_y), m_even_odd(130 + 150.0 + 10.0, 10.0 + 4.0 + 16.0, "Even-Odd Fill", !flip_y) { m_x[0] = 57 + 100; m_y[0] = 60; m_x[1] = 369 + 100; m_y[1] = 170; m_x[2] = 143 + 100; m_y[2] = 310; add_ctrl(m_cap); m_cap.add_item("Butt Cap"); m_cap.add_item("Square Cap"); m_cap.add_item("Round Cap"); m_cap.cur_item(0); m_cap.no_transform(); add_ctrl(m_width); m_width.range(0.0, 10.0); m_width.value(3.0); m_width.label("Width=%1.2f"); m_width.no_transform(); add_ctrl(m_smooth); m_smooth.range(0.0, 2.0); m_smooth.value(1.0); m_smooth.label("Smooth=%1.2f"); m_smooth.no_transform(); add_ctrl(m_close); m_close.no_transform(); add_ctrl(m_even_odd); m_even_odd.no_transform(); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_polygons (5.0, 5.0, 5.0+205.0, 110.0, !flip_y), m_operation(555.0, 5.0, 555.0+80.0, 130.0, !flip_y) { m_operation.add_item("None"); m_operation.add_item("OR"); m_operation.add_item("AND"); m_operation.add_item("XOR"); m_operation.add_item("A-B"); m_operation.add_item("B-A"); m_operation.cur_item(2); add_ctrl(m_operation); m_polygons.add_item("Two Simple Paths"); m_polygons.add_item("Closed Stroke"); m_polygons.add_item("Great Britain and Arrows"); m_polygons.add_item("Great Britain and Spiral"); m_polygons.add_item("Spiral and Glyph"); m_polygons.cur_item(3); add_ctrl(m_polygons); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_idx(-1), m_join(10.0, 10.0, 133.0, 80.0, !flip_y), m_cap(10.0, 80.0 + 10.0, 133.0, 80.0 + 80.0, !flip_y), m_width(130 + 10.0, 10.0 + 4.0, 500.0 - 10.0, 10.0 + 8.0 + 4.0, !flip_y), m_miter_limit(130 + 10.0, 20.0 + 10.0 + 4.0, 500.0 - 10.0, 20.0 + 10.0 + 8.0 + 4.0, !flip_y) { m_x[0] = 57 + 100; m_y[0] = 60; m_x[1] = 369 + 100; m_y[1] = 170; m_x[2] = 143 + 100; m_y[2] = 310; add_ctrl(m_join); m_join.text_size(7.5); m_join.text_thickness(1.0); m_join.add_item("Miter Join"); m_join.add_item("Miter Join Revert"); m_join.add_item("Round Join"); m_join.add_item("Bevel Join"); m_join.cur_item(2); add_ctrl(m_cap); m_cap.add_item("Butt Cap"); m_cap.add_item("Square Cap"); m_cap.add_item("Round Cap"); m_cap.cur_item(2); add_ctrl(m_width); m_width.range(3.0, 40.0); m_width.value(20.0); m_width.label("Width=%1.2f"); add_ctrl(m_miter_limit); m_miter_limit.range(1.0, 10.0); m_miter_limit.value(4.0); m_miter_limit.label("Miter Limit=%1.2f"); m_join.no_transform(); m_cap.no_transform(); m_width.no_transform(); m_miter_limit.no_transform(); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_gamma (115, 5, 500-5, 11, !flip_y), m_radius(115, 5+15, 500-5, 11+15, !flip_y), m_filters(0.0, 0.0, 110.0, 210.0, !flip_y), m_normalize (8.0, 215.0, "Normalize Filter", !flip_y), m_cur_angle(0.0), m_cur_filter(1), m_num_steps(0), m_num_pix(0.0), m_time1(0), m_time2(0) { add_ctrl(m_gamma); add_ctrl(m_radius); add_ctrl(m_filters); add_ctrl(m_normalize); m_normalize.text_size(7.5); m_normalize.status(true); m_radius.label("Filter Radius=%.3f"); m_radius.range(2.0, 8.0); m_radius.value(4.0); m_gamma.label("Gamma=%.3f"); m_gamma.range(0.5, 3.0); m_gamma.value(1.0); m_filters.add_item("simple (NN)"); m_filters.add_item("bilinear"); m_filters.add_item("bicubic"); m_filters.add_item("spline16"); m_filters.add_item("spline36"); m_filters.add_item("hanning"); m_filters.add_item("hamming"); m_filters.add_item("hermite"); m_filters.add_item("kaiser"); m_filters.add_item("quadric"); m_filters.add_item("catrom"); m_filters.add_item("gaussian"); m_filters.add_item("bessel"); m_filters.add_item("mitchell"); m_filters.add_item("sinc"); m_filters.add_item("lanczos"); m_filters.add_item("blackman"); m_filters.cur_item(1); m_filters.border_width(0, 0); m_filters.background_color(agg::rgba(0.0, 0.0, 0.0, 0.1)); m_filters.text_size(6.0); m_filters.text_thickness(0.85); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_alpha_dst(5, 5, 400, 11, !flip_y), m_alpha_src(5, 5+15, 400, 11+15, !flip_y), m_comp_op(420, 5.0, 420+170.0, 395.0, !flip_y) { m_alpha_dst.label("Dst Alpha=%.2f"); m_alpha_dst.value(1.0); add_ctrl(m_alpha_dst); m_alpha_src.label("Src Alpha=%.2f"); m_alpha_src.value(1.0); add_ctrl(m_alpha_src); m_comp_op.text_size(6.8); m_comp_op.add_item("clear"); m_comp_op.add_item("src"); m_comp_op.add_item("dst"); m_comp_op.add_item("src-over"); m_comp_op.add_item("dst-over"); m_comp_op.add_item("src-in"); m_comp_op.add_item("dst-in"); m_comp_op.add_item("src-out"); m_comp_op.add_item("dst-out"); m_comp_op.add_item("src-atop"); m_comp_op.add_item("dst-atop"); m_comp_op.add_item("xor"); m_comp_op.add_item("plus"); m_comp_op.add_item("minus"); m_comp_op.add_item("multiply"); m_comp_op.add_item("screen"); m_comp_op.add_item("overlay"); m_comp_op.add_item("darken"); m_comp_op.add_item("lighten"); m_comp_op.add_item("color-dodge"); m_comp_op.add_item("color-burn"); m_comp_op.add_item("hard-light"); m_comp_op.add_item("soft-light"); m_comp_op.add_item("difference"); m_comp_op.add_item("exclusion"); m_comp_op.add_item("contrast"); m_comp_op.add_item("invert"); m_comp_op.add_item("invert-rgb"); m_comp_op.cur_item(3); add_ctrl(m_comp_op); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_method (10.0, 10.0, 130.0, 55.0, !flip_y), m_radius (130 + 10.0, 10.0 + 4.0, 130 + 300.0, 10.0 + 8.0 + 4.0, !flip_y), m_shadow_ctrl(4), m_shape(m_path) { add_ctrl(m_method); m_method.text_size(8); m_method.add_item("Single Color"); m_method.add_item("Color LUT"); m_method.cur_item(1); add_ctrl(m_radius); m_radius.range(0.0, 40.0); m_radius.value(15.0); m_radius.label("Blur Radius=%1.2f"); add_ctrl(m_shadow_ctrl); m_path.remove_all(); m_path.move_to(28.47, 6.45); m_path.curve3(21.58, 1.12, 19.82, 0.29); m_path.curve3(17.19, -0.93, 14.21, -0.93); m_path.curve3(9.57, -0.93, 6.57, 2.25); m_path.curve3(3.56, 5.42, 3.56, 10.60); m_path.curve3(3.56, 13.87, 5.03, 16.26); m_path.curve3(7.03, 19.58, 11.99, 22.51); m_path.curve3(16.94, 25.44, 28.47, 29.64); m_path.line_to(28.47, 31.40); m_path.curve3(28.47, 38.09, 26.34, 40.58); m_path.curve3(24.22, 43.07, 20.17, 43.07); m_path.curve3(17.09, 43.07, 15.28, 41.41); m_path.curve3(13.43, 39.75, 13.43, 37.60); m_path.line_to(13.53, 34.77); m_path.curve3(13.53, 32.52, 12.38, 31.30); m_path.curve3(11.23, 30.08, 9.38, 30.08); m_path.curve3(7.57, 30.08, 6.42, 31.35); m_path.curve3(5.27, 32.62, 5.27, 34.81); m_path.curve3(5.27, 39.01, 9.57, 42.53); m_path.curve3(13.87, 46.04, 21.63, 46.04); m_path.curve3(27.59, 46.04, 31.40, 44.04); m_path.curve3(34.28, 42.53, 35.64, 39.31); m_path.curve3(36.52, 37.21, 36.52, 30.71); m_path.line_to(36.52, 15.53); m_path.curve3(36.52, 9.13, 36.77, 7.69); m_path.curve3(37.01, 6.25, 37.57, 5.76); m_path.curve3(38.13, 5.27, 38.87, 5.27); m_path.curve3(39.65, 5.27, 40.23, 5.62); m_path.curve3(41.26, 6.25, 44.19, 9.18); m_path.line_to(44.19, 6.45); m_path.curve3(38.72, -0.88, 33.74, -0.88); m_path.curve3(31.35, -0.88, 29.93, 0.78); m_path.curve3(28.52, 2.44, 28.47, 6.45); m_path.close_polygon(); m_path.move_to(28.47, 9.62); m_path.line_to(28.47, 26.66); m_path.curve3(21.09, 23.73, 18.95, 22.51); m_path.curve3(15.09, 20.36, 13.43, 18.02); m_path.curve3(11.77, 15.67, 11.77, 12.89); m_path.curve3(11.77, 9.38, 13.87, 7.06); m_path.curve3(15.97, 4.74, 18.70, 4.74); m_path.curve3(22.41, 4.74, 28.47, 9.62); m_path.close_polygon(); agg::trans_affine shape_mtx; shape_mtx *= agg::trans_affine_scaling(4.0); shape_mtx *= agg::trans_affine_translation(150, 100); m_path.transform(shape_mtx); agg::bounding_rect_single(m_shape, 0, &m_shape_bounds.x1, &m_shape_bounds.y1, &m_shape_bounds.x2, &m_shape_bounds.y2); m_shadow_ctrl.xn(0) = m_shape_bounds.x1; m_shadow_ctrl.yn(0) = m_shape_bounds.y1; m_shadow_ctrl.xn(1) = m_shape_bounds.x2; m_shadow_ctrl.yn(1) = m_shape_bounds.y1; m_shadow_ctrl.xn(2) = m_shape_bounds.x2; m_shadow_ctrl.yn(2) = m_shape_bounds.y2; m_shadow_ctrl.xn(3) = m_shape_bounds.x1; m_shadow_ctrl.yn(3) = m_shape_bounds.y2; m_shadow_ctrl.line_color(agg::rgba(0, 0.3, 0.5, 0.3)); m_color_lut.resize(256); unsigned i; const agg::int8u* p = g_gradient_colors; for(i = 0; i < 256; i++) { m_color_lut[i] = agg::rgba8(p[0], p[1], p[2], (i > 63) ? 255 : i * 4);//p[3]); //m_color_lut[i].premultiply(); p += 4; } }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_polygons (5.0, 5.0, 5.0+205.0, 110.0, !flip_y), m_fill_rule (200, 5.0, 200+105.0, 50.0, !flip_y), m_scanline_type(300, 5.0, 300+115.0, 70.0, !flip_y), m_operation (535.0, 5.0, 535.0+115.0, 145.0, !flip_y) { m_operation.add_item("None"); m_operation.add_item("OR"); m_operation.add_item("AND"); m_operation.add_item("XOR Linear"); m_operation.add_item("XOR Saddle"); m_operation.add_item("A-B"); m_operation.add_item("B-A"); m_operation.cur_item(2); add_ctrl(m_operation); m_operation.no_transform(); m_fill_rule.add_item("Even-Odd"); m_fill_rule.add_item("Non Zero"); m_fill_rule.cur_item(1); add_ctrl(m_fill_rule); m_fill_rule.no_transform(); m_scanline_type.add_item("scanline_p"); m_scanline_type.add_item("scanline_u"); m_scanline_type.add_item("scanline_bin"); m_scanline_type.cur_item(1); add_ctrl(m_scanline_type); m_scanline_type.no_transform(); m_polygons.add_item("Two Simple Paths"); m_polygons.add_item("Closed Stroke"); m_polygons.add_item("Great Britain and Arrows"); m_polygons.add_item("Great Britain and Spiral"); m_polygons.add_item("Spiral and Glyph"); m_polygons.cur_item(3); add_ctrl(m_polygons); m_polygons.no_transform(); }
the_application(agg::pix_format_e format, bool flip_y) : agg::platform_support(format, flip_y), m_method (10.0, 10.0, 130.0, 70.0, !flip_y), m_radius (130 + 10.0, 10.0 + 4.0, 130 + 300.0, 10.0 + 8.0 + 4.0, !flip_y), m_shadow_ctrl(4), m_channel_r (10.0, 80.0, "Red", !flip_y), m_channel_g (10.0, 95.0, "Green", !flip_y), m_channel_b (10.0, 110.0, "Blue", !flip_y), m_shape(m_path) { add_ctrl(m_method); m_method.text_size(8); m_method.add_item("Stack Blur"); m_method.add_item("Recursive Blur"); m_method.add_item("Channels"); m_method.cur_item(0); add_ctrl(m_radius); m_radius.range(0.0, 40.0); m_radius.value(15.0); m_radius.label("Blur Radius=%1.2f"); add_ctrl(m_shadow_ctrl); add_ctrl(m_channel_r); add_ctrl(m_channel_g); add_ctrl(m_channel_b); m_channel_g.status(true); m_path.remove_all(); m_path.move_to(28.47, 6.45); m_path.curve3(21.58, 1.12, 19.82, 0.29); m_path.curve3(17.19, -0.93, 14.21, -0.93); m_path.curve3(9.57, -0.93, 6.57, 2.25); m_path.curve3(3.56, 5.42, 3.56, 10.60); m_path.curve3(3.56, 13.87, 5.03, 16.26); m_path.curve3(7.03, 19.58, 11.99, 22.51); m_path.curve3(16.94, 25.44, 28.47, 29.64); m_path.line_to(28.47, 31.40); m_path.curve3(28.47, 38.09, 26.34, 40.58); m_path.curve3(24.22, 43.07, 20.17, 43.07); m_path.curve3(17.09, 43.07, 15.28, 41.41); m_path.curve3(13.43, 39.75, 13.43, 37.60); m_path.line_to(13.53, 34.77); m_path.curve3(13.53, 32.52, 12.38, 31.30); m_path.curve3(11.23, 30.08, 9.38, 30.08); m_path.curve3(7.57, 30.08, 6.42, 31.35); m_path.curve3(5.27, 32.62, 5.27, 34.81); m_path.curve3(5.27, 39.01, 9.57, 42.53); m_path.curve3(13.87, 46.04, 21.63, 46.04); m_path.curve3(27.59, 46.04, 31.40, 44.04); m_path.curve3(34.28, 42.53, 35.64, 39.31); m_path.curve3(36.52, 37.21, 36.52, 30.71); m_path.line_to(36.52, 15.53); m_path.curve3(36.52, 9.13, 36.77, 7.69); m_path.curve3(37.01, 6.25, 37.57, 5.76); m_path.curve3(38.13, 5.27, 38.87, 5.27); m_path.curve3(39.65, 5.27, 40.23, 5.62); m_path.curve3(41.26, 6.25, 44.19, 9.18); m_path.line_to(44.19, 6.45); m_path.curve3(38.72, -0.88, 33.74, -0.88); m_path.curve3(31.35, -0.88, 29.93, 0.78); m_path.curve3(28.52, 2.44, 28.47, 6.45); m_path.close_polygon(); m_path.move_to(28.47, 9.62); m_path.line_to(28.47, 26.66); m_path.curve3(21.09, 23.73, 18.95, 22.51); m_path.curve3(15.09, 20.36, 13.43, 18.02); m_path.curve3(11.77, 15.67, 11.77, 12.89); m_path.curve3(11.77, 9.38, 13.87, 7.06); m_path.curve3(15.97, 4.74, 18.70, 4.74); m_path.curve3(22.41, 4.74, 28.47, 9.62); m_path.close_polygon(); agg::trans_affine shape_mtx; shape_mtx *= agg::trans_affine_scaling(4.0); shape_mtx *= agg::trans_affine_translation(150, 100); m_path.transform(shape_mtx); agg::bounding_rect_single(m_shape, 0, &m_shape_bounds.x1, &m_shape_bounds.y1, &m_shape_bounds.x2, &m_shape_bounds.y2); m_shadow_ctrl.xn(0) = m_shape_bounds.x1; m_shadow_ctrl.yn(0) = m_shape_bounds.y1; m_shadow_ctrl.xn(1) = m_shape_bounds.x2; m_shadow_ctrl.yn(1) = m_shape_bounds.y1; m_shadow_ctrl.xn(2) = m_shape_bounds.x2; m_shadow_ctrl.yn(2) = m_shape_bounds.y2; m_shadow_ctrl.xn(3) = m_shape_bounds.x1; m_shadow_ctrl.yn(3) = m_shape_bounds.y2; m_shadow_ctrl.line_color(agg::rgba(0, 0.3, 0.5, 0.3)); }