void fillEllipse(double cx, double cy, double rx, double ry, double oriRadian, const double rgb[3]) { // Create vectorial ellipse. agg::ellipse ellipse(cx, cy, rx, ry); // Render ellipse. agg::trans_affine transform; ellipse.init(0, 0, rx, ry); transform.rotate(oriRadian); transform.translate(cx, cy); agg::conv_transform<agg::ellipse> ellipticPath(ellipse, transform); aa_rasterizer.add_path(ellipticPath); agg::render_scanlines_aa_solid( aa_rasterizer, scanline, renderer_base, agg::rgba(rgb[0], rgb[1], rgb[2]) ); }
void ImagePainter::drawEllipse(double cx, double cy, double rx, double ry, double oriRadian, double penWidth, const Vector3d& rgb, double alpha) { // Create vectorial ellipse. agg::ellipse ellipse; // Rotate and translate ellipse agg::trans_affine transform; ellipse.init(0, 0, rx, ry); transform.rotate(oriRadian); transform.translate(cx, cy); // Render ellipse. agg::conv_transform<agg::ellipse> ellipticPath(ellipse, transform); agg::conv_stroke<agg::conv_transform<agg::ellipse> > ellStroke(ellipticPath); ellStroke.width(penWidth); aa_rasterizer.add_path(ellStroke); agg::render_scanlines_aa_solid( aa_rasterizer, scanline, renderer_base, agg::rgba(rgb[0], rgb[1], rgb[2], alpha) ); }