Tartans work and possible simplification
This commit is contained in:
parent
ec72794f6e
commit
3da2681f24
|
@ -22,6 +22,8 @@ pre {
|
|||
|
||||
.figure {
|
||||
float: right;
|
||||
padding: 0.5em;
|
||||
padding: 0.25em;
|
||||
margin: 0.5em;
|
||||
font-size: small;
|
||||
border: solid black 1px;
|
||||
}
|
|
@ -2,11 +2,15 @@ SubDir TOP tartans ;
|
|||
|
||||
TARTAN_TMPL = $(SUBDIR)/tartan.m4 ;
|
||||
TARTANTOMDWN = $(SUBDIR)/tartantomdwn ;
|
||||
LSTARTANS = $(SUBDIR)/lstartans ;
|
||||
LOOM = $(SUBDIR)/loom.py ;
|
||||
|
||||
rule Tartan {
|
||||
local tartans = [ FGristFiles $(1:S=.tartan) ] ;
|
||||
|
||||
DIRLIST on [ FGristFiles index.mdwn ] = $(LSTARTANS) ;
|
||||
AutoIndex index.mdwn : index.head.mdwn : $(1:S=.tartan) ;
|
||||
|
||||
for t in $(tartans) {
|
||||
local png = $(t:S=.png:D=img:G=) ;
|
||||
local mdwn = $(t:S=.mdwn) ;
|
||||
|
@ -32,8 +36,10 @@ rule TartanToPng {
|
|||
SEARCH on $(2) = $(SEARCH_SOURCE) ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
actions TartanToMdwn {
|
||||
$(TARTANTOMDWN) $(1:S=) < $(2) > $(1)
|
||||
$(TARTANTOMDWN) $(1:S=.png:D=img) $(TARTAN_TMPL) < $(2) > $(1)
|
||||
}
|
||||
|
||||
actions TartanToPng {
|
||||
|
|
|
@ -3,7 +3,7 @@ Sett: R4 G24 B4 G10 B36 W6 R4 W4
|
|||
|
||||
Created by Ralph Stevenson Jr and Charles Hargis in 2005 for the city's
|
||||
tricentennial anniversary (1706-2006). It is similar in design to the
|
||||
[New Mexico tartan](nm), with a little less green, and white instead of
|
||||
[New Mexico tartan](nm.html), with a little less green, and white instead of
|
||||
yellow, with a thicker center band.
|
||||
|
||||
[Bally Dun Celtic Treasures](http://www.ballydun.com/) sells this tartan.
|
|
@ -1,88 +1,38 @@
|
|||
#! /usr/bin/python
|
||||
|
||||
import cgitb; cgitb.enable()
|
||||
import htmltmpl
|
||||
import loom
|
||||
import re
|
||||
import sys
|
||||
import cgi
|
||||
import os
|
||||
import rfc822
|
||||
import urllib
|
||||
import cStringIO as StringIO
|
||||
|
||||
var_re = re.compile('\$(\w+|{\w+})')
|
||||
def fill_template(tmpl, **keywds):
|
||||
def repl(match):
|
||||
var = match.group(0)[1:]
|
||||
var = var.strip('{}')
|
||||
return keywds[var]
|
||||
return var_re.sub(repl, tmpl)
|
||||
|
||||
|
||||
def serve(s, c_t):
|
||||
o = ('Content-type: %s\r\nContent-length: %d\r\n\r\n%s' %
|
||||
(c_t, len(s), s))
|
||||
sys.stdout.write(o)
|
||||
import os
|
||||
import sys
|
||||
|
||||
f = cgi.FieldStorage()
|
||||
|
||||
s = f.getfirst('sett')
|
||||
if s:
|
||||
print('Content-type: image/png')
|
||||
print('')
|
||||
sett = loom.str_to_sett(s)
|
||||
l = loom.tartan(sett)
|
||||
p = StringIO.StringIO()
|
||||
l.png(p)
|
||||
|
||||
serve(p.getvalue(), 'image/png')
|
||||
l.png(sys.stdout)
|
||||
else:
|
||||
manager = htmltmpl.TemplateManager(precompile=0)
|
||||
tmpl = manager.prepare('/home/neale/lib/wiki/templates/page.tmpl')
|
||||
processor = htmltmpl.TemplateProcessor(html_escape=False)
|
||||
|
||||
t = os.environ.get('PATH_INFO', '').strip('/')
|
||||
if not t:
|
||||
t = f.getfirst('t', 'Unknown')
|
||||
s = f.getfirst('s')
|
||||
if t and not s:
|
||||
try:
|
||||
m = rfc822.Message(file('%s.tartan' % t))
|
||||
t = m.get('Title', t)
|
||||
s = m.get('Sett')
|
||||
except IOError:
|
||||
pass
|
||||
|
||||
if not t or not s:
|
||||
# Default to Black Watch
|
||||
t = 'Black Watch'
|
||||
s = ('B22 BK2 B2 BK2 B2 BK16 G16 BK2 G16 BK16 B16 BK2 B2 '
|
||||
'BK2 G10 BK8 DB9 BK1 DB1')
|
||||
s_st = s.replace(' ', '')
|
||||
s_st = s_st.replace('\n' ,'')
|
||||
s_ = s.replace(' ', '').replace('\n', '')
|
||||
|
||||
content = '''
|
||||
<ul style="background: white; float: right;">
|
||||
<li><a href="design.cgi?sett=%(sett_compressed)s">image only</a></li>
|
||||
<li><a href="/~neale/tartans">More tartans</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>woozle.org tartan designer</h2>
|
||||
<form action="design" style="padding: 10px;">
|
||||
<input name="t" value="%(tartan)s" />
|
||||
<textarea name="s" rows="3" cols="40">%(sett)s</textarea> <br />
|
||||
<input type="submit" value="Generate" />
|
||||
</form>
|
||||
|
||||
<div style="background: url(design.cgi?sett=%(sett_compressed)s);
|
||||
height: 400px;
|
||||
border: solid black 40px;">
|
||||
</div>
|
||||
''' % {'tartan': t,
|
||||
'sett': s,
|
||||
'sett_compressed': urllib.quote(s_st)}
|
||||
|
||||
processor.set('title', t)
|
||||
processor.set('content', content)
|
||||
page = processor.process(tmpl)
|
||||
|
||||
serve(page, 'text/html')
|
||||
print('Content-type: text/html')
|
||||
print('')
|
||||
sys.stdout.flush()
|
||||
content = ('Name: %s\nSett: %s\n' % (t, s))
|
||||
png = 'design.cgi?sett=%s' % urllib.quote(s_)
|
||||
cvt = os.popen('./tartantomdwn %s tartan.m4 | ../mdwntohtml ../template.xml' % (png,),
|
||||
'w')
|
||||
cvt.write(content)
|
||||
cvt.close()
|
||||
|
|
|
@ -6,7 +6,7 @@ description.
|
|||
<div class="figure">
|
||||
<img src="img/nmloe.png" alt="tartan image" />
|
||||
<br />
|
||||
<a href="nmloe">
|
||||
<a href="nmloe.html">
|
||||
New Mexico Land Of Enchantment
|
||||
</a>
|
||||
<br />
|
||||
|
@ -20,3 +20,4 @@ are some tartans I've made with it.
|
|||
If you have one you'd like to contribute to my database, or would like
|
||||
the code that generates this stuff, feel free to [email
|
||||
me](mailto:neale-tartan@woozle.org).
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
#! /bin/sh
|
||||
|
||||
cat $1; shift
|
||||
|
||||
for i in "$@"; do
|
||||
base=$(basename $i .tartan)
|
||||
name=$(awk -F': ' '(/^Name:/) {print $2; exit;}' $i)
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 147 KiB |
|
@ -1,9 +1,9 @@
|
|||
Name: New Mexico
|
||||
Sett: R4 G24 B4 G16 B36 Y8 R4 Y4
|
||||
|
||||
Designed by Ralph Stevenson Jr, [officially recognized in 2003](nm-proc)
|
||||
Designed by Ralph Stevenson Jr, [officially recognized in 2003](nm-proc.png)
|
||||
by the Secretary of State. It is similar in design to the [Albuquerque
|
||||
tartan](albuquerque). I bought a scarf of this plaid from
|
||||
tartan](albuquerque.html). I bought a scarf of this plaid from
|
||||
Mr. Stevenson; it came with a photocopy of the tartan registration and a
|
||||
few other documents.
|
||||
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
Title: TARTAN Tartan
|
||||
|
||||
divert(1)
|
||||
<div style="background: url(img/BASE.png);
|
||||
height: 400px;
|
||||
border: solid black 40px;
|
||||
<div style="background: url(IMAGE);
|
||||
height: 300px;
|
||||
border: solid black 10px;
|
||||
clear: both;">
|
||||
</div>
|
||||
|
||||
divert(1)
|
||||
|
||||
I place this image in the public domain, in the hope that it will
|
||||
increase interest in tartans and tartan design.
|
||||
|
||||
<form action="design.cgi">
|
||||
<fieldset>
|
||||
<legend>Tartan Designer</legend>
|
||||
<label for="t">Name:</label> <input name="t" value="TARTAN" /> <br/>
|
||||
<label for="s">Sett:</label> <input name="s" value="SETT" /> <br/>
|
||||
<label for="t">Name:</label> <input name="t" id="t" value="TARTAN" /> <br/>
|
||||
<label for="s">Sett:</label> <input name="s" id="s" value="SETT" style="width: 90%" /> <br/>
|
||||
<input type="submit" value="Design" />
|
||||
</fieldset>
|
||||
</form>
|
||||
|
|
|
@ -18,5 +18,5 @@ header () {
|
|||
}
|
||||
|
||||
eval $(header)
|
||||
m4 -DTARTAN="$TARTAN" -DSETT="$SETT" -DBASE="$1" tartan.m4 -
|
||||
m4 -DTARTAN="$TARTAN" -DSETT="$SETT" -DIMAGE="$1" $2 -
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ Title: Toys
|
|||
Here is some various junk I've done. Maybe you'll find it amusing.
|
||||
Maybe you'll just wonder why I spend so much time on this garbage.
|
||||
|
||||
* I like [tartans](../tartans/).
|
||||
* Play [a fun game](fungame.html)!
|
||||
* If you need to write someone a letter but really don't want to, try my
|
||||
[smalltalk generator](smalltalk.cgi).
|
||||
|
|
Loading…
Reference in New Issue