|
|
Is there any way or any trick for checking the type of a parameter from within a
macro? For example, it would be useful to have a texture apply optionally to a
portion of a union:
#macro Neat_object (Param1, Param2, Texture)
union
{ object { ... }
object
{ ...
#if ( /* Texture is really a texture and not the float value 0 */ )
texture { Texture }
#end
}
}
#end
Since macro arguments must be defined, #ifdef is useless here. Another common
situation would be passing in a color or a texture:
texture
{ #if ( /* Texture is a vector */ )
pigment { color Texture }
#else
Texture
#end
}
Post a reply to this message
|
|
|
|
Cousin Ricky napsal(a):
> Is there any way or any trick for checking the type of a parameter from within a
> macro? For example, it would be useful to have a texture apply optionally to a
> portion of a union:
>
> #macro Neat_object (Param1, Param2, Texture)
> union
> { object { ... }
> object
> { ...
> #if ( /* Texture is really a texture and not the float value 0 */ )
> texture { Texture }
> #end
> }
> }
> #end
>
> Since macro arguments must be defined, #ifdef is useless here. Another common
> situation would be passing in a color or a texture:
>
> texture
> { #if ( /* Texture is a vector */ )
> pigment { color Texture }
> #else
> Texture
> #end
> }
>
>
>
>
It's not possible in pure pov-ray but it is possible int mega-pov. See
2.2.6.5 in mega-pov documentation.
Post a reply to this message
|
|
|
|
Cousin Ricky wrote:
> For example, it would be useful to have a texture apply optionally to a
> portion of a union:
>
> #macro Neat_object (Param1, Param2, Texture)
> union
> { object { ... }
> object
> { ...
> #if ( /* Texture is really a texture and not the float value 0 */ )
> texture { Texture }
> #end
> }
> }
> #end
You could use the following workaround:
#macro Neat_object (Param1, Param2, Texture, UseTexture)
union
{ object { ... }
object
{ ...
#if (UseTexture)
texture { Texture }
#end
}
}
#end
Neat_object(Foo, Bar, MightBeATexture, defined(MightBeATexture)
HTH,
Florian
Post a reply to this message
|
|