# Makefile para processar as entregas do exercício tp06 de POV-Ray # Last edited on 2003-05-31 20:28:15 by stolfi MAIN := main OTHERINPUTS := ${shell ( ls *.inc || echo " ")} POVPUB := /home/staff/stolfi/programs/c-curitiba/povray-3.50c-1/PUB POVRAY := ${POVPUB}/i686-Linux-2.2/bin/povray POVINC := ${POVPUB}/share/povray-3.5/include POVTTF := /home/staff/stolfi/PUB/povray/tt-fonts IMVIEW := /usr/X11R6/bin/display CONVERT := /usr/X11R6/bin/convert TOOLDIR := /home/staff/stolfi/public_html/mc930-2003-1-A/progs/tools .PHONY: \ all single showsingle \ first showfirst \ middle showmiddle \ last showlast \ strip showstrip \ fast showfast \ movie showmovie \ cleanup \ frame frameicon showframe \ all-movies index all: first middle last strip movie # all: middle showmiddle # all: last showlast # all: first showfirst # all: strip showstrip # "make first" mostra o primeiro quadro da animação: # first: ${MAKE} CLOCK=0.0000 single; showfirst: ${MAKE} CLOCK=0.0000 showsingle; # "make middle" mostra o quadro central da animação: # middle: ${MAKE} CLOCK=0.5000 single; showmiddle: ${MAKE} CLOCK=0.5000 showsingle; # "make last" mostra o quadro final da animação: # last: ${MAKE} CLOCK=1.0000 single; showlast: ${MAKE} CLOCK=1.0000 showsingle; SINGLENAME := ${MAIN} SINGLEWIDTH := 480 SINGLEHEIGHT := 360 SINGLERAYS := 2 # "make strip" mostra filme em forma de tiras, com 15 quadros médios: # STRIPNAME := ${MAIN}-s STRIPWIDTH := 160 STRIPHEIGHT := 120 STRIPRAYS := 1 STRIPCLOCKS := \ 0.0000 0.0714 0.1429 0.2143 0.2857 \ 0.3571 0.4286 0.5000 0.5714 0.6429 \ 0.7143 0.7857 0.8571 0.9286 1.0000 strip: /bin/rm -f ${STRIPNAME}.jpg for clock in ${STRIPCLOCKS} ; do \ ${MAKE} NAME=${STRIPNAME} CLOCK=$$clock \ WIDTH=${STRIPWIDTH} HEIGHT=${STRIPHEIGHT} \ NRAYS=${STRIPRAYS} SHOW='+D' BORDER=1 \ frame; \ done ${TOOLDIR}/tile-movie-frames -ncols 5 ${STRIPNAME}.jpg ${STRIPNAME}-*.*.jpg showstrip: strip -${IMVIEW} ${STRIPNAME}.jpg # "make fast" mostra filme rápido (velocidade × 4) com 5 quadros médios: # FASTNAME := ${MAIN}-f FASTWIDTH := 200 FASTHEIGHT := 150 FASTRAYS := 1 FASTDELAY := 15 FASTCLOCKS := \ 0.0000 0.0417 0.0833 0.1250 0.1667 \ 0.2083 0.2500 0.2917 0.3333 0.3750 \ 0.4167 0.4583 0.5000 0.5417 0.5833 \ 0.6250 0.6667 0.7083 0.7500 0.7917 \ 0.8333 0.8750 0.9167 0.9583 1.0000 fast: /bin/rm -f ${FASTNAME}.gif for clock in ${FASTCLOCKS} ; do \ ${MAKE} NAME=${FASTNAME} CLOCK=$$clock \ WIDTH=${FASTWIDTH} HEIGHT=${FASTHEIGHT} \ NRAYS=${FASTRAYS} SHOW='-D' \ frame; \ done ${TOOLDIR}/animate-movie-frames \ -delay ${FASTDELAY} \ ${FASTNAME}.gif \ ${FASTNAME}-*.*.jpg showfast: -${IMVIEW} -delay ${FASTDELAY} ${FASTNAME}.gif # "make movie" mostra filme (em velocidade normal) com 21 quadros pequenos: # MOVIENAME := ${MAIN}-m MOVIEWIDTH := 240 MOVIEHEIGHT := 180 MOVIERAYS := 2 MOVIEDELAY := 10 MOVIECLOCKS := \ 0.0000 0.0200 0.0400 0.0600 0.0800 \ 0.1000 0.1200 0.1400 0.1600 0.1800 \ 0.2000 0.2200 0.2400 0.2600 0.2800 \ 0.3000 0.3200 0.3400 0.3600 0.3800 \ 0.4000 0.4200 0.4400 0.4600 0.4800 \ 0.5000 0.5200 0.5400 0.5600 0.5800 \ 0.6000 0.6200 0.6400 0.6600 0.6800 \ 0.7000 0.7200 0.7400 0.7600 0.7800 \ 0.8000 0.8200 0.8400 0.8600 0.8800 \ 0.9000 0.9200 0.9400 0.9600 0.9800 \ 1.0000 # MOVIEDELAY := 6 # MOVIECLOCKS := \ # 0.0000 0.0125 0.0250 0.0375 0.0500 0.0625 0.0750 0.0875 \ # 0.1000 0.1125 0.1250 0.1375 0.1500 0.1625 0.1750 0.1875 \ # 0.2000 0.2125 0.2250 0.2375 0.2500 0.2625 0.2750 0.2875 \ # 0.3000 0.3125 0.3250 0.3375 0.3500 0.3625 0.3750 0.3875 \ # 0.4000 0.4125 0.4250 0.4375 0.4500 0.4625 0.4750 0.4875 \ # 0.5000 0.5125 0.5250 0.5375 0.5500 0.5625 0.5750 0.5875 \ # 0.6000 0.6125 0.6250 0.6375 0.6500 0.6625 0.6750 0.6875 \ # 0.7000 0.7125 0.7250 0.7375 0.7500 0.7625 0.7750 0.7875 \ # 0.8000 0.8125 0.8250 0.8375 0.8500 0.8625 0.8750 0.8875 \ # 0.9000 0.9125 0.9250 0.9375 0.9500 0.9625 0.9750 0.9875 \ # 1.0000 movie: /bin/rm -f ${MOVIENAME}.gif for clock in ${MOVIECLOCKS} ; do \ ${MAKE} NAME=${MOVIENAME} CLOCK=$$clock \ WIDTH=${MOVIEWIDTH} HEIGHT=${MOVIEHEIGHT} \ NRAYS=${MOVIERAYS} SHOW='-D' \ frame; \ done ${TOOLDIR}/animate-movie-frames \ -delay ${MOVIEDELAY} \ ${MOVIENAME}.gif \ ${MOVIENAME}-*.*.jpg showmovie: -${IMVIEW} -delay ${MOVIEDELAY} ${MOVIENAME}.gif # "make cleanup" remove todos os arquivos gerados # Cuidado para não remover "main-orig.gif" # cleanup: -/bin/rm -f ${MAIN}-*.png ${MAIN}-*.jpg ${MAIN}-*.log -/bin/rm -f ${MAIN}.png ${MAIN}.jpg ${MAIN}.log -/bin/rm -f ${MAIN}-s*.gif ${MAIN}-f*.gif ${MAIN}-m*.gif ${MAIN}.gif # Tamanho dos ícones na página-indice: ICONHEIGHT := 60 ###################################################################### # Comandos genéricos usados pelos comandos acima. # Quem chama deve definir ${CLOCK}. # CLOCK := CLOCK.IS.UNDEFINED ifneq "${CLOCK}" "CLOCK.IS.UNDEFINED" # "make CLOCK=N.NNNN single" gera um quadro com o valor de clock especificado: # single: ${MAKE} NAME=${SINGLENAME} CLOCK=`printf "%6.4f" ${CLOCK}` \ WIDTH=${SINGLEWIDTH} HEIGHT=${SINGLEHEIGHT} \ NRAYS=${SINGLERAYS} SHOW='+D' \ frame frameicon showsingle: ${MAKE} NAME=${SINGLENAME} CLOCK=`printf "%6.4f" ${CLOCK}` \ WIDTH=${SINGLEWIDTH} HEIGHT=${SINGLEHEIGHT} \ NRAYS=${SINGLERAYS} SHOW='+D' \ showframe ###################################################################### # Comandos genéricos usados pelos comandos acima. # Quem chama deve definir ${NAME} e ${CLOCK}. # NAME := NAME.IS.UNDEFINED ifneq "${NAME}" "NAME.IS.UNDEFINED" FRAME := ${NAME}-${CLOCK} FRAMEICON := ${FRAME}-i BORDER := 0 frame: Makefile ${FRAME}.jpg frameicon: ${FRAMEICON}.jpg showframe: ${FRAME}.jpg -${IMVIEW} ${FRAME}.jpg ${FRAME}.jpg: ${FRAME}.png -/bin/rm -f ${FRAME}.jpg ${CONVERT} -quality 95 \ -bordercolor gray -border ${BORDER}x${BORDER} \ ${FRAME}.png ${FRAME}.jpg ${FRAME}.png: ${MAIN}.pov ${OTHERINPUTS} -/bin/rm -f ${FRAME}.png nice ${POVRAY} \ +FN +Q9 +AM1 +A0.0 +R${NRAYS} +MB1 \ +W${WIDTH} +H${HEIGHT} +K${CLOCK} \ $${SHOW} +SP32 +EP4 \ +L${POVINC} +L${POVTTF} \ +I${MAIN}.pov \ +O${FRAME}.png \ 3>&2 | tee ${FRAME}.log ${FRAMEICON}.jpg: ${FRAME}.png ${CONVERT} ${FRAME}.png PPM:- \ | pnmscale -ysize ${ICONHEIGHT} \ | pnmdepth 255 \ | ppmquant 254 \ | ${CONVERT} PPM:- \ -quality 95 \ ${FRAMEICON}.jpg endif # Fim ${NAME} ###################################################################### endif # Fim ${CLOCK} ###################################################################### # For the whole class: # all-movies: rausrs.txt ${TOOLDIR}/make-all-movies \ `cat rausrs.txt | egrep -v '^ *([#]|$$)' | gawk '//{print $$1;}' ` index: title.txt rausrs.txt aus.txt \ absent.gif absent-s.gif \ missing.gif missing-s.gif ${TOOLDIR}/make-labday-movie-page "`cat title.txt`" absent.gif: Makefile ppmmake 'rgbi:0.75/0.75/0.75' ${SINGLEWIDTH} ${SINGLEHEIGHT} \ | pnmdepth 255 \ | ppmquant 254 \ | ppmtogif \ > absent.gif -${IMVIEW} absent.gif missing.gif: Makefile ppmmake 'rgbi:0.80/0.15/0.15' ${SINGLEWIDTH} ${SINGLEHEIGHT} \ | pnmdepth 255 \ | ppmquant 254 \ | ppmtogif \ > missing.gif -${IMVIEW} missing.gif %-s.gif: %.gif cat $*.gif \ | giftopnm \ | pnmscale -ysize ${ICONHEIGHT} \ | pnmdepth 255 \ | ppmquant 254 \ | ppmtogif > $*-s.gif -${IMVIEW} $*-s.gif