1*cdf0e10cSrcweir/*************************************************************************
2*cdf0e10cSrcweir *
3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir *
5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir *
7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir *
9*cdf0e10cSrcweir * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir *
11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir *
15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir *
21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir *
26*cdf0e10cSrcweir ************************************************************************/
27*cdf0e10cSrcweir#ifndef __com_sun_star_rendering_StrokeAttributes_idl__
28*cdf0e10cSrcweir#define __com_sun_star_rendering_StrokeAttributes_idl__
29*cdf0e10cSrcweir
30*cdf0e10cSrcweirmodule com { module sun { module star { module rendering {
31*cdf0e10cSrcweir
32*cdf0e10cSrcweir/** This structure contains all attributes required for path stroking.<p>
33*cdf0e10cSrcweir
34*cdf0e10cSrcweir    Path stroking is the process of drawing a polygon with a thick
35*cdf0e10cSrcweir    pen. The various attributes contained in this structure can be
36*cdf0e10cSrcweir    used to customize that process.<p>
37*cdf0e10cSrcweir
38*cdf0e10cSrcweir    @single #110496#
39*cdf0e10cSrcweir */
40*cdf0e10cSrcweirpublished struct StrokeAttributes
41*cdf0e10cSrcweir{
42*cdf0e10cSrcweir    /** Defines the width of the stroke, measured in user
43*cdf0e10cSrcweir        coordinate space.
44*cdf0e10cSrcweir
45*cdf0e10cSrcweir        This value must be positive (or 0.0)
46*cdf0e10cSrcweir     */
47*cdf0e10cSrcweir    double                  StrokeWidth;
48*cdf0e10cSrcweir
49*cdf0e10cSrcweir    //-------------------------------------------------------------------------
50*cdf0e10cSrcweir
51*cdf0e10cSrcweir    /** Determines the maximal length of the diagonal in mitered
52*cdf0e10cSrcweir        corners.<p>
53*cdf0e10cSrcweir
54*cdf0e10cSrcweir        This attribute is only used when
55*cdf0e10cSrcweir        <member>StrokeAttributes::JoinType</member> is set to
56*cdf0e10cSrcweir        <member>PathJoinType::MITER</member>. Should the length of a
57*cdf0e10cSrcweir        corner's diagonal exceed this limit, a bevelled join is used
58*cdf0e10cSrcweir        instead. This value must be positive (or 0.0, which is
59*cdf0e10cSrcweir        equivalent to setting
60*cdf0e10cSrcweir        <member>StrokeAttributes::JoinType</member> to
61*cdf0e10cSrcweir        <member>PathJoinType::BEVEL</member>.<p>
62*cdf0e10cSrcweir
63*cdf0e10cSrcweir        Before performing the actual comparison, implementations will
64*cdf0e10cSrcweir        multiply the MiterLimit with the current StrokeWidth, such
65*cdf0e10cSrcweir        that, with phi being the angle between the two joining
66*cdf0e10cSrcweir        segments, MiterLimit=1/sin(phi/2.0).<p>
67*cdf0e10cSrcweir     */
68*cdf0e10cSrcweir    double				MiterLimit;
69*cdf0e10cSrcweir
70*cdf0e10cSrcweir    //-------------------------------------------------------------------------
71*cdf0e10cSrcweir
72*cdf0e10cSrcweir    /** Array of ink on and off lengths, measured in user coordinate
73*cdf0e10cSrcweir        space.<p>
74*cdf0e10cSrcweir
75*cdf0e10cSrcweir        The first element specifies the length of the first 'on'
76*cdf0e10cSrcweir        segment of the dashing, the second element the length of the
77*cdf0e10cSrcweir        first 'off' segment, and so forth. Give zero elements here for
78*cdf0e10cSrcweir        solid strokes. This array always have an even number of
79*cdf0e10cSrcweir        elements, with zero, as usual, counting as even
80*cdf0e10cSrcweir        here. Furthermore, each entry in this array must have a value
81*cdf0e10cSrcweir        that is positive (or 0.0)<p>
82*cdf0e10cSrcweir     */
83*cdf0e10cSrcweir    sequence<double>	DashArray;
84*cdf0e10cSrcweir
85*cdf0e10cSrcweir    //-------------------------------------------------------------------------
86*cdf0e10cSrcweir
87*cdf0e10cSrcweir    /** Array of line widths and spacings for multiple-line
88*cdf0e10cSrcweir        strokes.<p>
89*cdf0e10cSrcweir
90*cdf0e10cSrcweir        The entries here are relative to the
91*cdf0e10cSrcweir        <member>StrokeAttributes::StrokeWidth</member> attribute
92*cdf0e10cSrcweir        above, i.e. the total width of all lines and spacings will
93*cdf0e10cSrcweir        always equal
94*cdf0e10cSrcweir        <member>StrokeAttributes::StrokeWidth</member>. The first
95*cdf0e10cSrcweir        element specifies the width of the rightmost line, when
96*cdf0e10cSrcweir        travelling from the start point of the path to the end
97*cdf0e10cSrcweir        point. The second element specifies the space between the
98*cdf0e10cSrcweir        first line and the second line, and so forth. If the array
99*cdf0e10cSrcweir        ends with a spacing, this spacing is included in the total
100*cdf0e10cSrcweir        width of the multiple-line stroke. That is, the stroke becomes
101*cdf0e10cSrcweir        asymmetric.<p>
102*cdf0e10cSrcweir     */
103*cdf0e10cSrcweir    sequence<double>	LineArray;
104*cdf0e10cSrcweir
105*cdf0e10cSrcweir    //-------------------------------------------------------------------------
106*cdf0e10cSrcweir
107*cdf0e10cSrcweir    /** The start shape of the stroke.<p>
108*cdf0e10cSrcweir
109*cdf0e10cSrcweir        The start point is the first point of every polygon of the
110*cdf0e10cSrcweir        path poly-polygon.<p>
111*cdf0e10cSrcweir
112*cdf0e10cSrcweir        @see <type>PathCapType</type>
113*cdf0e10cSrcweir     */
114*cdf0e10cSrcweir    byte				StartCapType;
115*cdf0e10cSrcweir
116*cdf0e10cSrcweir    //-------------------------------------------------------------------------
117*cdf0e10cSrcweir
118*cdf0e10cSrcweir    /** The end shape of the stroke.<p>
119*cdf0e10cSrcweir
120*cdf0e10cSrcweir        The end point is the last point of every polygon of the path
121*cdf0e10cSrcweir        poly-polygon.<p>
122*cdf0e10cSrcweir
123*cdf0e10cSrcweir        @see <type>PathCapType</type>
124*cdf0e10cSrcweir     */
125*cdf0e10cSrcweir    byte				EndCapType;
126*cdf0e10cSrcweir
127*cdf0e10cSrcweir    //-------------------------------------------------------------------------
128*cdf0e10cSrcweir
129*cdf0e10cSrcweir    /** The join shape of the stroke.<p>
130*cdf0e10cSrcweir
131*cdf0e10cSrcweir        After every sub-stroke, i.e. after every line or curve segment
132*cdf0e10cSrcweir        within a single path polygon, a shape of this type is inserted
133*cdf0e10cSrcweir        into the stroke to glue the segments together. Please note
134*cdf0e10cSrcweir        that distinct polygons within the path poly-polygon are not
135*cdf0e10cSrcweir        connected, and therefore also not joined via the shape
136*cdf0e10cSrcweir        specified here.<p>
137*cdf0e10cSrcweir
138*cdf0e10cSrcweir        @see <type>PathJoinType</type>
139*cdf0e10cSrcweir     */
140*cdf0e10cSrcweir    byte				JoinType;
141*cdf0e10cSrcweir
142*cdf0e10cSrcweir};
143*cdf0e10cSrcweir
144*cdf0e10cSrcweir}; }; }; };
145*cdf0e10cSrcweir
146*cdf0e10cSrcweir#endif
147