drawlib 0.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of drawlib might be problematic. Click here for more details.

Files changed (52) hide show
  1. drawlib/.pylintrc +2 -0
  2. drawlib/__init__.py +33 -0
  3. drawlib/__main__.py +21 -0
  4. drawlib/apis.py +22 -0
  5. drawlib/assets/__init__.py +8 -0
  6. drawlib/assets/v0_1/__init__.py +8 -0
  7. drawlib/assets/v0_1/fonticons/__init__.py +8 -0
  8. drawlib/assets/v0_1/fonts/__init__.py +8 -0
  9. drawlib/v0_1/__init__.py +31 -0
  10. drawlib/v0_1/__main__.py +20 -0
  11. drawlib/v0_1/apis.py +127 -0
  12. drawlib/v0_1/private/__init__.py +20 -0
  13. drawlib/v0_1/private/arg_validator.py +163 -0
  14. drawlib/v0_1/private/command.py +204 -0
  15. drawlib/v0_1/private/core/__init__.py +15 -0
  16. drawlib/v0_1/private/core/colors.py +285 -0
  17. drawlib/v0_1/private/core/dimage.py +510 -0
  18. drawlib/v0_1/private/core/fonts.py +324 -0
  19. drawlib/v0_1/private/core/model.py +1082 -0
  20. drawlib/v0_1/private/core/model_validator.py +175 -0
  21. drawlib/v0_1/private/core/theme.py +1042 -0
  22. drawlib/v0_1/private/core/util.py +809 -0
  23. drawlib/v0_1/private/core_canvas/__init__.py +15 -0
  24. drawlib/v0_1/private/core_canvas/base.py +653 -0
  25. drawlib/v0_1/private/core_canvas/canvas.py +88 -0
  26. drawlib/v0_1/private/core_canvas/image.py +154 -0
  27. drawlib/v0_1/private/core_canvas/line.py +263 -0
  28. drawlib/v0_1/private/core_canvas/original_arrow.py +139 -0
  29. drawlib/v0_1/private/core_canvas/original_polygon.py +584 -0
  30. drawlib/v0_1/private/core_canvas/patches.py +547 -0
  31. drawlib/v0_1/private/core_canvas/text.py +136 -0
  32. drawlib/v0_1/private/download.py +58 -0
  33. drawlib/v0_1/private/dutil.py +28 -0
  34. drawlib/v0_1/private/icons/__init__.py +15 -0
  35. drawlib/v0_1/private/icons/phosphor.py +35275 -0
  36. drawlib/v0_1/private/icons/util.py +82 -0
  37. drawlib/v0_1/private/logging.py +38 -0
  38. drawlib/v0_1/private/settings.py +233 -0
  39. drawlib/v0_1/private/smartarts/__init__.py +15 -0
  40. drawlib/v0_1/private/smartarts/cycle.py +11 -0
  41. drawlib/v0_1/private/smartarts/dsart.py +17 -0
  42. drawlib/v0_1/private/smartarts/groups.py +20 -0
  43. drawlib/v0_1/private/smartarts/pyramid.py +18 -0
  44. drawlib/v0_1/private/smartarts/sourcecode.py +216 -0
  45. drawlib/v0_1/private/smartarts/table.py +11 -0
  46. drawlib/v0_1/private/smartarts/tree.py +18 -0
  47. drawlib/v0_1/private/tools.py +161 -0
  48. drawlib/v0_1/private/util.py +353 -0
  49. drawlib-0.1.1.dist-info/LICENSE.txt +202 -0
  50. drawlib-0.1.1.dist-info/METADATA +36 -0
  51. drawlib-0.1.1.dist-info/RECORD +52 -0
  52. drawlib-0.1.1.dist-info/WHEEL +4 -0
