Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/openpyxl/drawing/line.py: 70%
74 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1# Copyright (c) 2010-2022 openpyxl
3from openpyxl.descriptors.serialisable import Serialisable
4from openpyxl.descriptors import (
5 Typed,
6 Float,
7 Integer,
8 Bool,
9 MinMax,
10 Set,
11 NoneSet,
12 String,
13 Alias,
14 Sequence
15)
16from openpyxl.descriptors.excel import Coordinate, Percentage
18from openpyxl.descriptors.nested import (
19 NestedInteger,
20 NestedSet,
21 NestedNoneSet,
22 EmptyTag,
23)
24from openpyxl.compat import safe_string
25from openpyxl.xml.constants import DRAWING_NS
26from openpyxl.xml.functions import Element
28from .colors import ColorChoiceDescriptor
29from .fill import GradientFillProperties, PatternFillProperties
30from openpyxl.descriptors.excel import ExtensionList as OfficeArtExtensionList
32"""
33Line elements from drawing main schema
34"""
36class LineEndProperties(Serialisable):
38 tagname = "end"
39 namespace = DRAWING_NS
41 type = NoneSet(values=(['none', 'triangle', 'stealth', 'diamond', 'oval', 'arrow']))
42 w = NoneSet(values=(['sm', 'med', 'lg']))
43 len = NoneSet(values=(['sm', 'med', 'lg']))
45 def __init__(self,
46 type=None,
47 w=None,
48 len=None,
49 ):
50 self.type = type
51 self.w = w
52 self.len = len
55class DashStop(Serialisable):
57 tagname = "ds"
58 namespace = DRAWING_NS
60 d = Integer()
61 length = Alias('d')
62 sp = Integer()
63 space = Alias('sp')
65 def __init__(self,
66 d=0,
67 sp=0,
68 ):
69 self.d = d
70 self.sp = sp
73class DashStopList(Serialisable):
75 ds = Sequence(expected_type=DashStop, allow_none=True)
77 def __init__(self,
78 ds=None,
79 ):
80 self.ds = ds
83class LineProperties(Serialisable):
85 tagname = "ln"
86 namespace = DRAWING_NS
88 w = MinMax(min=0, max=20116800, allow_none=True) # EMU
89 width = Alias('w')
90 cap = NoneSet(values=(['rnd', 'sq', 'flat']))
91 cmpd = NoneSet(values=(['sng', 'dbl', 'thickThin', 'thinThick', 'tri']))
92 algn = NoneSet(values=(['ctr', 'in']))
94 noFill = EmptyTag()
95 solidFill = ColorChoiceDescriptor()
96 gradFill = Typed(expected_type=GradientFillProperties, allow_none=True)
97 pattFill = Typed(expected_type=PatternFillProperties, allow_none=True)
99 prstDash = NestedNoneSet(values=(['solid', 'dot', 'dash', 'lgDash', 'dashDot',
100 'lgDashDot', 'lgDashDotDot', 'sysDash', 'sysDot', 'sysDashDot',
101 'sysDashDotDot']), namespace=namespace)
102 dashStyle = Alias('prstDash')
104 custDash = Typed(expected_type=DashStop, allow_none=True)
106 round = EmptyTag()
107 bevel = EmptyTag()
108 miter = NestedInteger(allow_none=True, attribute="lim")
110 headEnd = Typed(expected_type=LineEndProperties, allow_none=True)
111 tailEnd = Typed(expected_type=LineEndProperties, allow_none=True)
112 extLst = Typed(expected_type=OfficeArtExtensionList, allow_none=True)
114 __elements__ = ('noFill', 'solidFill', 'gradFill', 'pattFill',
115 'prstDash', 'custDash', 'round', 'bevel', 'miter', 'headEnd', 'tailEnd')
117 def __init__(self,
118 w=None,
119 cap=None,
120 cmpd=None,
121 algn=None,
122 noFill=None,
123 solidFill=None,
124 gradFill=None,
125 pattFill=None,
126 prstDash=None,
127 custDash=None,
128 round=None,
129 bevel=None,
130 miter=None,
131 headEnd=None,
132 tailEnd=None,
133 extLst=None,
134 ):
135 self.w = w
136 self.cap = cap
137 self.cmpd = cmpd
138 self.algn = algn
139 self.noFill = noFill
140 self.solidFill = solidFill
141 self.gradFill = gradFill
142 self.pattFill = pattFill
143 if prstDash is None:
144 prstDash = "solid"
145 self.prstDash = prstDash
146 self.custDash = custDash
147 self.round = round
148 self.bevel = bevel
149 self.miter = miter
150 self.headEnd = headEnd
151 self.tailEnd = tailEnd