1655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod 2655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod//---------------------------------------------------------------------------- 3655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// Anti-Grain Geometry - Version 2.3 4655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com) 5655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// 6655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// Permission to copy, use, modify, sell and distribute this software 7655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// is granted provided this copyright notice appears in all copies. 8655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// This software is provided "as is" without express or implied 9655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// warranty, and with no claim as to its suitability for any purpose. 10655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// 11655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod//---------------------------------------------------------------------------- 12655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// Contact: mcseem@antigrain.com 13655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// mcseemagg@yahoo.com 14655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// http://www.antigrain.com 15655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod//---------------------------------------------------------------------------- 16655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// 17655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// conv_stroke 18655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod// 19655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod//---------------------------------------------------------------------------- 20655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod#ifndef AGG_CONV_STROKE_INCLUDED 21655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod#define AGG_CONV_STROKE_INCLUDED 22655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod#include "agg_basics.h" 23655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod#include "agg_vcgen_stroke.h" 24655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod#include "agg_conv_adaptor_vcgen.h" 25655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbodnamespace agg 26655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod{ 27655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbodtemplate<class VertexSource, class Markers = null_markers> 285d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbodstruct conv_stroke : 29655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod public conv_adaptor_vcgen<VertexSource, vcgen_stroke, Markers> { 30655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod typedef Markers marker_type; 31655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod typedef conv_adaptor_vcgen<VertexSource, vcgen_stroke, Markers> base_type; 325d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod conv_stroke(VertexSource& vs) : 335d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod conv_adaptor_vcgen<VertexSource, vcgen_stroke, Markers>(vs) 345d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 355d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod } 365d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod void line_cap(line_cap_e lc) 375d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 385d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod base_type::generator().line_cap(lc); 395d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod } 405d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod void line_join(line_join_e lj) 415d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 425d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod base_type::generator().line_join(lj); 435d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod } 445d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod void inner_join(inner_join_e ij) 455d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 465d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod base_type::generator().inner_join(ij); 475d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod } 485d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod line_cap_e line_cap() const 495d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 505d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod return base_type::generator().line_cap(); 515d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod } 525d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod line_join_e line_join() const 535d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 545d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod return base_type::generator().line_join(); 555d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod } 565d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod inner_join_e inner_join() const 575d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 585d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod return base_type::generator().inner_join(); 595d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod } 605d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod void width(FX_FLOAT w) 615d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 625d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod base_type::generator().width(w); 635d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod } 645d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod void miter_limit(FX_FLOAT ml) 655d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod { 6645412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod base_type::generator().miter_limit(ml); 675c6f5982d78e2d7fadc2fbb8b4f3a4be9420c59aBehdad Esfahbod } 6845412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod void miter_limit_theta(FX_FLOAT t) 6945412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod { 7045412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod base_type::generator().miter_limit_theta(t); 71655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod } 7245412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod void inner_miter_limit(FX_FLOAT ml) 7345412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod { 7445412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod base_type::generator().inner_miter_limit(ml); 7545412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod } 7645412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod void approximation_scale(FX_FLOAT as) 7745412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod { 7845412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod base_type::generator().approximation_scale(as); 7945412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod } 8045412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod FX_FLOAT width() const 8145412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod { 8245412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod return base_type::generator().width(); 8345412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod } 8445412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod FX_FLOAT miter_limit() const 8545412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod { 8645412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod return base_type::generator().miter_limit(); 87655586fe5e1fadf2a2ef7826e61ee9a445ffa37aBehdad Esfahbod } 8845412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod FX_FLOAT inner_miter_limit() const 8945412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod { 9045412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod return base_type::generator().inner_miter_limit(); 9145412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod } 9245412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod FX_FLOAT approximation_scale() const 9345412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod { 945c6f5982d78e2d7fadc2fbb8b4f3a4be9420c59aBehdad Esfahbod return base_type::generator().approximation_scale(); 955c6f5982d78e2d7fadc2fbb8b4f3a4be9420c59aBehdad Esfahbod } 965c6f5982d78e2d7fadc2fbb8b4f3a4be9420c59aBehdad Esfahbod void shorten(FX_FLOAT s) 97d6b9c6d20041b4f4fa11befc179aee757c41904dBehdad Esfahbod { 985d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod base_type::generator().shorten(s); 99d6b9c6d20041b4f4fa11befc179aee757c41904dBehdad Esfahbod } 100d6b9c6d20041b4f4fa11befc179aee757c41904dBehdad Esfahbod FX_FLOAT shorten() const 10145412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod { 10245412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod return base_type::generator().shorten(); 10345412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod } 10445412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbodprivate: 105d6b9c6d20041b4f4fa11befc179aee757c41904dBehdad Esfahbod conv_stroke(const conv_stroke<VertexSource, Markers>&); 106d6b9c6d20041b4f4fa11befc179aee757c41904dBehdad Esfahbod const conv_stroke<VertexSource, Markers>& 107d6b9c6d20041b4f4fa11befc179aee757c41904dBehdad Esfahbod operator = (const conv_stroke<VertexSource, Markers>&); 10845412523dc295cb5ee12e096bfacb282cc925843Behdad Esfahbod}; 1095c6f5982d78e2d7fadc2fbb8b4f3a4be9420c59aBehdad Esfahbod} 1105d90a342e319068716429bf7af76c3896b61a0e5Behdad Esfahbod#endif 1115c6f5982d78e2d7fadc2fbb8b4f3a4be9420c59aBehdad Esfahbod