Skip to content

Commit 6900054

Browse files
authored
Integrating skia (#344)
1 parent d21185b commit 6900054

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+2079
-1067
lines changed

.github/workflows/sanityTesting.yml

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ jobs:
2626
python -m pip install --upgrade pip
2727
pip install wheel
2828
pip install .
29+
sudo apt-get install x11-utils
2930
- name: Run headless tests
3031
uses: GabrielBB/xvfb-action@v1
3132
with:

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,7 @@ profiling/*.prof
114114

115115
# IntelliJ's project specific settings files
116116
.idea/
117+
118+
119+
# VSCode config files
120+
.vscode

p5/core/attribs.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def stroke_weight(thickness):
8585
:type weight: int
8686
8787
"""
88-
p5.renderer.stroke_weight = thickness
88+
p5.renderer.style.stroke_weight = thickness
8989

9090

9191
def no_stroke():

p5/core/color.py

+39-38
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@
2323
from ..pmath import constrain
2424

2525
from .constants import colour_codes
26+
from . import p5
2627

27-
__all__ = ['color_mode', 'Color']
28+
__all__ = ["color_mode", "Color"]
2829

29-
color_parse_mode = 'RGB'
30-
color_range = (255, 255, 255, 255)
3130

3231

3332
def color_mode(mode, max_1=255, max_2=None, max_3=None, max_alpha=255):
@@ -54,17 +53,14 @@ def color_mode(mode, max_1=255, max_2=None, max_3=None, max_alpha=255):
5453
:type max_alpha: int
5554
5655
"""
57-
global color_parse_mode
58-
global color_range
59-
6056
if max_2 is None:
6157
max_2 = max_1
6258

6359
if max_3 is None:
6460
max_3 = max_1
6561

66-
color_range = (max_1, max_2, max_3, max_alpha)
67-
color_parse_mode = mode
62+
p5.renderer.style.color_range = (max_1, max_2, max_3, max_alpha)
63+
p5.renderer.style.color_parse_mode = mode
6864

6965

7066
def parse_color(*args, color_mode='RGB', normed=False, **kwargs):
@@ -109,7 +105,12 @@ def parse_color(*args, color_mode='RGB', normed=False, **kwargs):
109105
elif 'a' in kwargs:
110106
alpha = kwargs['a']
111107
else:
112-
alpha = 1 if normed else color_range[3]
108+
if normed:
109+
alpha = 1
110+
else:
111+
# Color object are sometimes created before we initialise the renderer
112+
# So we have to check if the renderer is None or not
113+
alpha = p5.renderer.style.color_range[3] if p5.renderer else 255
113114

114115
hsb = None
115116
rgb = None
@@ -179,22 +180,22 @@ def parse_color(*args, color_mode='RGB', normed=False, **kwargs):
179180
if not (hsb is None):
180181
h, s, b = hsb
181182
if not normed:
182-
h = constrain(h / color_range[0], 0, 1)
183-
s = constrain(s / color_range[1], 0, 1)
184-
b = constrain(b / color_range[2], 0, 1)
183+
h = constrain(h / p5.renderer.style.color_range[0] if p5.renderer else 255, 0, 1)
184+
s = constrain(s / p5.renderer.style.color_range[1] if p5.renderer else 255, 0, 1)
185+
b = constrain(b / p5.renderer.style.color_range[2] if p5.renderer else 255, 0, 1)
185186
red, green, blue = colorsys.hsv_to_rgb(h, s, b)
186187

187188
if not (rgb is None):
188189
r, g, b = rgb
189190
if not normed:
190-
red = constrain(r / color_range[0], 0, 1)
191-
green = constrain(g / color_range[1], 0, 1)
192-
blue = constrain(b / color_range[2], 0, 1)
191+
red = constrain(r / p5.renderer.style.color_range[0] if p5.renderer else 255, 0, 1)
192+
green = constrain(g / p5.renderer.style.color_range[1] if p5.renderer else 255, 0, 1)
193+
blue = constrain(b / p5.renderer.style.color_range[2] if p5.renderer else 255, 0, 1)
193194
else:
194195
red, green, blue = r, g, b
195196

196197
if not normed:
197-
alpha = constrain(alpha / color_range[3], 0, 1)
198+
alpha = constrain(alpha / p5.renderer.style.color_range[3] if p5.renderer else 255, 0, 1)
198199

199200
return red, green, blue, alpha
200201

@@ -204,8 +205,8 @@ class Color:
204205

205206
def __init__(self, *args, color_mode=None, normed=False, **kwargs):
206207
if color_mode is None:
207-
color_mode = color_parse_mode
208-
208+
color_mode = p5.renderer.style.color_parse_mode if p5.renderer else "RGB"
209+
209210
if (len(args) == 1) and isinstance(args[0], Color):
210211
r = args[0]._red
211212
g = args[0]._green
@@ -324,11 +325,11 @@ def gray(self, value):
324325
@property
325326
def alpha(self):
326327
"""The alpha value for the color."""
327-
return self._alpha * color_range[3]
328+
return self._alpha * p5.renderer.style.color_range[3]
328329

329330
@alpha.setter
330331
def alpha(self, value):
331-
self._alpha = constrain(value / color_range[3], 0, 1)
332+
self._alpha = constrain(value / p5.renderer.style.color_range[3], 0, 1)
332333

333334
@property
334335
def rgb(self):
@@ -349,31 +350,31 @@ def rgba(self):
349350
@property
350351
def red(self):
351352
"""The red component of the color"""
352-
return self._red * color_range[0]
353+
return self._red * p5.renderer.style.color_range[0]
353354

354355
@red.setter
355356
def red(self, value):
356-
self._red = constrain(value / color_range[0], 0, 1)
357+
self._red = constrain(value / p5.renderer.style.color_range[0], 0, 1)
357358
self._recompute_hsb()
358359

359360
@property
360361
def green(self):
361362
"""The green component of the color"""
362-
return self._green * color_range[1]
363+
return self._green * p5.renderer.style.color_range[1]
363364

364365
@green.setter
365366
def green(self, value):
366-
self._green = constrain(value / color_range[1], 0, 1)
367+
self._green = constrain(value / p5.renderer.style.color_range[1], 0, 1)
367368
self._recompute_hsb()
368369

369370
@property
370371
def blue(self):
371372
"""The blue component of the color"""
372-
return self._blue * color_range[2]
373+
return self._blue * p5.renderer.style.color_range[2]
373374

374375
@blue.setter
375376
def blue(self, value):
376-
self._blue = constrain(value / color_range[2], 0, 1)
377+
self._blue = constrain(value / p5.renderer.style.color_range[2], 0, 1)
377378
self._recompute_hsb()
378379

379380
@property
@@ -395,31 +396,31 @@ def hsba(self):
395396
@property
396397
def hue(self):
397398
"""The hue component of the color"""
398-
return self._hue * color_range[0]
399+
return self._hue * p5.renderer.style.color_range[0]
399400

400401
@hue.setter
401402
def hue(self, value):
402-
self._hue = constrain(value / color_range[0], 0, 1)
403+
self._hue = constrain(value / p5.renderer.style.color_range[0], 0, 1)
403404
self._recompute_rgb()
404405

405406
@property
406407
def saturation(self):
407408
"""The saturation component of the color"""
408-
return self._saturation * color_range[1]
409+
return self._saturation * p5.renderer.style.color_range[1]
409410

410411
@saturation.setter
411412
def saturation(self, value):
412-
self._saturation = constrain(value / color_range[1], 0, 1)
413+
self._saturation = constrain(value / p5.renderer.style.color_range[1], 0, 1)
413414
self._recompute_rgb()
414415

415416
@property
416417
def brightness(self):
417418
"""The brightness component of the color"""
418-
return self._brightness * color_range[2]
419+
return self._brightness * p5.renderer.style.color_range[2]
419420

420421
@brightness.setter
421422
def brightness(self, value):
422-
self._brightness = constrain(value / color_range[2], 0, 1)
423+
self._brightness = constrain(value / p5.renderer.style.color_range[2], 0, 1)
423424
self._recompute_rgb()
424425

425426
# ...and some convenient aliases
@@ -435,21 +436,21 @@ def brightness(self, value):
435436
@property
436437
def b(self):
437438
"""The blue or the brightness value (depending on the color mode)."""
438-
if color_parse_mode == 'RGB':
439+
if p5.renderer.style.color_parse_mode == 'RGB':
439440
return self.blue
440-
elif color_parse_mode == 'HSB':
441+
elif p5.renderer.style.color_parse_mode == 'HSB':
441442
return self.brightness
442443
else:
443-
raise ValueError("Unknown color mode {}".format(color_parse_mode))
444+
raise ValueError("Unknown color mode {}".format(p5.renderer.style.color_parse_mode))
444445

445446
@b.setter
446447
def b(self, value):
447-
if color_parse_mode == 'RGB':
448+
if p5.renderer.style.color_parse_mode == 'RGB':
448449
self.blue = value
449-
elif color_parse_mode == 'HSB':
450+
elif p5.renderer.style.color_parse_mode == 'HSB':
450451
self.brightness = value
451452
else:
452-
raise ValueError("Unknown color mode {}".format(color_parse_mode))
453+
raise ValueError("Unknown color mode {}".format(p5.renderer.style.color_parse_mode))
453454

454455
@property
455456
def hex(self):

0 commit comments

Comments
 (0)