#!/bin/bash # Copyright (C) 2010 LAFKON/Christoph Haag. # # PREPARED FOR LINUX WOCHEN LINZ 2010 # BASED ON A SCRIPT FOR LINUX AUDIO CONFERENCE 2008 # # This is free software, and you may redistribute it under the GPL. # This Software comes with absolutely no warranty. # For details see the license (http://www.lafkon.net/gpl.txt) # 101010111 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 110000000 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 111000111 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 101010111 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 100000000 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 011000000 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 101111111 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 100000001 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 101010111 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # 101010111 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # # WBWBWBWBW # BLACK-OR-WHITE-SEED # BWBBBBBBB # BLACK-OR-WHITE-SEED # WBWWWWWWW # BLACK-OR-WHITE-SEED # WWWWWWWWW # BLACK-OR-WHITE-SEED # BBBBBBBBB # BLACK-OR-WHITE-SEED # WBBBBBBBW # BLACK-OR-WHITE-SEED # WWWWWWWWW # BLACK-OR-WHITE-SEED # WBWBWBWBW # BLACK-OR-WHITE-SEED # WWWWWBBBB # BLACK-OR-WHITE-SEED VERT=$1 HORIZ=$2 LSDIR=$3 TILEDIR=a/stock/2007/pipemusic TILEDIR=free/v/ditails TILEPATH=i/$TILEDIR REFFOLDER=free/p/reference FORMAT=$4 GRAFIKSFORNIX="X" GRAFIKSFOREDGES="Ele|Gira|Flugp|Kerz|Sherl|Pilz|X|Rand" GRAFIKSFORSPECIALAREA="|" # SPECIAL AREA IN THIS CASE = BOTTOM THIRD TMPDIR=tmp ROTMP=$TMPDIR/rotated-pdfs VARCONNECTORS=`sed -n '/ACCUMULATION/p' $0 |\ sed -n '/sed/!p' |\ cut -d "#" -f 2 |\ rl --count=1` VARBW=`sed -n '/BLACK-OR-WHITE-SEED/p' $0 |\ sed -n '/sed/!p' |\ cut -d "#" -f 2 |\ rl --count=1` STANDARDVARIABILITY=$VARCONNECTORS STANDARDBW=$VARBW ################################################################################## ################################################################################## ################################################################################## HEADENDSTRING="pixels" BODYENDSTRING="};" BODYTEMP=$TMPDIR/body.tmp LINESTARTSTRING="\"" LINEENDSTRING="\"," ################################################################################## makeXPMreference () { ## EXTRACT XPM BODY TO TEMP ## convert -resize $HORIZ $REFIMG ${LOGOREF%%.*}.resized.png \ -compose screen -composite -monochrome $1 sed -n "/$HEADENDSTRING/,/$BODYENDSTRING/p" \ $1 | egrep -v "$HEADENDSTRING|$BODYENDSTRING" |\ cut -d "\"" -f 2 > $BODYTEMP #BLACKCHARACTER=`cat $TMPDIR/$NAME.xpm | grep black | cut -d '"' -f 2 | cut -c 1` BLACKCHARACTER=`cat $1 | grep black | cut -c 2` echo $BLACKCHARACTER if [ "$BLACKCHARACTER" = " " ]; then sed -i 's/ /x/g' $BODYTEMP else sed -i s/\\$BLACKCHARACTER/x/g $BODYTEMP sed -i 's/ /y/g' $BODYTEMP fi } # GENERATE THE REFERENCE IMAGE ################################################### LOGOREF=$TMPDIR/logoreference.pdf REFIMG=$REFFOLDER/`ls $REFFOLDER | grep $FORMAT | rl --count=1` gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r72 -dEPSCrop \ -sOutputFile=${LOGOREF%%.*}.png $LOGOREF convert -resize $HORIZ ${LOGOREF%%.*}.png \ -channel matte -separate +channel \ -blur 1x2 \ -negate -threshold 40 \ ${LOGOREF%%.*}.resized.png makeXPMreference $TMPDIR/reference.xpm ################################################################################## ################################################################################## BlackOrWhite () { BORW=`echo $VARBW | cut -c \`date +%N | rev | tr -d [0] | cut -c 2 \`` if [ $1 -eq 0 ]; then BORW= fi } ################################################################################## ################################################################################## ################################################################################## selectGrafik () { # PREVENT HORIZONTAL FLYING INSTRUMENTS # if [ `echo $F2 | grep 1 | wc -l` -le 0 ] && [ $I -gt `expr $LASTGRAFIK - 1` ] || [ $I -lt `expr $FIRSTGRAFIK - 1` ] then F1=0 F4=0 fi ls $TILEDIR |\ egrep $SELECTFOREDGE |\ egrep $SELECTFORAREA |\ grep $F1"_"$F2"_"$F3"_"$F4"_".pdf > $TMPDIR/module.list echo HOUSTON WE NEED $F1"_"$F2"_"$F3"_"$F4 ANGLE=angleis-90 for FILE in `ls $TILEDIR |\ grep R+ |\ egrep $SELECTFOREDGE |\ egrep $SELECTFORAREA |\ grep $F4"_"$F1"_"$F2"_"$F3"_".pdf`; do echo ${FILE%.*}_$ANGLE.pdf >> $TMPDIR/module.list done ANGLE=angleis+180 for FILE in `ls $TILEDIR |\ grep R+ |\ egrep $SELECTFOREDGE |\ egrep $SELECTFORAREA |\ grep $F3"_"$F4"_"$F1"_"$F2"_".pdf`; do echo ${FILE%.*}_$ANGLE.pdf >> $TMPDIR/module.list done ANGLE=angleis+90 for FILE in `ls $TILEDIR |\ grep R+ |\ egrep $SELECTFOREDGE |\ egrep $SELECTFORAREA |\ grep $F2"_"$F3"_"$F4"_"$F1"_".pdf`; do echo ${FILE%.*}_$ANGLE.pdf >> $TMPDIR/module.list done if [ `cat $TMPDIR/module.list | grep -v X- | wc -l` -ge 2 ]; then THIS=`cat $TMPDIR/module.list | grep -v X- |\ rl -r --count=1` else THIS=`cat $TMPDIR/module.list |\ rl -r --count=1` fi echo $THIS is selected RONAME=`echo $THIS | md5sum | cut -c 1-15`_$F1"_"$F2"_"$F3"_"$F4"_".pdf CECK=`echo $THIS | grep angleis | wc -l` if [ $CECK -ge 1 ]; then echo $RONAME needs to be rotated if [ `ls $ROTMP | grep $RONAME | wc -l` -gt 0 ]; then echo $ROTMP/$RONAME does exist elif [ `echo $THIS | grep angleis+90 | wc -l` -gt 0 ]; then echo $TILEDIR/${THIS%_*}.pdf needs to be rotated +90 pdftk $TILEDIR/${THIS%_*}.pdf cat 1E output $ROTMP/$RONAME elif [ `echo $THIS | grep angleis+180 | wc -l` -gt 0 ]; then echo $TILEDIR/${THIS%_*}.pdf needs to be rotated +180 pdftk $TILEDIR/${THIS%_*}.pdf cat 1S output $ROTMP/$RONAME elif [ `echo $THIS | grep angleis-90| wc -l` -gt 0 ]; then echo $TILEDIR/${THIS%_*}.pdf needs to be rotated -90 pdftk $TILEDIR/${THIS%_*}.pdf cat 1W output $ROTMP/$RONAME fi GRAFIK=i/$ROTMP/$RONAME else GRAFIK=$TILEPATH/$THIS fi } ################################################################################## FIRSTLINEWITHGRAFIK=`grep -n x $BODYTEMP | head -1 | cut -d ":" -f 1` LASTLINEWITHGRAFIK=`grep -n x $BODYTEMP | tail -1 | cut -d ":" -f 1` LINESWITHGRAFIKS=`grep x $BODYTEMP | wc -l` AREALINESVERT=8 J=1; while [ $J -le $VERT ];do LS=$J.list REFLINE=`cat $BODYTEMP | tac | head -$J | tail -1 | rev` # REFLINE=`cat $BODYTEMP | tac | head -\`expr $J + 1 \` | tail -1 | rev` FIRSTGRAFIK=`echo $REFLINE | cut -d "x" -f 1 | wc -c` LASTGRAFIK=`expr $HORIZ - \`echo $REFLINE | rev | cut -d "x" -f 1 | wc -c\`` # echo $FIRSTGRAFIK;echo $LASTGRAFIK I=1 while [ $I -le $HORIZ ] do REFCHAR=`echo $REFLINE | cut -c $I` #REFCHARCOUNT=`echo $REFLINE | cut -c $I-\`expr $I + 6\` | tr -cd [=x=] | wc -c` REFCHARCOUNT=`echo $REFLINE | cut -c 1-\`expr $I + 6\` | rev | cut -c 1-7 | tr -cd [=x=] | wc -c` if [ $REFCHAR = x ] && [ $REFCHARCOUNT -ge 2 ] then SELECTFOREDGE="|" # SELECT ALL (EGREP *|*) VARCONNECTORS=$STANDARDVARIABILITY elif [ $REFCHAR = x ] && [ $REFCHARCOUNT -le 5 ] then SELECTFOREDGE=$GRAFIKSFOREDGES VARCONNECTORS="010000000" elif [ $REFCHAR != x ] && [ $REFCHARCOUNT -gt 5 ] then SELECTFOREDGE=$GRAFIKSFOREDGES VARCONNECTORS="010000000" else SELECTFOREDGE=$GRAFIKSFORNIX VARCONNECTORS="000000000" fi if [ $J -gt `expr $FIRSTLINEWITHGRAFIK + $AREALINESVERT` ]; then SELECTFORAREA="|" else SELECTFORAREA=$GRAFIKSFORSPECIALAREA fi if [ $J -gt `expr $FIRSTLINEWITHGRAFIK + $AREALINESVERT` ] && [ $J -lt `expr $LASTLINEWITHGRAFIK - $AREALINESVERT` ] && [ $I -gt 10 ] && [ $I -lt `expr $HORIZ - 10` ]; then VARBW=$STANDARDBW else VARBW=$STANDARDBW fi ####################################################################### # GENERATE 2 DIFFERENT RANDOM NUMBERS # # TEST, BECAUSE SOMETIMES $RANDOM WAS EMPTY? (sh -x) # RBNDOM=`echo $RANDOM | cut -c 1`; if [ -n "$RBNDOM" ]; then RBNDOM=$RBNDOM; else RBNDOM=`date +%N | rev | tr -d [0] | cut -c 2`; fi RCNDOM=`echo $RANDOM | cut -c 1`;if [ -n "$RCNDOM" ]; then RCNDOM=$RCNDOM; else RCNDOM=`date +%N | rev | tr -d [0] | cut -c 2`; fi ####################################################################### LSBEFORE=$LSDIR/$((J - 1)).list LINE=`expr $HORIZ + 1 - $I` if [ $J -gt 1 ] then F3=`sed -n "$((LINE))p" $LSBEFORE | cut -d _ -f 2` else F3=0 fi if [ $I -le 1 ] then F1=`echo $VARCONNECTORS | cut -c $RBNDOM` BlackOrWhite $F1; F1=${BORW}$F1 F2=0 # F3 IS DEFINED AT LOOPSTART F4=`echo $VARCONNECTORS | cut -c $RCNDOM` BlackOrWhite $F4; F4=${BORW}$F4 selectGrafik echo $GRAFIK > $LS I=`expr $I + 1` elif [ $I -lt $HORIZ ] then F1=`echo $VARCONNECTORS | cut -c $RBNDOM` BlackOrWhite $F1; F1=${BORW}$F1 F2=$F4 # F3 IS DEFINED AT LOOPSTART F4=`echo $VARCONNECTORS | cut -c $RCNDOM` BlackOrWhite $F4; F4=${BORW}$F4 selectGrafik echo $GRAFIK >> $LS I=`expr $I + 1` else F1=`echo $VARCONNECTORS | cut -c $RBNDOM` BlackOrWhite $F1; F1=${BORW}$F1 F2=$F4 # F3 IS DEFINED AT LOOPSTART F4=0 selectGrafik echo $GRAFIK >> $LS I=`expr $I + 1` fi done # ZEILEN UMDREHEN UND WIEDER AUSGEBEN # sed '1!G;h;$!d' $LS > /tmp/$LS.tmp rm $LS cat /tmp/$LS.tmp > $LSDIR/$LS J=`expr $J + 1` done exit 0;