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

1# Copyright (c) 2010-2022 openpyxl 

2 

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 

17 

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 

27 

28from .colors import ColorChoiceDescriptor 

29from .fill import GradientFillProperties, PatternFillProperties 

30from openpyxl.descriptors.excel import ExtensionList as OfficeArtExtensionList 

31 

32""" 

33Line elements from drawing main schema 

34""" 

35 

36class LineEndProperties(Serialisable): 

37 

38 tagname = "end" 

39 namespace = DRAWING_NS 

40 

41 type = NoneSet(values=(['none', 'triangle', 'stealth', 'diamond', 'oval', 'arrow'])) 

42 w = NoneSet(values=(['sm', 'med', 'lg'])) 

43 len = NoneSet(values=(['sm', 'med', 'lg'])) 

44 

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 

53 

54 

55class DashStop(Serialisable): 

56 

57 tagname = "ds" 

58 namespace = DRAWING_NS 

59 

60 d = Integer() 

61 length = Alias('d') 

62 sp = Integer() 

63 space = Alias('sp') 

64 

65 def __init__(self, 

66 d=0, 

67 sp=0, 

68 ): 

69 self.d = d 

70 self.sp = sp 

71 

72 

73class DashStopList(Serialisable): 

74 

75 ds = Sequence(expected_type=DashStop, allow_none=True) 

76 

77 def __init__(self, 

78 ds=None, 

79 ): 

80 self.ds = ds 

81 

82 

83class LineProperties(Serialisable): 

84 

85 tagname = "ln" 

86 namespace = DRAWING_NS 

87 

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'])) 

93 

94 noFill = EmptyTag() 

95 solidFill = ColorChoiceDescriptor() 

96 gradFill = Typed(expected_type=GradientFillProperties, allow_none=True) 

97 pattFill = Typed(expected_type=PatternFillProperties, allow_none=True) 

98 

99 prstDash = NestedNoneSet(values=(['solid', 'dot', 'dash', 'lgDash', 'dashDot', 

100 'lgDashDot', 'lgDashDotDot', 'sysDash', 'sysDot', 'sysDashDot', 

101 'sysDashDotDot']), namespace=namespace) 

102 dashStyle = Alias('prstDash') 

103 

104 custDash = Typed(expected_type=DashStop, allow_none=True) 

105 

106 round = EmptyTag() 

107 bevel = EmptyTag() 

108 miter = NestedInteger(allow_none=True, attribute="lim") 

109 

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) 

113 

114 __elements__ = ('noFill', 'solidFill', 'gradFill', 'pattFill', 

115 'prstDash', 'custDash', 'round', 'bevel', 'miter', 'headEnd', 'tailEnd') 

116 

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