FastUIDraw
path_dash_effect.hpp
Go to the documentation of this file.
1 /*!
2  * \file path_dash_effect.hpp
3  * \brief file path_dash_effect.hpp
4  *
5  * Copyright 2019 by Intel.
6  *
7  * Contact: kevin.rogovin@gmail.com
8  *
9  * This Source Code Form is subject to the
10  * terms of the Mozilla Public License, v. 2.0.
11  * If a copy of the MPL was not distributed with
12  * this file, You can obtain one at
13  * http://mozilla.org/MPL/2.0/.
14  *
15  * \author Kevin Rogovin <kevin.rogovin@gmail.com>
16  *
17  */
18 
19 #ifndef FASTUIDRAW_PATH_DASH_EFFECT_HPP
20 #define FASTUIDRAW_PATH_DASH_EFFECT_HPP
21 
23 
24 namespace fastuidraw
25 {
26 /*!\addtogroup Paths
27  * @{
28  */
29 
30  /*!
31  * A \ref PathDashEffect implemented \ref PathEffect to
32  * apply a dash pattern to a path. The output data of a
33  * \ref PathDashEffect -keeps- the distance values of
34  * how far along an ege or countour, i.e. the values of
35  * \ref TessellatedPath::cap::m_contour_length,
36  * \ref TessellatedPath::cap::m_edge_length,
37  * \ref TessellatedPath::cap::m_distance_from_edge_start,
38  * \ref TessellatedPath::cap::m_distance_from_contour_start,
39  * \ref TessellatedPath::join::m_distance_from_previous_join,
40  * \ref TessellatedPath::join::m_distance_from_contour_start,
41  * \ref TessellatedPath::join::m_contour_length,
42  * \ref TessellatedPath::segment::m_distance_from_edge_start,
43  * \ref TessellatedPath::segment::m_distance_from_contour_start,
44  * \ref TessellatedPath::segment::m_contour_length and
45  * \ref TessellatedPath::segment::m_edge_length are copied
46  * directly from the source data. Only the value \ref
47  * TessellatedPath::segment::m_length is adjusted (because
48  * a given segment might be split into multiple segments).
49  */
51  {
52  public:
53  PathDashEffect(void);
54  ~PathDashEffect();
55 
56  /*!
57  * Clear the dash pattern.
58  */
60  clear(void);
61 
62  /*!
63  * Add an element to the dash pattern. An element in the
64  * dash pattern is a length to draw following by a length
65  * to skip.
66  * \param draw length of draw in element
67  * \param skip length of skip in element
68  */
70  add_dash(float draw, float skip);
71 
72  /*!
73  * Distance values from the elements of the path have
74  * this value added to them before having the dash-pattern
75  * applied.
76  */
78  dash_offset(float v);
79 
80  virtual
81  void
82  process_chain(const segment_chain &chain, Storage &dst) const override;
83 
84  virtual
85  void
86  process_join(const TessellatedPath::join &join, Storage &dst) const override;
87 
88  virtual
89  void
90  process_cap(const TessellatedPath::cap &cap, Storage &dst) const override;
91 
92  private:
93  void *m_d;
94  };
95 
96 /*! @} */
97 }
98 
99 #endif
virtual void process_chain(const segment_chain &chain, Storage &dst) const override
all classes and functions of FastUIDraw are in the namespace fastuidraw.
Definition: colorstop.hpp:28
Represents the geometric data for a join.
Represents the geometric data for a cap.
PathDashEffect & add_dash(float draw, float skip)
virtual void process_join(const TessellatedPath::join &join, Storage &dst) const override
PathDashEffect & dash_offset(float v)
virtual void process_cap(const TessellatedPath::cap &cap, Storage &dst) const override
PathDashEffect & clear(void)
A PathEffect allows one to process a sequence of TessellatedPath::segment_chain, TessellatedPath::joi...
Definition: path_effect.hpp:39
file path_effect.hpp
A Storage is to where TessellatedPath::segment, TessellatedPath::join and TessellatedPath::cap values...
Definition: path_effect.hpp:68