#!/bin/bash TMPDIR=tmp; rm $TMPDIR/* LAYERDIR=$TMPDIR SLIDEDIR=o/slides ; rm $SLIDEDIR/*.* SVG=111009.svg IDENTIFIER=111009 LAYERID=layerid SVGDIR=. SVGLIST=$TMPDIR/`date +%s`.list ls $SVGDIR | grep svg | tail -1 > $SVGLIST # ---------------------------------------------------------------------- # separateLayers () { GRPOPEN=\ HEADEND=\ DATE=`date +%y%m%d`; TIME=`date +%H%M%S` #----------------------------------------------------------------------- # # FOR EVERY SVG: WRITE LAYERS TO TMP FILES (ONE LAYER -> ONE TMP FILE # #----------------------------------------------------------------------- # for SVG in `cat $SVGLIST` do TOTAL=`wc -l $SVGDIR/$SVG | cut -d ' ' -f 1`; COUNT=1 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # for GRPSTART in `grep -n $GRPOPEN $SVGDIR/$SVG | cut -d ':' -f 1` do GRPEND=`cat -n $SVGDIR/$SVG | \ sed -n "${GRPSTART},${TOTAL}p" | \ grep $GRPSHUT | \ cut -f 1 | \ head -1` ISALAYER=`sed -n "${GRPSTART},${GRPEND}p" $SVGDIR/$SVG | \ grep inkscape:groupmode=\"layer\" | \ wc -l` if [ $ISALAYER -eq 1 ]; then COUNTGRPOPEN=`sed -n "${GRPSTART},${GRPEND}p" $SVGDIR/$SVG | \ grep $GRPOPEN | wc -l` GRPEND=`cat -n $SVGDIR/$SVG | \ sed -n "${GRPSTART},${TOTAL}p" | \ grep $GRPSHUT | \ cut -f 1 | \ head -$COUNTGRPOPEN | tail -1` NAME=`echo $SVG | cut -d "." -f 1`; UNINAME=`echo 0000${COUNT} | rev | cut -c 1-4 | rev` UNINAME=${NAME}_${UNINAME} echo $UNINAME; COUNT=`expr $COUNT + 1` sed -n "${GRPSTART},${GRPEND}p" $SVGDIR/$SVG > $TMPDIR/$UNINAME.layer fi done # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # done # ---------------------------------------------------------------------- # # ADD MISSING CLOSING TAGS (=BUG) # for LAYERFILE in `ls $TMPDIR/*.layer` do COUNTGRPOPEN=`grep $GRPOPEN $LAYERFILE | wc -l` COUNTGRPSHUT=`grep $GRPSHUT $LAYERFILE | wc -l` TEST=`expr $COUNTGRPOPEN - $COUNTGRPSHUT` while [ $TEST -gt 0 ] do echo $GRPSHUT >> $LAYERFILE TEST=`expr $TEST - 1` done done # --------------------------------------------------------------------- # } ###################################################################### pngFromLayer () { IDENTIFIER=$1 LAYERID=$2 LAYERLIST=$TMPDIR/layers.list; rm $LAYERLIST SOURCELIST=$TMPDIR/source.list; rm $SOURCELIST ######################################## # WRITE LIST WITH POSSIBLE SOURCES # ######################################## ls $LAYERDIR/*.layer | \ grep $IDENTIFIER > $SOURCELIST ######################################## 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 $SOURCELIST\` | \ grep -v XX | sed 's/>//g' | \ sort` do SELECTLAYERFILE=`grep -H $LAYER \`cat $SOURCELIST \` | \ cut -d : -f 1 | shuf -n 1` echo $SELECTLAYERFILE >> $LAYERLIST done ##################################################################### # WRITE LAYERS TO A NEW SVG FILE (ONE FILE FOR EACH LAYER ) # ##################################################################### HEADENDLINENUMBER=`cat -n $SVGDIR/$SVG | \ grep $HEADEND | \ cut -f 1 | \ head -1` for LAYERFILE in `cat $LAYERLIST | \ awk '{FS="_" ; $0=$0 ; print $NF"|"$0}' | \ sort -n | cut -d "|" -f 2` do FILE=${LAYERFILE##*/} NAME=${FILE%%.*} NEWSVG=$TMPDIR/${NAME}.svg ID=`grep $LAYERID $LAYERFILE | cut -d "\"" -f 2` if [ `find $TMPDIR -name "${NAME}.svg" | wc -l` -lt 1 ]; then head -n $HEADENDLINENUMBER $SVGDIR/$SVG > $NEWSVG cat $LAYERFILE >> $NEWSVG echo "" >> $NEWSVG sed -i 's/style="display:none"//g' $NEWSVG inkscape --export-png=${SLIDEDIR}/${ID}.png \ --export-area-page \ --export-background=FFFFFF \ --export-text-to-path $NEWSVG fi done } # ---------------------------------------------------------------------- # separateLayers pngFromLayer $IDENTIFIER $LAYERID exit 0;