Merge branch 'master' of git+ssh://gitbox/piccreate
This commit is contained in:
+7
-40
@@ -10,6 +10,7 @@ Usage: `basename $0` [-h] [-i] [-j nb_jobs] command arg_list
|
||||
-c give the path to the cfg file
|
||||
-i give the path of the svg files without the last /
|
||||
-k chek if the jpg already exist
|
||||
-s set the sleeptime while there are too many simultanious jobs
|
||||
-j Set number of simultanious jobs. Default is 2
|
||||
-o directory where the files should be moved to after creation.
|
||||
Default ist PICCREATE_OUT
|
||||
@@ -17,40 +18,10 @@ Usage: `basename $0` [-h] [-i] [-j nb_jobs] command arg_list
|
||||
`basename $0` -i file -c config
|
||||
`basename $0` -j 3 -i file -c config"
|
||||
|
||||
function queue {
|
||||
QUEUE="$QUEUE $1"
|
||||
NUM=$(($NUM+1))
|
||||
}
|
||||
function regeneratequeue {
|
||||
OLDREQUEUE=$QUEUE
|
||||
QUEUE=""
|
||||
NUM=0
|
||||
for PID in $OLDREQUEUE
|
||||
do
|
||||
if [ -d /proc/$PID ] ; then
|
||||
QUEUE="$QUEUE $PID"
|
||||
NUM=$(($NUM+1))
|
||||
fi
|
||||
done
|
||||
}
|
||||
function checkqueue {
|
||||
OLDCHQUEUE=$QUEUE
|
||||
for PID in $OLDCHQUEUE
|
||||
do
|
||||
if [ ! -d /proc/$PID ] ; then
|
||||
regeneratequeue # at least one PID has finished
|
||||
echo $PID
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
function cfg_parser {
|
||||
INI_FILE=$1
|
||||
SECTION=$2
|
||||
echo $1
|
||||
echo $2
|
||||
eval `sed -n -e "/^\[$SECTION\]/,/^\s*\[/{/^[^;].*\=.*/p;}" < $INI_FILE`>> trr.txt
|
||||
echo 'helololo'
|
||||
}
|
||||
function get_filepath {
|
||||
# probiere alle möglichen Kombinationen wo das file stehen könnte je
|
||||
@@ -116,8 +87,9 @@ if [ $# -eq 0 ]; then # must be at least one arg
|
||||
fi
|
||||
|
||||
CHECKFILE=0
|
||||
SLEEPTIME=0.5
|
||||
|
||||
while getopts "j:i:kc:o:hc:" OPT; do # "j:" waits for an argument "h" doesnt
|
||||
while getopts "j:i:kc:s:o:hc:" OPT; do # "j:" waits for an argument "h" doesnt
|
||||
case $OPT in
|
||||
h) echo "$USAGE"
|
||||
exit 0 ;;
|
||||
@@ -125,6 +97,7 @@ while getopts "j:i:kc:o:hc:" OPT; do # "j:" waits for an argument "h" doesnt
|
||||
k) CHECKFILE=1 ;;
|
||||
c) CFG_FILENAME=$OPTARG ;;
|
||||
o) OUTDIR=$OPTARG ;;
|
||||
s) SLEEPTIME=$OPTARG ;;
|
||||
i) INPUT_FILENAME=$OPTARG ;;
|
||||
*) echo "$USAGE" >&2; exit 1; # Default.
|
||||
esac
|
||||
@@ -139,27 +112,21 @@ check_params
|
||||
echo $INPUT_FILE
|
||||
for i in `ls $INPUT_FILE| grep .svg `
|
||||
do
|
||||
echo $i
|
||||
echo $CHECKFILE
|
||||
ID=`echo "$i" | sed -e 's/;.*//g'`
|
||||
PIC_NAME=`echo "$i" | sed -e 's/.svg/.jpg/g'`
|
||||
FILE_PATH=$INPUT_FILE/$PIC_NAME
|
||||
if [ -s $FILE_PATH ] && [ $CHECKFILE -eq 1 ]
|
||||
then
|
||||
echo $PIC_NAME exists!
|
||||
echo $PIC_NAME exists
|
||||
else
|
||||
RESIZE="${width}x${height}"
|
||||
SWITCHES="-density $density $INPUT_FILE/$ID -resize $RESIZE $INPUT_FILE/$PIC_NAME"
|
||||
CMDLINE="$CMD $SWITCHES"
|
||||
echo $CMDLINE
|
||||
(echo $ID; $CMDLINE) &
|
||||
|
||||
PID=$!
|
||||
queue $PID
|
||||
|
||||
while [ $NUM -ge $MAX_NPROC ]; do
|
||||
checkqueue
|
||||
sleep 0.5
|
||||
while [ `ps -clx|grep -w 'convert' |wc -l` -ge $MAX_NPROC ]; do
|
||||
sleep $SLEEPTIME
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -29,18 +29,21 @@ name = Name
|
||||
# hier der Inhalt aus der Eingabedatei, der geschrieben werden soll
|
||||
content=${name}
|
||||
# Ab dem Punkt wird zu schreiben begonnen
|
||||
x=0
|
||||
x=-10
|
||||
y=0
|
||||
length=200
|
||||
height=850
|
||||
width=2640
|
||||
# Fontname und Fonttyp
|
||||
fontname=ausgangsschrift
|
||||
glyph_space=20
|
||||
counter_replace=True
|
||||
#align=center,left,right
|
||||
align=left
|
||||
align=center
|
||||
yalign=center
|
||||
autoscale=True
|
||||
|
||||
[jpgs]
|
||||
width=1900
|
||||
height=700
|
||||
width=2776
|
||||
height=898
|
||||
format=jpg
|
||||
density=300
|
||||
|
||||
@@ -39,7 +39,7 @@ NPATTERN=9
|
||||
FONTNAME=d.svg
|
||||
#
|
||||
[e]
|
||||
XSTEP=40
|
||||
XSTEP=40.0
|
||||
XMIN=34.977264
|
||||
XMAX=67.112206
|
||||
YSTEP=56.548093
|
||||
@@ -69,7 +69,7 @@ NPATTERN=10
|
||||
FONTNAME=g.svg
|
||||
#
|
||||
[h]
|
||||
XSTEP=39.362423
|
||||
XSTEP=45.0
|
||||
XMIN=40.923481
|
||||
XMAX=80.285904
|
||||
YSTEP=83.657337
|
||||
@@ -99,7 +99,7 @@ NPATTERN=4
|
||||
FONTNAME=j.svg
|
||||
#
|
||||
[k]
|
||||
XSTEP=39.362423
|
||||
XSTEP=45.0
|
||||
XMIN=40.923481
|
||||
XMAX=80.285904
|
||||
YSTEP=84.097073
|
||||
|
||||
+24
-24
@@ -1,98 +1,98 @@
|
||||
<g transform="translate(${posx},${posy})">
|
||||
<text
|
||||
x="46.606346"
|
||||
x="26.606346"
|
||||
y="93.957718"
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"><tspan
|
||||
x="46.606346"
|
||||
x="26.606346"
|
||||
y="93.957718"
|
||||
style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">${x1}</tspan></text>
|
||||
<text
|
||||
x="56.4799"
|
||||
x="36.4799"
|
||||
y="59.880642"
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"><tspan
|
||||
x="56.4799"
|
||||
x="36.4799"
|
||||
y="59.880642"
|
||||
style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;text-anchor:end;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">${x3}</tspan></text>
|
||||
<text
|
||||
x="60.868507"
|
||||
x="40.868507"
|
||||
y="87.16584"
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-weight:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"><tspan
|
||||
x="60.868507"
|
||||
x="40.868507"
|
||||
y="87.16584"
|
||||
style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">${x6}</tspan></text>
|
||||
<text
|
||||
x="80.285904"
|
||||
x="60.285904"
|
||||
y="104.04529"
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-weight:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"><tspan
|
||||
x="80.285904"
|
||||
x="60.285904"
|
||||
y="104.04529"
|
||||
style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">${x7}</tspan></text>
|
||||
<text
|
||||
x="53.390858"
|
||||
x="33.390858"
|
||||
y="110.72576"
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"><tspan
|
||||
x="53.390858"
|
||||
x="33.390858"
|
||||
y="110.72576"
|
||||
style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">${x5}</tspan></text>
|
||||
<text
|
||||
x="41.175716"
|
||||
x="21.175716"
|
||||
y="140.00911"
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"><tspan
|
||||
x="41.175716"
|
||||
x="21.175716"
|
||||
y="140.00911"
|
||||
style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">${x4}</tspan></text>
|
||||
<text
|
||||
x="73.59874"
|
||||
x="53.59874"
|
||||
y="61.912037"
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-weight:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"><tspan
|
||||
x="73.59874"
|
||||
x="53.59874"
|
||||
y="61.912037"
|
||||
style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">${x2}</tspan></text>
|
||||
<text
|
||||
x="74.532158"
|
||||
x="54.532158"
|
||||
y="139.71278"
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"><tspan
|
||||
x="74.532158"
|
||||
x="54.532158"
|
||||
y="139.71278"
|
||||
style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">${x8}</tspan></text>
|
||||
<circle
|
||||
r="2.2"
|
||||
transform="translate(40.923481,129.55195)"
|
||||
transform="translate(20.923481,129.55195)"
|
||||
id="circle4" />
|
||||
<circle
|
||||
r="2.2"
|
||||
transform="translate(60.861691,56.351773)"
|
||||
transform="translate(40.861691,56.351773)"
|
||||
id="circle4-6" />
|
||||
<circle
|
||||
r="2.2"
|
||||
transform="translate(52.540236,100.51006)"
|
||||
transform="translate(32.540236,100.51006)"
|
||||
id="circle4-5" />
|
||||
<circle
|
||||
r="2.2"
|
||||
transform="translate(74.433397,129.29941)"
|
||||
transform="translate(54.433397,129.29941)"
|
||||
id="circle4-9" />
|
||||
<circle
|
||||
r="2.2"
|
||||
transform="translate(49.099514,90.933613)"
|
||||
transform="translate(29.099514,90.933613)"
|
||||
id="circle4-3" />
|
||||
<circle
|
||||
r="2.2"
|
||||
transform="translate(65.637986,90.933613)"
|
||||
transform="translate(45.637986,90.933613)"
|
||||
id="circle4-91" />
|
||||
<circle
|
||||
r="2.2"
|
||||
transform="translate(69.953063,59.165573)"
|
||||
transform="translate(49.953063,59.165573)"
|
||||
id="circle4-6-0" />
|
||||
<circle
|
||||
r="2.2"
|
||||
transform="translate(76.771595,100.54595)"
|
||||
transform="translate(56.771595,100.54595)"
|
||||
id="circle4-6-7" />
|
||||
</g>
|
||||
|
||||
+1
-1
@@ -76,7 +76,7 @@ z;z
|
||||
Z;Z
|
||||
plus;+
|
||||
scharfs;ß
|
||||
slash;
|
||||
slash;/
|
||||
space;
|
||||
minus;-
|
||||
komma;,
|
||||
|
||||
|
+5
-8
@@ -1,9 +1,6 @@
|
||||
Kennummer;Name
|
||||
a-z;mnopqrstuvwxyzabcdefghijkl
|
||||
A-Z;ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
ü;:.:.:.:...---++!!&&
|
||||
001;Michael
|
||||
yxelbüxel;Eva
|
||||
063453;Nicola Jane
|
||||
333;&
|
||||
12;ä Ä é è ëïóöÖß/-,:!'a&b+úüÜ
|
||||
001;Au
|
||||
002;Rau
|
||||
003;Lux
|
||||
004;May
|
||||
005;Johnson-Kronh-Wattenberg
|
||||
|
||||
|
+118
-29
@@ -21,19 +21,34 @@ def create_picture_frame( config ):
|
||||
params = dict()
|
||||
params['width'] = config.get('globals', 'width')
|
||||
params['height'] = config.get('globals', 'height')
|
||||
params['background'] = config.get('globals', 'background')
|
||||
|
||||
#echo '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">'
|
||||
begintpl = '''<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="1.1"
|
||||
width="${width}"
|
||||
height="${height}"
|
||||
>
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="1.1"
|
||||
width="${width}"
|
||||
height="${height}"
|
||||
>
|
||||
'''
|
||||
imagetpl = ''' <image width="${width}" height="${height}"
|
||||
xlink:href="file://${background}">
|
||||
</image>
|
||||
'''
|
||||
svgbegin = Template( begintpl ).substitute(params)
|
||||
# falls ein Hintergrundbild verwendet werden soll, dann das genauso gross
|
||||
# machen...
|
||||
try:
|
||||
background = config.get('globals', 'background')
|
||||
font_path = os.path.expandvars(os.path.join('$PICCREATE_BACKGROUNDS', background ))
|
||||
params['background'] = os.path.normpath(font_path)
|
||||
svgbegin = svgbegin + Template( imagetpl ).substitute(params)
|
||||
except ConfigParser.NoOptionError:
|
||||
# dann eben kein Hintergrundbild
|
||||
pass
|
||||
svgend = '</svg>'
|
||||
return svgbegin, svgend
|
||||
|
||||
@@ -41,13 +56,76 @@ def write_font_line( content, font, params ):
|
||||
''' erzeugt den SVG Teil des Bildes aus Einzelkomponenten
|
||||
'''
|
||||
w = Word(content, font, params)
|
||||
return w.GetSVG()
|
||||
wordsvg = w.GetSVG()
|
||||
|
||||
# falls das Wort nun skaliert werden soll
|
||||
if params.has_key('scale'):
|
||||
params['xscale'] = params['scale']
|
||||
params['yscale'] = params['scale']
|
||||
if not params.has_key('xscale'):
|
||||
params['xscale'] = 1.0
|
||||
if not params.has_key('yscale'):
|
||||
params['yscale'] = 1.0
|
||||
|
||||
pic_width = float(params['width'])
|
||||
pic_height = float(params['height'])
|
||||
|
||||
if params.has_key('autoscale'):
|
||||
wordlength = w.calc_length()
|
||||
wordheight = w.calc_height()
|
||||
#print wordlength, wordheight
|
||||
#print pic_width, pic_height
|
||||
fw = pic_width / wordlength
|
||||
fh = pic_height / wordheight
|
||||
#print fw, fh
|
||||
if fw < fh: scale_faktor = fw
|
||||
else: scale_faktor = fh
|
||||
params['xscale'] = scale_faktor
|
||||
params['yscale'] = scale_faktor
|
||||
else:
|
||||
scale_faktor = 1.0
|
||||
|
||||
# berechne immer den richtigen Startpunkt, je nach Bündigkeit
|
||||
if params.has_key('align'):
|
||||
xstart = float(params['x'])
|
||||
if params['align'] == 'left':
|
||||
x = xstart
|
||||
elif params['align'] == 'center':
|
||||
word_length = w.calc_length()
|
||||
x = xstart * scale_faktor + (pic_width - word_length * scale_faktor)/2.0
|
||||
else:
|
||||
word_length = w.calc_length()
|
||||
x = xstart * scale_faktor + pic_width - word_length * scale_faktor
|
||||
params['xstart'] = x
|
||||
else:
|
||||
params['xstart'] = params['x']
|
||||
|
||||
if params.has_key('yalign'):
|
||||
ystart = float(params['y'])
|
||||
if params['yalign'] == 'top':
|
||||
y = 0.0
|
||||
elif params['yalign'] == 'center':
|
||||
word_height = w.calc_height()
|
||||
y = ystart * scale_faktor + (pic_height - word_height * scale_faktor)/2.0
|
||||
elif params['yalign'] == 'bottom':
|
||||
y = ystart * scale_faktor + pic_height - word_height * scale_faktor
|
||||
else:
|
||||
y = ystart
|
||||
params['ystart'] = y
|
||||
else:
|
||||
params['ystart'] = params['y']
|
||||
|
||||
scalebegin = '''<g transform="translate($xstart,$ystart) scale(${xscale},${yscale})">
|
||||
'''
|
||||
scaleend = ''' </g>'''
|
||||
svg = Template( scalebegin ).substitute(params) + wordsvg + scaleend
|
||||
return svg
|
||||
|
||||
def write_random_font_line( config, fontinfos, data ):
|
||||
''' erzeugt den SVG Teil des Bildes aus einem Hintergrundbild und
|
||||
mehreren in Einzelbereichen zufällig platzierten Einzelbildern '''
|
||||
# TODO Bild aus Zufallspositionen von Einzelkomponenten
|
||||
pass
|
||||
return
|
||||
|
||||
class Word:
|
||||
"""Berechnet die x/y Daten jedes Buchstabn zu einem Wort bzw. mehreren
|
||||
@@ -59,22 +137,23 @@ class Word:
|
||||
def __repr__(self):
|
||||
return self.line
|
||||
def calc_length(self):
|
||||
deltax= 0.0
|
||||
glyph_space = float(self.params['glyph_space'])
|
||||
deltax = 0.0
|
||||
for c in self.line:
|
||||
g = self.font.GlyphGet(c)
|
||||
deltax = g.GetLength() + deltax
|
||||
deltax = g.GetLength() + deltax + glyph_space
|
||||
return deltax
|
||||
def calc_height(self):
|
||||
max_y = 0.0
|
||||
for c in self.line:
|
||||
g = self.font.GlyphGet(c)
|
||||
new_y = g.GetHeight()
|
||||
if new_y > max_y:
|
||||
max_y = new_y
|
||||
return max_y
|
||||
def GetSVG(self):
|
||||
params = self.params
|
||||
# berechne immer den richtigen Startpunkt, je nach Bündigkeit
|
||||
if params['align'] == 'left':
|
||||
x = float(params['x'])
|
||||
elif params['align'] == 'center':
|
||||
word_length = self.calc_length()
|
||||
x = float(params['x'] + (params['length'] - word_length)/2.0)
|
||||
else:
|
||||
word_length = self.calc_length()
|
||||
x = float(params['x'] + word_length - params['length'])
|
||||
x = float(params['x'])
|
||||
y = params['y']
|
||||
glyph_space = float(params['glyph_space'])
|
||||
|
||||
@@ -91,7 +170,7 @@ class Word:
|
||||
# diese durch den aktuellen Zählerstand ersetzen
|
||||
if params['counter_replace']:
|
||||
xn = g.GetAttribute('npattern')
|
||||
for i in range(1,int(xn)+1):
|
||||
for i in range(1, int(xn)+1):
|
||||
counter = counter + 1
|
||||
content['x'+str(i)] = counter
|
||||
svgstr = svgstr + g.GetSVG(content)
|
||||
@@ -110,7 +189,7 @@ class Glyph:
|
||||
def GetLength(self):
|
||||
return float(self.GetAttribute('xstep'))
|
||||
def GetHeight(self):
|
||||
return float(self.GetAttribute('ystep'))
|
||||
return float(self.GetAttribute('ymax'))
|
||||
def GetSVG(self, content):
|
||||
t = Template(self.template)
|
||||
svg = t.substitute(content)
|
||||
@@ -177,8 +256,8 @@ def create_picture(config, fontinfos, data, pic_path):
|
||||
|
||||
svgstr = ''
|
||||
|
||||
begin, end = create_picture_frame( config )
|
||||
svgstr = svgstr + begin
|
||||
picbegin, picend = create_picture_frame( config )
|
||||
svgstr = svgstr + picbegin
|
||||
|
||||
# gehe alle Zeilen die im Bild enthalten sein müssen durch
|
||||
lines = config.get('globals', 'lines').split(',')
|
||||
@@ -201,16 +280,26 @@ def create_picture(config, fontinfos, data, pic_path):
|
||||
font = fontinfos[fontname]
|
||||
|
||||
# hol dir die Eckdaten für die Zeile
|
||||
# x, y, align, length
|
||||
params = dict(config.items(linename))
|
||||
# x, y, align, width, height
|
||||
lineparams = dict(config.items(linename))
|
||||
|
||||
picstr = write_font_line( content, font, params )
|
||||
# falls nix angegeben, dann aus hol defaults aus globalen daten
|
||||
if not lineparams.has_key('width'):
|
||||
lineparams['width'] = config.get('globals', 'width')
|
||||
if not lineparams.has_key('height'):
|
||||
lineparams['height'] = config.get('globals', 'height')
|
||||
if not lineparams.has_key('x'):
|
||||
lineparams['x'] = 0.0
|
||||
if not lineparams.has_key('y'):
|
||||
lineparams['y'] = 0.0
|
||||
|
||||
picstr = write_font_line( content, font, lineparams )
|
||||
if picstr: svgstr = svgstr + picstr
|
||||
|
||||
randstr = write_random_font_line( content, font, params)
|
||||
randstr = write_random_font_line( content, font, lineparams)
|
||||
if randstr: svgstr = svgstr + randstr
|
||||
|
||||
svgstr = svgstr + end
|
||||
svgstr = svgstr + picend
|
||||
|
||||
if options.dry:
|
||||
print svgstr
|
||||
|
||||
Reference in New Issue
Block a user