from __future__ import (absolute_import, division, print_function,
unicode_literals)
import re
from .. import Draft
color_map = {
'A': (92, 140, 168), # azure / light blue
'G': (0, 104, 24), # green
'B': (44, 44, 128), # blue
'K': (0, 0, 0), # black
'W': (224, 224, 224), # white
'Y': (232, 192, 0), # yellow
'R': (200, 0, 44), # red
'P': (120, 0, 120), # purple
'C': (208, 80, 84), # ??? light red of some kind
'LP': (180, 104, 172), # light purple
}
[docs]def tartan(sett, repeats=1):
colors = []
for piece in sett.split(', '):
m = re.match('([A-Z]+)(\d+)', piece)
colors.append((
color_map[m.group(1)],
int(m.group(2)),
))
# tartan is always the same design mirrored once
colors.extend(reversed(colors))
print("Threads per repeat: %d" %
sum(count for color, count in colors))
# tartan is always 2/2 twill
# we'll need 4 shafts and 4 treadles
draft = Draft(num_shafts=4, num_treadles=4)
# do tie-up
for ii in range(4):
draft.treadles[3 - ii].shafts.add(draft.shafts[ii])
draft.treadles[3 - ii].shafts.add(draft.shafts[(ii + 1) % 4])
thread_no = 0
for ii in range(repeats):
for color, count in colors:
for jj in range(count):
draft.add_warp_thread(
color=color,
shaft=thread_no % 4,
)
draft.add_weft_thread(
color=color,
treadles=[thread_no % 4],
)
thread_no += 1
return draft
# Tartan Setts
gordon_red = ('A12, G12, R18, K12, R18, B18, W4, C16, W4, K32, A12, '
'W4, B32, W4, G36')
gordon_modern = 'B24, K4, B4, K4, B4, K24, G24, Y4, G24, K24, B24, K4, B4'
gordon_dress = ('W4, B2, W24, B4, W4, K16, B16, K4, B4, K4, B16, K16, '
'G16, K2, Y4, K2, G16, K16, W4, B4, W24, B2, W4')
gordon_old = 'B24, K4, B4, K4, B4, K24, G24, Y4, G24, K24, B24, K4, B4'
gordon_red_muted = ('A12, G12, R18, K12, R18, B18, W4, C16, W4, K32, A12, '
'W4, B32, W4, G36')
gordon_red_old_huntly = ('B28, W2, G16, W2, DG32, A12, W2, B28, W2, G28, '
'A12, G12, R16, DG12, R16, DG2')
gordon_old_ancient = 'K8, B46, K46, G44, Y6, G6, Y12'
gordon_of_abergeldie = 'G36, Y2, LP12, K2, W2, R40'
gordon_of_esselmont = 'K8, P46, K46, G44, Y6, G6, Y12'
gordon_roxburgh_district = 'B4, R2, G32, B16, W2, B2, W2, B32'
gordon_roxburgh_red = 'B6, DG52, B6, R6, B40, R6, B6, R52, DG10, W6'
gordon_roxburgh_red_muted = 'B6, DG52, B6, R6, B40, R6, B6, R52, DG10, W6'
gordon_huntly_district = ('G16, R4, G16, R24, B2, R2, B4, R2, B2, R24, B2, '
'R2, B4, R2, B2, R24, W2, R6, Y2, B24, R6, B24, '
'Y2, R6, W2, R24, G4, R6, G4, R24, G16, R4, G16')
gordon_aberdeen_district = ('W4, LG8, K32, W4, P12, A8, W4, A8, P12, W4, P6, '
'R16, LR6, W4, LR6, R16, P6, W4, K24, LG8, K24, '
'W4, P6, R16, LR6, W4, LR6, R16, P6, W4, A20, W4, '
'R12, LR6, W2, LR6, R12, W4, LG8, K32, W4, R46, '
'LR6, W4')
gordon_huntly = 'R4, MB6, FB24, K22, MG22, Y4'