jueves, 11 de febrero de 2010

3.5. cond

Evalúa distintas condiciones, ejecutando el código que la sigue si se cumple. Su esquema general es:
    (cond 
((condicion1)
(func1 arg1 arg2)
(func2 arg4 arg5)
)
((condicion2)
(func3 arg3 arg4
(func2 arg4 arg5)
)
(else ; si no cumple ninguna de las anteriores
(func4 arg5 arg6)
)
)


Ejemplos:
    (target_red
(cond
((= mode 0) average)
((= mode 1) 255)
((= mode 2) (car bg))
)
)


Esta función devuelve un valor distinto después de evaluar múltiples opciones:
    (define (to-string arg)
(cond
((number? arg) (number->string arg))
((string? arg) arg)
((symbol? arg) " ")
((pair? arg) (my-pair->string arg))
(else " ")
)
)


(cond
((= inEdges 0) ; Laplacian edges
(plug-in-gauss-iir TRUE inImage EdgeLayer inWeight TRUE TRUE)
(plug-in-laplace TRUE inImage EdgeLayer)
) ; en first condition
((= inEdges 1) ; Sobel Edges
(plug-in-sobel TRUE inImage EdgeLayer TRUE TRUE TRUE)
) ; end second condition
((= inEdges 2) ; Synthetic Edges
(set! tmplayer (car (gimp-layer-copy EdgeLayer TRUE)))
(gimp-image-add-layer inImage tmplayer -1)
(gimp-layer-set-mode tmplayer DIVIDE-MODE)
(plug-in-gauss-iir TRUE inImage tmplayer inWeight TRUE TRUE)
(set! EdgeLayer
(car (gimp-image-merge-down inImage tmplayer
EXPAND-AS-NECESSARY)))
(gimp-levels EdgeLayer HISTOGRAM-VALUE
(- 255 inWeight) ; low input
255 ; high input
1.0 ; gamma
0 255) ; output
) ; end third condition
) ; end cond

No hay comentarios:

Publicar un comentario