#!/bin/bash # Copyright (C) 2010 LAFKON/Christoph Haag. # ---------------------------------------------------------------------- # # 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.forkable.eu/utils/licenses/gpl # ---------------------------------------------------------------------- # # http://www.forkable.eu/generators/i-bd/isaac.sh # ______________________________________________________________________ # # # - create SVG files suitable for import into processing # based on separated .tmp files (i/TRUNK/tmp) # - generate posters (src/issac_1_00/isaac_1_00.pde) and preview image # - called with argument 'web': # make a background image for http://makeart.goto10.org/2010 # ______________________________________________________________________ # TMPDIR=i/tmp; TRACELIST=$TMPDIR/trace.list; rm $TRACELIST DROPLIST=$TMPDIR/drop.list; rm $DROPLIST OBSTACLELIST=$TMPDIR/obstacle.list; rm $OBSTACLELIST LAYERDIR=i/TRUNK/tmp VERSION=5 SVG=i/TRUNK/LFKNCH_logoline_100928--5-00.svg GRPOPEN=\ HEADEND=\ PDFMETA=$TMPDIR/meta.txt CHEQUE=$1 ######################################################################### svgsFromLayers () { TYPE=$1 LIST=$2 LAYERLIST=$TMPDIR/layers.list; rm $LAYERLIST SOURCELIST=$TMPDIR/source.list; rm $SOURCELIST ALTSRCLIST=$TMPDIR/altsrc.list; rm $ALTSRCLIST COMBINATIONS=`cat i/combinations.list | sort -R | head -1`; EXCLUDE="offset" INCLUDE=${COMBINATIONS} EXCLUDE=${EXCLUDE}"|"`cat i/randomexcludes.list | sort -R | head -1` echo "INCLUDE: " $INCLUDE; echo "EXCLUDE: " $EXCLUDE ######################################## # WRITE LIST WITH POSSIBLE SOURCES # ######################################## ls $LAYERDIR/*\-\-${VERSION}-*.layer | \ egrep "$INCLUDE" | \ egrep -v "$EXCLUDE" | grep $TYPE > $SOURCELIST ######################################## if [ `cat $SOURCELIST | grep $TYPE | wc -l` -le 0 ];then ls $LAYERDIR/*\-\-${VERSION}-*.layer | grep $TYPE > $SOURCELIST fi ls $LAYERDIR/*\-\-${VERSION}-*.layer | grep $TYPE > $ALTSRCLIST if [ `cat $SOURCELIST | wc -l` -le 0 ];then exit 0; fi ######################################################################### # WRITE LIST WITH LAYERS, SORT (TO KEEP ORDER) # ######################################################################### for LAYER in `grep -h layerid \`cat $ALTSRCLIST\` | \ grep -v XX | sed 's/>//g' | \ sort | uniq` do SELECTLAYERFILE=`grep $LAYER \`cat $SOURCELIST \` | \ cut -d : -f 1 | shuf -n 1` if [ `echo $SELECTLAYERFILE | wc -l` -le 0 ]; then SELECTLAYERFILE=`grep $LAYER \`cat $ALTSRCLIST \` | \ cut -d : -f 1 | shuf -n 1` fi echo $SELECTLAYERFILE >> $LAYERLIST done ######################################################################### # WRITE LAYERS TO NEW SVG FILES # ######################################################################### HEADENDLINENUMBER=`cat -n $SVG | \ grep $HEADEND | \ cut -f 1 | \ head -1` rm $LIST for LAYERFILE in `cat $LAYERLIST | \ awk '{FS="_" ; $0=$0 ; print $NF"|"$0}' | \ sort -n | uniq | cut -d "|" -f 2` do FILE=${LAYERFILE##*/} NAME=${FILE%%.*} NEWSVG=$TMPDIR/${NAME}.svg if [ `find $TMPDIR -name "${NAME}.svg" | wc -l` -lt 1 ]; then head -n $HEADENDLINENUMBER $SVG > $NEWSVG cat $LAYERFILE >> $NEWSVG echo "" >> $NEWSVG sed -i 's/style="display:none"//g' $NEWSVG inkscape --export-eps=$TMPDIR/tmp.eps \ --export-bbox-page \ --export-text-to-path $NEWSVG epstopdf $TMPDIR/tmp.eps --outfile=$TMPDIR/tmp-BBOX.pdf pdf2svg $TMPDIR/tmp-BBOX.pdf $TMPDIR/tmp.svg ## PDF2SVG COLOR BUG WITH PROCESSING ############## inkscape --export-plain-svg=$NEWSVG $TMPDIR/tmp.svg ################################################### rm $TMPDIR/tmp.eps fi if [ `grep path $NEWSVG | wc -l` -ge 1 ]; then echo $NEWSVG >> $LIST fi done } ######################################################################### ######################################################################### runProcessing () { SKETCHNAME=isaac_1_00 # EXPORT DISPLAY FOR PROCESSING HEADLESS ################################ export DISPLAY=localhost:1.0 ########################################## APPDIR=$(dirname "$0") SKETCH=$APPDIR/src/$SKETCHNAME/application.linux/lib/$SKETCHNAME.jar CR=$APPDIR/i/lib/1050/core.jar PDF=$APPDIR/i/lib/1050/pdf.jar TXT=$APPDIR/i/lib/1050/itext.jar GMRTV=$APPDIR/i/lib/1050/geomerative.jar BTK=$APPDIR/i/lib/1050/batikfont.jar JGL=$APPDIR/i/lib/1050/jogl.jar GLGN=$APPDIR/i/lib/1050/gluegen-rt.jar JBX=$APPDIR/i/lib/1050/JBox2D-2.0.1-b250-Library.jar: JBXDS=$APPDIR/i/lib/1050/JBox2D-2.0.1-b250-Library_ds.jar: PBX=$APPDIR/i/lib/1050/pbox2d.jar: FSC=$APPDIR/i/lib/1050/fisica.jar: LIBS=$SKETCH:$CR:$PDF:$TXT:$GMRTV:$BTK:$JGL:$GLGN:$JBX:$JBXDS:$PBX:$FSC java -Djava.library.path="$APPDIR" \ -cp "$LIBS" \ $SKETCHNAME } ######################################################################### ALREADYMADES=0 while [ $ALREADYMADES -le 150 ] do ######################################################################### if [ T$CHEQUE = Tweb ]; then ######################################################################### WEBDIR=o/free/p/web svgsFromLayers logoline $TRACELIST touch $DROPLIST svgsFromLayers web $OBSTACLELIST runProcessing MARGINLEFT=5 MARGINTOP=240 WIDTH=730 HEIGHT=800 PREFIX=makeart2010_i-bd NUMBER=`ls $WEBDIR/${PREFIX}_*.gif | wc -l` OUTPUTDIR=o PDF=`ls $OUTPUTDIR/*.pdf | sort | tail -1` composite -compose multiply i/TRUNK/LFKNCH_wbg_100929--5-00.pdf \ $PDF $TMPDIR/tmp.png convert -crop ${WIDTH}\x${HEIGHT}+${MARGINLEFT}+${MARGINTOP}\! \ $TMPDIR/tmp.png $WEBDIR/${PREFIX}_`expr $NUMBER + 1`.gif rm $PDF ALREADYMADES=`ls $WEBDIR/*.gif | wc -l` ######################################################################### else ######################################################################### OUTPUTDIR=o svgsFromLayers logoline $TRACELIST svgsFromLayers participants $DROPLIST cat $DROPLIST > $TMPDIR/drop.list.tmp svgsFromLayers information $DROPLIST cat $TMPDIR/drop.list.tmp >> $DROPLIST svgsFromLayers obstacles $OBSTACLELIST echo ${TMPDIR}"/" > $TMPDIR/tmpdir.i echo ${OUTPUTDIR}"/" > i/tmp/outputdir.i runProcessing PDF=`ls $OUTPUTDIR/*.pdf | sort | tail -1` OUTPUTDIR=o/non-free/fr/A3/recto NAME=${PDF##*/} composite -compose multiply i/TRUNK/LFKNCH_offset_101008--5-04.pdf \ $PDF ${OUTPUTDIR}/${NAME%%.*}+offset.png ######################################################################### SUBJECT="This is a poster created for Make Art 2010." INFO="Built with Inkscape, Processing, Bash, \ for more information visit http://www.forkable.eu . \ Thanks to Ricard Marxer for the Geomerative and Fisica Libraries. \ Possible Keywords: \ generative, design, linux, Make Art" ######################################################################### echo "InfoKey: Title " > $PDFMETA echo "InfoValue: $PDFNAME " >> $PDFMETA echo "InfoKey: Subject " >> $PDFMETA echo "InfoValue: $SUBJECT " >> $PDFMETA echo "InfoKey: Keywords " >> $PDFMETA echo "InfoValue: $INFO " >> $PDFMETA echo "InfoKey: Author " >> $PDFMETA echo "InfoValue: LAFKON Publishing " >> $PDFMETA ######################################################################### pdftk $PDF update_info $PDFMETA \ output $OUTPUTDIR/${NAME%%.*}.pdf rm $PDF ALREADYMADES=`ls $OUTPUTDIR/*.pdf | wc -l` ########################################################################## fi done exit 0;