1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//---------------------------------------------------------------------------- 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Anti-Grain Geometry - Version 2.3 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com) 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Permission to copy, use, modify, sell and distribute this software 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// is granted provided this copyright notice appears in all copies. 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// This software is provided "as is" without express or implied 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// warranty, and with no claim as to its suitability for any purpose. 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//---------------------------------------------------------------------------- 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Contact: mcseem@antigrain.com 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// mcseemagg@yahoo.com 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// http://www.antigrain.com 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//---------------------------------------------------------------------------- 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// conv_stroke 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//---------------------------------------------------------------------------- 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef AGG_CONV_STROKE_INCLUDED 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define AGG_CONV_STROKE_INCLUDED 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "agg_basics.h" 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "agg_vcgen_stroke.h" 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "agg_conv_adaptor_vcgen.h" 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovnamespace agg 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtemplate<class VertexSource, class Markers = null_markers> 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct conv_stroke : 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov public conv_adaptor_vcgen<VertexSource, vcgen_stroke, Markers> { 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef Markers marker_type; 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef conv_adaptor_vcgen<VertexSource, vcgen_stroke, Markers> base_type; 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov conv_stroke(VertexSource& vs) : 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov conv_adaptor_vcgen<VertexSource, vcgen_stroke, Markers>(vs) 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void line_cap(line_cap_e lc) 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().line_cap(lc); 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void line_join(line_join_e lj) 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().line_join(lj); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void inner_join(inner_join_e ij) 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().inner_join(ij); 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov line_cap_e line_cap() const 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return base_type::generator().line_cap(); 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov line_join_e line_join() const 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return base_type::generator().line_join(); 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov inner_join_e inner_join() const 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return base_type::generator().inner_join(); 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void width(FX_FLOAT w) 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().width(w); 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void miter_limit(FX_FLOAT ml) 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().miter_limit(ml); 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void miter_limit_theta(FX_FLOAT t) 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().miter_limit_theta(t); 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void inner_miter_limit(FX_FLOAT ml) 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().inner_miter_limit(ml); 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void approximation_scale(FX_FLOAT as) 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().approximation_scale(as); 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT width() const 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return base_type::generator().width(); 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT miter_limit() const 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return base_type::generator().miter_limit(); 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT inner_miter_limit() const 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return base_type::generator().inner_miter_limit(); 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT approximation_scale() const 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return base_type::generator().approximation_scale(); 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void shorten(FX_FLOAT s) 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base_type::generator().shorten(s); 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT shorten() const 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return base_type::generator().shorten(); 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov conv_stroke(const conv_stroke<VertexSource, Markers>&); 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const conv_stroke<VertexSource, Markers>& 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov operator = (const conv_stroke<VertexSource, Markers>&); 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 111