#!/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) # 110000011 # ACCUMULATION OF CONNECTORS IS DEFINED HERE # YES! # WBWBWBWBW # B-LACK-OR-WHITE-SEED # BBWBBWWBB # B-LACK-OR-WHITE-SEED # WBWWWWBWW # B-LACK-OR-WHITE-SEED # BUWWWWBUW # B-LACK-OR-WHITE-SEED # BUBBBWBUW # B-LACK-OR-WHITE-SEED # BUBUUWBBW # B-LACK-OR-WHITE-SEED # BUUUUUUBW # B-LACK-OR-WHITE-SEED # BUUUWWWWW # BLACK-OR-WHITE-SEED # UUBUWWWWW # BLACK-OR-WHITE-SEED # UBWUBWUBW # BLACK-OR-WHITE-SEED VERT=$1 HORIZ=$2 LSDIR=$3 TMPDIR=tmp REFDIR=i/free/reference TILEDIR=i/free/pdf/iominimum TILEPATH=$TILEDIR TILELIST=$TMPDIR/tiles.list LETTERLIST=$TMPDIR/lettertiles.list KEEPLIST=$TILELIST ROTMP=$TMPDIR/rotated-pdfs ORDER=$TMPDIR/order.i; rm $ORDER find $TILEDIR -name "*.pdf" > $TILELIST find i/free/pdf/iohands -name "*.pdf" >> $TILELIST #find i/free/pdf/ioextra -name "*.pdf" >> $TILELIST find tmp/io-make -name "*.pdf" >> $TILELIST find i/free/pdf/letters -name "*.pdf" >> $LETTERLIST THIS=`cat $TILELIST | \ grep 0_0_0_0_.pdf | shuf -n 1` GRAFIKSFORNIX="|" GRAFIKSFOREDGES="|" GRAFIKSFORSPECIALAREA="|" 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` echo $VARCONNECTORS > $TMPDIR/accumulation.txt echo $VARBW > $TMPDIR/b-w_seed.txt STANDARDVARIABILITY=$VARCONNECTORS STANDARDBW=$VARBW #-------------------------------------------------------------# HEADENDSTRING="pixels" BODYENDSTRING="};" BODYTEMP=$TMPDIR/body.tmp LINESTARTSTRING="\"" LINEENDSTRING="\"," makeXPMreference () { ## EXTRACT XPM BODY TO TEMP ## convert -resize ${HORIZ}x${VERT}! $REFIMG -monochrome $1 sed -n "/$HEADENDSTRING/,/$BODYENDSTRING/p" \ $1 | egrep -v "$HEADENDSTRING|$BODYENDSTRING" |\ cut -d "\"" -f 2 > $BODYTEMP #BLACKCHARACTER=`cat $1 | grep black | cut -c 2` BLACKCHARACTER=`cat $1 | grep 000000 | 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 } REFIMG=$REFDIR/`ls $REFDIR | shuf -n 1` 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 # FIND MATCHING FILE ------------------------------------------ # # ------------------------------------------------------------- # cat $TILELIST |\ egrep $SELECTFOREDGE |\ egrep $SELECTFORAREA |\ grep $F1"_"$F2"_"$F3"_"$F4"_".pdf > $TMPDIR/module.list # FIND FILES WHICH IS MATCHING AFTER ROTATION ----------------- # # ------------------------------------------------------------- # ANGLE=angleis-90 for FILE in `cat $TILELIST |\ 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 `cat $TILELIST |\ 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 `cat $TILELIST |\ grep R+ |\ egrep $SELECTFOREDGE |\ egrep $SELECTFORAREA |\ grep $F2"_"$F3"_"$F4"_"$F1"_".pdf`; do echo ${FILE%.*}_$ANGLE.pdf >> $TMPDIR/module.list done # ------------------------------------------------------------- # rm -f $TMPDIR/select.list; touch $TMPDIR/select.list # ATTACH ALL POSSIBLE FILES TO LIST cat $TMPDIR/module.list |\ shuf >> $TMPDIR/select.list # ------------------------------------------------------------- # ISTHEREANYGRAFIK=`cat $TMPDIR/select.list | wc -l` # cat $TMPDIR/select.list if [ $ISTHEREANYGRAFIK -ge 1 ]; then # -------------------------------------------------------------- # if [ `cat $TMPDIR/select.list | grep -v X- | wc -l` -ge 2 ]; then THIS=`basename \`cat $TMPDIR/select.list |\ grep -v X- |\ head -1 \`` else THIS=`basename \`cat $TMPDIR/select.list |\ head -1 \`` fi # -------------------------------------------------------------- # SOURCE=`grep ${THIS%_*}.pdf $TILELIST | head -1` # echo $SOURCE # -------------------------------------------------------------- # 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 sleep 0 if [ `ls $ROTMP | grep $RONAME | wc -l` -gt 0 ]; then # echo $ROTMP/$RONAME is already rotated sleep 0 # -------------------------------------------------------------- # # 7.5.2011: PDFPAGES IGNORES ROTATION -> PDF2PS & PS2PDF 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 pdftk $SOURCE cat 1E output $ROTMP/$RONAME pdf2ps $ROTMP/$RONAME $ROTMP/${RONAME%%.*}.ps ps2pdf $ROTMP/${RONAME%%.*}.ps $ROTMP/$RONAME rm $ROTMP/${RONAME%%.*}.ps 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 pdftk $SOURCE cat 1S output $ROTMP/$RONAME pdf2ps $ROTMP/$RONAME $ROTMP/${RONAME%%.*}.ps ps2pdf $ROTMP/${RONAME%%.*}.ps $ROTMP/$RONAME rm $ROTMP/${RONAME%%.*}.ps 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 pdftk $SOURCE cat 1W output $ROTMP/$RONAME pdf2ps $ROTMP/$RONAME $ROTMP/${RONAME%%.*}.ps ps2pdf $ROTMP/${RONAME%%.*}.ps $ROTMP/$RONAME rm $ROTMP/${RONAME%%.*}.ps fi # ----------------------------------------------------------------- # GRAFIK=$ROTMP/$RONAME else #GRAFIK=$TILEPATH/$THIS GRAFIK=`grep ${THIS%_*} $TILELIST | head -1` fi #echo $GRAFIK 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` 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 if [ $I -gt 1 ]; then PREVCHAR=$REFCHAR else NEXTCHAR=. fi REFCHAR=`echo $REFLINE | cut -c $I` if [ $I -lt $HORIZ ]; then NEXTCHAR=`echo $REFLINE | cut -c \`expr $I + 1\`` else NEXTCHAR=. fi # ========================================================================== # if [ $REFCHAR = x ] && [ $NEXTCHAR = x ] then SELECTFOREDGE="|" # SELECT ALL (EGREP *|*) VARCONNECTORS=$STANDARDVARIABILITY elif [ $REFCHAR = x ] && [ $NEXTCHAR != x ] then SELECTFOREDGE=$GRAFIKSFOREDGES VARCONNECTORS="1101111100" elif [ $REFCHAR != x ] && [ $NEXTCHAR = x ] then SELECTFOREDGE=$GRAFIKSFORNIX #VARCONNECTORS="0000000000" VARCONNECTORS="1110011111" elif [ $REFCHAR != x ] then SELECTFOREDGE=$GRAFIKSFORNIX VARCONNECTORS="000000000" fi if [ $I -le 1 ] || [ $I -ge `expr $HORIZ - 1` ] && [ $REFCHAR = x ] then SELECTFOREDGE=$GRAFIKSFOREDGES VARCONNECTORS="000011000";fi if [ $J -ge `expr $VERT - 1` ] then SELECTFOREDGE=$GRAFIKSFOREDGES VARCONNECTORS="000000000";fi if [ $J -eq 1 ] || [ $J -eq $VERT ] || [ $I -eq 1 ] || [ $I -eq $HORIZ ]; then SELECTFOREDGE=$GRAFIKSFORNIX fi # ========================================================================== # SELECTFORAREA="|" RBNDOM=`echo $RANDOM | cut -c 1`; RCNDOM=`echo $RANDOM | cut -c 1` 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 [ $J -eq 1 ] && [ $I -eq 1 ] then TILELIST=$LETTERLIST SELECTFORAREA="LetterL" SELECTFOREDGE="|" VARCONNECTORS="010101010" elif [ $J -eq 1 ] && [ $I -eq 2 ] then TILELIST=$LETTERLIST SELECTFORAREA="LetterS" SELECTFOREDGE="|" VARCONNECTORS="010101010" elif [ $J -eq 1 ] && [ $I -eq 3 ] then TILELIST=$LETTERLIST SELECTFORAREA="LetterI" SELECTFOREDGE="|" VARCONNECTORS="010101010" elif [ $J -eq 1 ] && [ $I -eq 4 ] then TILELIST=$LETTERLIST SELECTFORAREA="LetterL" SELECTFOREDGE="|" VARCONNECTORS="010101010" else TILELIST=$KEEPLIST fi # -------------------------------- # if [ $I -le 1 ] then ISTHEREANYGRAFIK=0; TICK=0 while [ $ISTHEREANYGRAFIK -le 0 ] do F1=`echo $VARCONNECTORS | cut -c $RBNDOM` BlackOrWhite $F1; F1=${BORW}$F1 # ------------------------------------------ # # F1 IS A RANDOM SELECTION OF F3's # F1=`ls $TILEDIR | cut -d "_" -f 4 | shuf -n 1` F2=0 # F3 IS DEFINED AT LOOPSTART F4=`echo $VARCONNECTORS | cut -c $RCNDOM` BlackOrWhite $F4; F4=${BORW}$F4 # ------------------------------------------ # # F4 IS A RANDOM SELECTION OF F2's #F4=`ls $TILEDIR/*_${F1}_*_${F3}_*_.pdf | \ # cut -d "_" -f 3 | shuf -n 1` selectGrafik echo ${F1}_${F2}_${F3}_${F4} "=" $ISTHEREANYGRAFIK TICK=`expr $TICK + 1` if [ $TICK -gt 100 ]; then exit 0; fi done echo $GRAFIK > $LS I=`expr $I + 1` elif [ $I -lt $HORIZ ] then ISTHEREANYGRAFIK=0; TICK=0 FIX4=$F4 while [ $ISTHEREANYGRAFIK -le 0 ] do F1=`echo $VARCONNECTORS | cut -c $RBNDOM` BlackOrWhite $F1; F1=${BORW}$F1 # ------------------------------------------ # # F1 IS A RANDOM SELECTION OF F3's # F1=`ls $TILEDIR | cut -d "_" -f 4 | shuf -n 1` F2=$FIX4 # F3 IS DEFINED AT LOOPSTART F4=`echo $VARCONNECTORS | cut -c $RCNDOM` BlackOrWhite $F4; F4=${BORW}$F4 # F4 IS A RANDOM SELECTION OF F2's # F4=`ls $TILEDIR/*_${F1}_*_${F3}_*_.pdf | \ # cut -d "_" -f 3 | shuf -n 1` selectGrafik echo ${F1}_${F2}_${F3}_${F4} "=" $ISTHEREANYGRAFIK TICK=`expr $TICK + 1` if [ $TICK -gt 100 ]; then exit 0; fi done echo $GRAFIK >> $LS I=`expr $I + 1` else ISTHEREANYGRAFIK=0; TICK=0 FIX4=$F4 while [ $ISTHEREANYGRAFIK -le 0 ] do F1=`echo $VARCONNECTORS | cut -c $RBNDOM` BlackOrWhite $F1; F1=${BORW}$F1 # ------------------------------------------ # # F1 IS A RANDOM SELECTION OF F3's #F1=`ls $TILEDIR | cut -d "_" -f 4 | shuf -n 1` F2=$FIX4 # F3 IS DEFINED AT LOOPSTART F4=0 selectGrafik echo ${F1}_${F2}_${F3}_${F4} "=" $ISTHEREANYGRAFIK TICK=`expr $TICK + 1` if [ $TICK -gt 100 ]; then exit 0; fi done 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 echo "YES!" > $ORDER exit 0;