@@ -0,0 +1,15 @@
1
+ # Copyright (c) 2024 Yuichi Ito (yuichi@yuichi.com)
2
+ #
3
+ # This software is licensed under the Apache License, Version 2.0.
4
+ # For more information, please visit: https://github.com/yuichi110/drawlib
5
+ #
6
+ # This software is provided "as is", without warranty of any kind,
7
+ # express or implied, including but not limited to the warranties of
8
+ # merchantability, fitness for a particular purpose and noninfringement.
9
+
10
+ """drawlib's core package contains core code of drawing.
11
+
12
+ drawlib use matplotlib for drawing.
13
+ core package contains its related codes.
14
+
15
+ """
@@ -0,0 +1,285 @@
1
+ # Copyright (c) 2024 Yuichi Ito (yuichi@yuichi.com)
2
+ #
3
+ # This software is licensed under the Apache License, Version 2.0.
4
+ # For more information, please visit: https://github.com/yuichi110/drawlib
5
+ #
6
+ # This software is provided "as is", without warranty of any kind,
7
+ # express or implied, including but not limited to the warranties of
8
+ # merchantability, fitness for a particular purpose and noninfringement.
9
+
10
+ """Color definition module
11
+
12
+ drawlib only supports these 2 style of colors.
13
+
14
+ * RGB (R, G, B) : Each channel supports 0 ~ 255.
15
+ * RGBA (R, G, B, A) : Each channel supports 0 ~ 255. Alpha supports 0.0 ~ 1.0.
16
+
17
+ Technically library can support string color name("red", "blue" etc) and hexcode("#00FF00" etc).
18
+ However, supporting many format makes messhy implementation.
19
+ So, providing Color class and let them use supported style without stress.
20
+
21
+ This module posses 1 base class and 2 Color classes
22
+
23
+ * BaseColors: base class of Colors. User can inherit it.
24
+ * Colors: 16 Basic web colors
25
+ * Colors140: 140 web colors
26
+
27
+ User can define his color class if they need.
28
+ Please don't use Enum for colors. Just RGB with tuple(int, int int) is good.
29
+
30
+ """
31
+
32
+ from typing import Final, Tuple, Optional
33
+
34
+
35
+ class BaseColors:
36
+ """Base class of Colors class
37
+
38
+ Posses color ``Transparent`` and utility functions.
39
+
40
+ """
41
+
42
+ Transparent: Final[Tuple[int, int, int, float]] = (0, 0, 0, 0.0)
43
+
44
+ @staticmethod
45
+ def get_rgba(rgb: Tuple[int, int, int], alpha: float) -> Tuple[int, int, int, float]:
46
+ """add alpha to RGB
47
+
48
+ Args:
49
+ rgb: RGB color. Each channel supports between 0 ~ 255.
50
+ alpha: Transparency. Support 0.0 ~ 1.0.
51
+
52
+ Returns:
53
+ Tuple[int, int, int, float]: RGBA Color
54
+
55
+ """
56
+
57
+ return (rgb[0], rgb[1], rgb[2], alpha)
58
+
59
+ @staticmethod
60
+ def get_rgba_from_hexcode(hexcode: str, alpha: Optional[float] = None) -> Tuple[int, int, int, float]:
61
+ """Convert hex color code RGBA
62
+
63
+ Alpha value priority
64
+
65
+ 1. args ``alpha`` value is provided
66
+ 2. hex code contains alpha channel
67
+ 3. If neither of them, set 1.0
68
+
69
+ Args:
70
+ hexcode: RGB("#00FF00" etc) or RGBA("#00FF00FF" etc)
71
+ alpha(optional): Overide with provided value. between 0.0 ~ 1.0.
72
+
73
+ Returns
74
+ Tuple[int, int, int, float]: RGBA
75
+
76
+ """
77
+
78
+ hex_code = hexcode.lstrip("#")
79
+ length = len(hex_code)
80
+ r = int(hex_code[0:2], 16)
81
+ g = int(hex_code[2:4], 16)
82
+ b = int(hex_code[4:6], 16)
83
+
84
+ if length == 6:
85
+ a = 1.0
86
+ else:
87
+ a = int(hex_code[6:8], 16) / 255
88
+
89
+ if alpha is not None:
90
+ a = alpha
91
+
92
+ return (r, g, b, a)
93
+
94
+ @staticmethod
95
+ def get_rgba_from_grayscale(grayscale: float, alpha: float = 1.0) -> Tuple[int, int, int, float]:
96
+ """Get RGBA from grayscale.
97
+
98
+ Args:
99
+ grayscale: supports 0.0 ~ 1.0.
100
+ alpha(optional): add alpha if provided. if not, set 1.0
101
+
102
+ Returns
103
+ Tuple[int, int, int, float]: RGBA
104
+
105
+ """
106
+
107
+ rgb = int(grayscale * 255)
108
+ return (rgb, rgb, rgb, alpha)
109
+
110
+
111
+ class Colors(BaseColors):
112
+ """Web basic color class.
113
+
114
+ Supports 16 of basic web colors.
115
+ ``Transparent`` is also supported.
116
+
117
+ """
118
+
119
+ Aqua: Final[Tuple[int, int, int]] = (0, 255, 255)
120
+ Black: Final[Tuple[int, int, int]] = (0, 0, 0)
121
+ Blue: Final[Tuple[int, int, int]] = (0, 0, 255)
122
+ Fuchsia: Final[Tuple[int, int, int]] = (255, 0, 255)
123
+ Gray: Final[Tuple[int, int, int]] = (128, 128, 128)
124
+ Green: Final[Tuple[int, int, int]] = (0, 128, 0)
125
+ Lime: Final[Tuple[int, int, int]] = (0, 255, 0)
126
+ Maroon: Final[Tuple[int, int, int]] = (128, 0, 0)
127
+ Navy: Final[Tuple[int, int, int]] = (0, 0, 128)
128
+ Olive: Final[Tuple[int, int, int]] = (128, 128, 0)
129
+ Purple: Final[Tuple[int, int, int]] = (128, 0, 128)
130
+ Red: Final[Tuple[int, int, int]] = (255, 0, 0)
131
+ Silver: Final[Tuple[int, int, int]] = (192, 192, 192)
132
+ Teal: Final[Tuple[int, int, int]] = (0, 128, 128)
133
+ White: Final[Tuple[int, int, int]] = (255, 255, 255)
134
+ Yellow: Final[Tuple[int, int, int]] = (255, 255, 0)
135
+
136
+
137
+ class Colors140(BaseColors):
138
+ """Web colors class. CSS Color Module Level3.
139
+
140
+ Supports 140 of "CSS Color Module Level3" web colors.
141
+ ``Transparent`` is also supported.
142
+
143
+ """
144
+
145
+ AliceBlue: Final[Tuple[int, int, int]] = (240, 248, 255)
146
+ AntiqueWhite: Final[Tuple[int, int, int]] = (250, 235, 215)
147
+ Aqua: Final[Tuple[int, int, int]] = (0, 255, 255)
148
+ Aquamarine: Final[Tuple[int, int, int]] = (127, 255, 212)
149
+ Azure: Final[Tuple[int, int, int]] = (240, 255, 255)
150
+ Beige: Final[Tuple[int, int, int]] = (245, 245, 220)
151
+ Bisque: Final[Tuple[int, int, int]] = (255, 228, 196)
152
+ Black: Final[Tuple[int, int, int]] = (0, 0, 0)
153
+ BlanchedAlmond: Final[Tuple[int, int, int]] = (255, 235, 205)
154
+ Blue: Final[Tuple[int, int, int]] = (0, 0, 255)
155
+ BlueViolet: Final[Tuple[int, int, int]] = (138, 43, 226)
156
+ Brown: Final[Tuple[int, int, int]] = (165, 42, 42)
157
+ BurlyWood: Final[Tuple[int, int, int]] = (222, 184, 135)
158
+ CadetBlue: Final[Tuple[int, int, int]] = (95, 158, 160)
159
+ Chartreuse: Final[Tuple[int, int, int]] = (127, 255, 0)
160
+ Chocolate: Final[Tuple[int, int, int]] = (210, 105, 30)
161
+ Coral: Final[Tuple[int, int, int]] = (255, 127, 80)
162
+ CornflowerBlue: Final[Tuple[int, int, int]] = (100, 149, 237)
163
+ Cornsilk: Final[Tuple[int, int, int]] = (255, 248, 220)
164
+ Crimson: Final[Tuple[int, int, int]] = (220, 20, 60)
165
+ Cyan: Final[Tuple[int, int, int]] = (0, 255, 255)
166
+ DarkBlue: Final[Tuple[int, int, int]] = (0, 0, 139)
167
+ DarkCyan: Final[Tuple[int, int, int]] = (0, 139, 139)
168
+ DarkGoldenRod: Final[Tuple[int, int, int]] = (184, 134, 11)
169
+ DarkGray: Final[Tuple[int, int, int]] = (169, 169, 169)
170
+ DarkGreen: Final[Tuple[int, int, int]] = (0, 100, 0)
171
+ DarkKhaki: Final[Tuple[int, int, int]] = (189, 183, 107)
172
+ DarkMagenta: Final[Tuple[int, int, int]] = (139, 0, 139)
173
+ DarkOliveGreen: Final[Tuple[int, int, int]] = (85, 107, 47)
174
+ DarkOrange: Final[Tuple[int, int, int]] = (255, 140, 0)
175
+ DarkOrchid: Final[Tuple[int, int, int]] = (153, 50, 204)
176
+ DarkRed: Final[Tuple[int, int, int]] = (139, 0, 0)
177
+ DarkSalmon: Final[Tuple[int, int, int]] = (233, 150, 122)
178
+ DarkSeaGreen: Final[Tuple[int, int, int]] = (143, 188, 143)
179
+ DarkSlateBlue: Final[Tuple[int, int, int]] = (72, 61, 139)
180
+ DarkSlateGray: Final[Tuple[int, int, int]] = (47, 79, 79)
181
+ DarkTurquoise: Final[Tuple[int, int, int]] = (0, 206, 209)
182
+ DarkViolet: Final[Tuple[int, int, int]] = (148, 0, 211)
183
+ DeepPink: Final[Tuple[int, int, int]] = (255, 20, 147)
184
+ DeepSkyBlue: Final[Tuple[int, int, int]] = (0, 191, 255)
185
+ DimGray: Final[Tuple[int, int, int]] = (105, 105, 105)
186
+ DodgerBlue: Final[Tuple[int, int, int]] = (30, 144, 255)
187
+ FireBrick: Final[Tuple[int, int, int]] = (178, 34, 34)
188
+ FloralWhite: Final[Tuple[int, int, int]] = (255, 250, 240)
189
+ ForestGreen: Final[Tuple[int, int, int]] = (34, 139, 34)
190
+ Fuchsia: Final[Tuple[int, int, int]] = (255, 0, 255)
191
+ Gainsboro: Final[Tuple[int, int, int]] = (220, 220, 220)
192
+ GhostWhite: Final[Tuple[int, int, int]] = (248, 248, 255)
193
+ Gold: Final[Tuple[int, int, int]] = (255, 215, 0)
194
+ GoldenRod: Final[Tuple[int, int, int]] = (218, 165, 32)
195
+ Gray: Final[Tuple[int, int, int]] = (128, 128, 128)
196
+ Green: Final[Tuple[int, int, int]] = (0, 128, 0)
197
+ GreenYellow: Final[Tuple[int, int, int]] = (173, 255, 47)
198
+ HoneyDew: Final[Tuple[int, int, int]] = (240, 255, 240)
199
+ HotPink: Final[Tuple[int, int, int]] = (255, 105, 180)
200
+ IndianRed: Final[Tuple[int, int, int]] = (205, 92, 92)
201
+ Indigo: Final[Tuple[int, int, int]] = (75, 0, 130)
202
+ Ivory: Final[Tuple[int, int, int]] = (255, 255, 240)
203
+ Khaki: Final[Tuple[int, int, int]] = (240, 230, 140)
204
+ Lavender: Final[Tuple[int, int, int]] = (230, 230, 250)
205
+ LavenderBlush: Final[Tuple[int, int, int]] = (255, 240, 245)
206
+ LawnGreen: Final[Tuple[int, int, int]] = (124, 252, 0)
207
+ LemonChiffon: Final[Tuple[int, int, int]] = (255, 250, 205)
208
+ LightBlue: Final[Tuple[int, int, int]] = (173, 216, 230)
209
+ LightCoral: Final[Tuple[int, int, int]] = (240, 128, 128)
210
+ LightCyan: Final[Tuple[int, int, int]] = (224, 255, 255)
211
+ LightGoldenRodYellow: Final[Tuple[int, int, int]] = (250, 250, 210)
212
+ LightGray: Final[Tuple[int, int, int]] = (211, 211, 211)
213
+ LightGreen: Final[Tuple[int, int, int]] = (144, 238, 144)
214
+ LightPink: Final[Tuple[int, int, int]] = (255, 182, 193)
215
+ LightSalmon: Final[Tuple[int, int, int]] = (255, 160, 122)
216
+ LightSeaGreen: Final[Tuple[int, int, int]] = (32, 178, 170)
217
+ LightSkyBlue: Final[Tuple[int, int, int]] = (135, 206, 250)
218
+ LightSlateGray: Final[Tuple[int, int, int]] = (119, 136, 153)
219
+ LightSteelBlue: Final[Tuple[int, int, int]] = (176, 196, 222)
220
+ LightYellow: Final[Tuple[int, int, int]] = (255, 255, 224)
221
+ Lime: Final[Tuple[int, int, int]] = (0, 255, 0)
222
+ LimeGreen: Final[Tuple[int, int, int]] = (50, 205, 50)
223
+ Linen: Final[Tuple[int, int, int]] = (250, 240, 230)
224
+ Magenta: Final[Tuple[int, int, int]] = (255, 0, 255)
225
+ Maroon: Final[Tuple[int, int, int]] = (128, 0, 0)
226
+ MediumAquaMarine: Final[Tuple[int, int, int]] = (102, 205, 170)
227
+ MediumBlue: Final[Tuple[int, int, int]] = (0, 0, 205)
228
+ MediumOrchid: Final[Tuple[int, int, int]] = (186, 85, 211)
229
+ MediumPurple: Final[Tuple[int, int, int]] = (147, 112, 219)
230
+ MediumSeaGreen: Final[Tuple[int, int, int]] = (60, 179, 113)
231
+ MediumSlateBlue: Final[Tuple[int, int, int]] = (123, 104, 238)
232
+ MediumSpringGreen: Final[Tuple[int, int, int]] = (0, 250, 154)
233
+ MediumTurquoise: Final[Tuple[int, int, int]] = (72, 209, 204)
234
+ MediumVioletRed: Final[Tuple[int, int, int]] = (199, 21, 133)
235
+ MidnightBlue: Final[Tuple[int, int, int]] = (25, 25, 112)
236
+ MintCream: Final[Tuple[int, int, int]] = (245, 255, 250)
237
+ MistyRose: Final[Tuple[int, int, int]] = (255, 228, 225)
238
+ Moccasin: Final[Tuple[int, int, int]] = (255, 228, 181)
239
+ NavajoWhite: Final[Tuple[int, int, int]] = (255, 222, 173)
240
+ Navy: Final[Tuple[int, int, int]] = (0, 0, 128)
241
+ OldLace: Final[Tuple[int, int, int]] = (253, 245, 230)
242
+ Olive: Final[Tuple[int, int, int]] = (128, 128, 0)
243
+ OliveDrab: Final[Tuple[int, int, int]] = (107, 142, 35)
244
+ Orange: Final[Tuple[int, int, int]] = (255, 165, 0)
245
+ OrangeRed: Final[Tuple[int, int, int]] = (255, 69, 0)
246
+ Orchid: Final[Tuple[int, int, int]] = (218, 112, 214)
247
+ PaleGoldenRod: Final[Tuple[int, int, int]] = (238, 232, 170)
248
+ PaleGreen: Final[Tuple[int, int, int]] = (152, 251, 152)
249
+ PaleTurquoise: Final[Tuple[int, int, int]] = (175, 238, 238)
250
+ PaleVioletRed: Final[Tuple[int, int, int]] = (219, 112, 147)
251
+ PapayaWhip: Final[Tuple[int, int, int]] = (255, 239, 213)
252
+ PeachPuff: Final[Tuple[int, int, int]] = (255, 218, 185)
253
+ Peru: Final[Tuple[int, int, int]] = (205, 133, 63)
254
+ Pink: Final[Tuple[int, int, int]] = (255, 192, 203)
255
+ Plum: Final[Tuple[int, int, int]] = (221, 160, 221)
256
+ PowderBlue: Final[Tuple[int, int, int]] = (176, 224, 230)
257
+ Purple: Final[Tuple[int, int, int]] = (128, 0, 128)
258
+ RebeccaPurple: Final[Tuple[int, int, int]] = (102, 51, 153)
259
+ Red: Final[Tuple[int, int, int]] = (255, 0, 0)
260
+ RosyBrown: Final[Tuple[int, int, int]] = (188, 143, 143)
261
+ RoyalBlue: Final[Tuple[int, int, int]] = (65, 105, 225)
262
+ SaddleBrown: Final[Tuple[int, int, int]] = (139, 69, 19)
263
+ Salmon: Final[Tuple[int, int, int]] = (250, 128, 114)
264
+ SandyBrown: Final[Tuple[int, int, int]] = (244, 164, 96)
265
+ SeaGreen: Final[Tuple[int, int, int]] = (46, 139, 87)
266
+ SeaShell: Final[Tuple[int, int, int]] = (255, 245, 238)
267
+ Sienna: Final[Tuple[int, int, int]] = (160, 82, 45)
268
+ Silver: Final[Tuple[int, int, int]] = (192, 192, 192)
269
+ SkyBlue: Final[Tuple[int, int, int]] = (135, 206, 235)
270
+ SlateBlue: Final[Tuple[int, int, int]] = (106, 90, 205)
271
+ SlateGray: Final[Tuple[int, int, int]] = (112, 128, 144)
272
+ Snow: Final[Tuple[int, int, int]] = (255, 250, 250)
273
+ SpringGreen: Final[Tuple[int, int, int]] = (0, 255, 127)
274
+ SteelBlue: Final[Tuple[int, int, int]] = (70, 130, 180)
275
+ Tan: Final[Tuple[int, int, int]] = (210, 180, 140)
276
+ Teal: Final[Tuple[int, int, int]] = (0, 128, 128)
277
+ Thistle: Final[Tuple[int, int, int]] = (216, 191, 216)
278
+ Tomato: Final[Tuple[int, int, int]] = (255, 99, 71)
279
+ Turquoise: Final[Tuple[int, int, int]] = (64, 224, 208)
280
+ Violet: Final[Tuple[int, int, int]] = (238, 130, 238)
281
+ Wheat: Final[Tuple[int, int, int]] = (245, 222, 179)
282
+ White: Final[Tuple[int, int, int]] = (255, 255, 255)
283
+ WhiteSmoke: Final[Tuple[int, int, int]] = (245, 245, 245)
284
+ Yellow: Final[Tuple[int, int, int]] = (255, 255, 0)
285
+ YellowGreen: Final[Tuple[int, int, int]] = (154, 205, 50)