Basic Shapes¶
Basic shapes (rect, circle, ellipse, line, polyline and polygon) can be automatically converted to path commands.
Basic Shapes Policy Concept¶
struct basic_shapes_policy
{
typedef /* Associative Sequence */ convert_to_path;
typedef /* Associative Sequence */ collect_attributes;
static const bool convert_only_rounded_rect_to_path = /* true or false */;
};
convert_to_path
- Associative Sequence (e.g.
boost::mpl::set
), containing SVG basic shapes elements tags, which will be converted to path. Generated path uses Path Policy and Path Events Policy settings. collect_attributes
- Associative Sequence, containing any of rect, circle, ellipse or line element tags. Geometry of elements included in the sequence will be passed with single call instead of separate attribute handling (see Basic Shapes Events Policy).
convert_only_rounded_rect_to_path
- If static member constant
convert_only_rounded_rect_to_path
equals totrue
andtag::element::rect
is included inconvert_to_path
sequence, then only rounded rectangles will be converted to path, and regular rectangles will be handle like iftag::element::rect
is included incollect_attributes
.
In document_traversal
processing of attributes describing basic shapes geometry (x, y,
r etc) must be enabled,
i. e. they must be included in processed_attributes
or excluded from ignored_attributes
.
Associative Sequence traits::shapes_attributes_by_element
contains tags of all such attributes
for basic shapes.
Named class template parameter for Basic Shapes Policy is basic_shapes_policy
.
Basic Shapes Events Policy Concept¶
struct basic_shapes_events_policy
{
static void set_rect(Context & context, Coordinate x, Coordinate y, Coordinate width, Coordinate height,
Coordinate rx, Coordinate ry);
static void set_rect(Context & context, Coordinate x, Coordinate y, Coordinate width, Coordinate height);
static void set_line(Context & context, Coordinate x1, Coordinate y1, Coordinate x2, Coordinate y2);
static void set_circle(Context & context, Coordinate cx, Coordinate cy, Coordinate r);
static void set_ellipse(Context & context, Coordinate cx, Coordinate cy, Coordinate rx, Coordinate ry);
};
Basic Shapes Events Policy is used for basic shapes (except polyline and polygon) elements,
that are listed in collect_attributes
field of Basic Shapes Policy.
Adapters that implement these conversions, use length_to_user_coordinate
method of Length Factory
to get user coordinates value by length. These adapters passes default values if attributes are missing
and check correctness of attributes. If value disables rendering of the element
according to SVG specification, then Basic Shapes Events Policy methods aren’t called,
and if an attribute has negative value that is not permitted by specification,
then negative_value
function of Error Policy is called.
Default Basic Shapes Events Policy (policy::basic_shapes_events::forward_to_method
)
forwards calls to its static methods to context
object methods:
struct forward_to_method
{
template<class Coordinate>
static void set_rect(Context & context, Coordinate x, Coordinate y, Coordinate width, Coordinate height,
Coordinate rx, Coordinate ry)
{
context.set_rect(x, y, width, height, rx, ry);
}
/*...*/
};
Named class template parameter for Basic Shapes Events Policy is basic_shapes_events_policy
.