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