10.1.4 Language Directives
- Control the parsing of sections of the scene file:
- LANGUAGE_DIRECTIVE:
INCLUDE_DIRECTIVE | IDENTIFIER_DECLARATION | UNDEF_DIRECTIVE | FOPEN_DIRECTIVE | FCLOSE_DIRECTIVE | READ_DIRECTIVE |
WRITE_DIRECTIVE | DEFAULT_DIRECTIVE | VERSION_DIRECTIVE | IF_DIRECTIVE | IFDEF_DIRECTIVE | IFNDEF_DIRECTIVE | SWITCH_DIRECTIVE |
WHILE_DIRECTIVE | TEXT_STREAM_DIRECTIVE | MACRO_DEFINITION
Quick Reference Contents
10.1.4.1 File Inclusion
- Insert content of another scene file:
- INCLUDE_DIRECTIVE:
#include FILE_NAME
- File inclusion may be nested at most 10 levels deep.
- FILE_NAME:
STRING
Quick Reference Contents
10.1.4.2 Identifier Declaration
- Create an identifier for a value, object, etc.
- IDENTIFIER_DECLARATION:
#declare IDENTIFIER = RVALUE [;] |
#local IDENTIFIER = RVALUE [;]
- Up to 127 characters, starting with a letter, consisting of letters, digits and/or the underscore. The semicolon is required for a FLOAT, VECTOR or COLOR declaration.
- RVALUE:
FLOAT | VECTOR | COLOR | USER_FUNCTION | STRING | ARRAY_REFERENCE | SPLINE | TRANSFORM | CAMERA | LIGHT | OBJECT | MATERIAL |
INTERIOR | TEXTURE | TEXTURE_MAP | PIGMENT | COLOR_MAP | PIGMENT_MAP | NORMAL | SLOPE_MAP | NORMAL_MAP | FINISH | MEDIA | DENSITY |
DENSITY_MAP | FOG | RAINBOW | SKY_SPHERE
- Destroy an identifier:
- UNDEF_DIRECTIVE:
#undef IDENTIFIER
Quick Reference Contents
10.1.4.3 File Input/Output
- Open a text file:
- FOPEN_DIRECTIVE:
#fopen FILE_HANDLE_IDENTIFIER FILE_NAME OPEN_TYPE
- OPEN_TYPE:
read | write | append
- Close a text file:
- FCLOSE_DIRECTIVE:
#fclose FILE_HANDLE_IDENTIFIER
- Read string, float and/or vector values from a text file:
- READ_DIRECTIVE:
#read ( FILE_HANDLE_IDENTIFIER, DATA_IDENTIFIER [, DATA_IDENTIFIER]... )
- Use defined(FILE_HANDLE_IDENTIFIER) to detect end-of-file after a read.
- DATA_IDENTIFIER:
UNDECLARED_IDENTIFIER | FLOAT_IDENTIFIER | VECTOR_IDENTIFIER | STRING_IDENTIFIER | ARRAY_REFERENCE
- May read a value into an array reference if the array element's type has already been established.
- Write string, float and/or vector values to a text file:
- WRITE_DIRECTIVE:
#write ( FILE_HANDLE_IDENTIFIER, DATA_ITEM [, DATA_ITEM]... )
- DATA_ITEM:
FLOAT | VECTOR | STRING
Quick Reference Contents
10.1.4.4 Default Texture
- Specify a default texture, pigment, normal or finish:
- DEFAULT_DIRECTIVE:
#default { DEFAULT_ITEM }
- DEFAULT_ITEM:
PLAIN_TEXTURE | PIGMENT | NORMAL | FINISH
Quick Reference Contents
10.1.4.5 Version Identfier
- Specify the POV-Ray compatibility version number:
- VERSION_DIRECTIVE:
#version FLOAT;
Quick Reference Contents
10.1.4.6 Conditional Directives
- Conditionally parse a section of the scene file, depending on a boolean expression:
- IF_DIRECTIVE:
#if ( BOOL ) TOKENS [#else TOKENS] #end
- TOKENS:
- Any number of POV-Ray keywords, identifiers, values and/or punctuation.
- Conditionally parse a section of the scene file, depending on the existence of an identifier:
- IFDEF_DIRECTIVE:
#ifdef ( IDENTIFIER ) TOKENS [#else TOKENS] #end
- IFNDEF_DIRECTIVE:
#ifndef ( IDENTIFIER ) TOKENS [#else TOKENS] #end
- Conditionally parse a section of the scene file, depending on the value of a float expression:
- SWITCH_DIRECTIVE:
#switch ( FLOAT ) SWITCH_CLAUSE... [#else TOKENS] #end
- SWITCH_CLAUSE:
#case ( FLOAT ) TOKENS [#break] |
#range ( F_LOW, F_HIGH ) TOKENS [#break]
- Repeat a section of the scene file while a boolean condition is true:
- WHILE_DIRECTIVE:
#while ( LOGICAL_EXPRESSION ) TOKENS #end
Quick Reference Contents
10.1.4.7 Message Streams
- Send a message to a text stream:
- TEXT_STREAM_DIRECTIVE:
#debug STRING | #error STRING | #warning STRING
Quick Reference Contents
10.1.4.8 Macro
- Define a macro:
- MACRO_DEFINITION:
#macro MACRO_IDENTIFIER ( [PARAM_IDENTIFIER [, PARAM_IDENTIFIER]...] ) TOKENS #end
- A parameter identifier may not be repeated in the list.
- Invoke a macro:
- MACRO_INVOCATION:
MACRO_IDENTIFIER ( [ACTUAL_PARAM [, ACTUAL_PARAM]...] )
- ACTUAL_PARAM:
IDENTIFIER | RVALUE
Quick Reference Contents
10.1.4.9 Embedded Directives
- Some directives may be embedded in CAMERA, LIGHT, OBJECT and ATMOSPHERIC_EFFECT statements.
However, the directives should only include items (if any) that are valid for a given statement.
Also, they should not disrupt the required order of items, where applicable.
- EMBEDDED_DIRECTIVE:
IDENTIFIER_DECLARATION | UNDEF_DIRECTIVE | READ_DIRECTIVE | WRITE_DIRECTIVE | IF_DIRECTIVE |
IFDEF_DIRECTIVE | IFNDEF_DIRECTIVE | SWITCH_DIRECTIVE | WHILE_DIRECTIVE | TEXT_STREAM_DIRECTIVE
Quick Reference Contents