sketch_2021_10_07_glyph

main
Alexandre B A Villares 2021-10-07 21:54:35 -03:00
rodzic 04afccc807
commit b54702d7a2
6 zmienionych plików z 1422 dodań i 0 usunięć

Wyświetl plik

@ -0,0 +1,36 @@
from villares.helpers import lerp_tuple
def my_line(xa, ya, xb, yb):
if 35 > dist(xa, ya, xb, yb) > 15:
xa2, ya2 = lerp_tuple((xa, ya), (xb, yb), 0.33)
xb2, yb2 = lerp_tuple((xa, ya), (xb, yb), 0.66)
line(xa, ya, xa2, ya2)
line(xb2, yb2, xb, yb)
else:
line(xa, ya, xb, yb)
class Glyph:
module_size = 5
glyphs = {}
def __init__(self, name):
self.name = name
self.glyphs[name] = self
self.paths = []
self.width = 5
def plot(self, ox=0, oy=0, module_size=None, **kwargs):
sw = kwargs.pop('stroke_weight', 2)
strokeWeight(sw)
ms = module_size or self.module_size
for path in self.paths:
noFill()
push()
translate(ox * ms, oy * ms)
for (xa, ya, d), (xb, yb, d) in zip(path, path[1:]):
my_line(xa * ms, ya * ms, xb * ms, yb *ms)
pop()

Wyświetl plik

@ -0,0 +1,40 @@
from __future__ import division
import pickle
from glyphs import Glyph
ADD, MOVE, EDIT = modes = ("add", "move", "edit")
mode = ADD
current_glyph = None # None or Glyph object
current_path = None # None or index to path
current_vertex = None # index to vertex in path for EDIT or (px, py) for MOVE
keys_pressed = {}
grid_size = 20
OX, OY = 3, 10
phrase = u''
def mouse_released(mb):
global current_vertex
current_path = None
def check_keys(*args, **kwargs):
if kwargs.get('ANY'):
return any(keys_pressed.get(k, False) for k in args)
else:
return all(keys_pressed.get(k, False) for k in args)
def key_released(k, kc):
global current_path, phrase
if check_keys(ALT):
pass
elif check_keys(BACKSPACE, DELETE, ANY=True):
if phrase:
phrase = phrase[:-1]
elif u'{}'.format(k) in 'abcdefghijklmnopqrstuvwxyz ':
phrase += k
print(phrase)

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 77 KiB

Wyświetl plik

@ -0,0 +1,57 @@
"""
A reboot of a simple poly / linerar glyphs editor
"""
import pickle
from glyphs import Glyph
import interface
def setup():
size(600 , 600)
strokeJoin(ROUND)
# interface.grid_size = 20
with open("glyphs.pickle") as f:
Glyph.glyphs = pickle.load(f)
print('glyphs loaded')
def draw():
background(200)
glyphs = Glyph.glyphs
gs = 7
t = interface.phrase
ox, oy = interface.OX, interface.OY
push()
x = 200
y = 10
for c in t:
gl = glyphs.get(c)
if gl:
gl.plot(ox + x, oy + y, gs, stroke_weight=4)
x += gl.width
else:
x += 5
if x * gs > width:
x = 0
y += 12
pop()
translate(0, height / 2)
x, y = 1 * gs, 2 * gs
for gl in Glyph.glyphs.values():
push()
translate(x, y)
s = 0.45
gl.plot(module_size=gs * s, stroke_weight=1)
pop()
x += (gl.width + 1) * gs * s
if x > width - 40:
x = gs
y += 4 * gs
def keyPressed():
interface.keys_pressed[key if key != CODED else keyCode] = True
def keyReleased():
interface.key_released(key, keyCode)
interface.keys_pressed[key if key != CODED else keyCode] = False

Wyświetl plik

@ -26,6 +26,12 @@ Here are listed some of the tools I have been using:
## [2018](2018.md) | [2019](2019.md) | [2020](2020.md) | 2021
---
![sketch_2021_10_07_glyph](2021/sketch_2021_10_07_glyph/sketch_2021_10_07_glyph.png)
[sketch_2021_10_07_glyph](https://github.com/villares/sketch-a-day/tree/master/2021/sketch_2021_10_07_glyph) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
---
![sketch_2021_10_06b](2021/sketch_2021_10_06b/sketch_2021_10_06b.png)