|
Internal Structures |
Direct Structure Access
| Direct access to SilverScreen internal data structures is primarily through the use of the get_bos and get_prim built-in functions. These functions return pointers to the structures described below. These structures are defined in the distribution header file ssnodes.h. |
| BOS_NODE | information common to all entity nodes |
| BLOCK_NODE | block information |
| OBJECT_NODE | object information |
| SYMBOL_NODE | symbol information |
| TEXT_NODE | text node for both stroke and TrueType text |
| PRIM_NODE | information common to all primitive nodes |
| LINE_NODE | line information |
| ROUND_NODE | circle, ellipse, and arc information |
| POLYGON_NODE | polygon information |
| POLYLINE_NODE | polyline information |
| POINT_NODE | point information |
| CURVE_NODE | curve (Bezier and spline) information |
| SPOINT_NODE | information for point of spline curve |
| BPOINT_NODE | information for point of Bezier curve |
| FONT_NODE | information about the font used in a TEXT_NODE |
| TAG_NODE | Information about data that has been attached to a BOS_NODE |
| LIGHT_NODE | light source information |
| SURFACE_NODE | surface property information |
| MODEL_NODE | information about a model that is attached to a SYMBOL_NODE |
| ATTRIBUTE_NODE | attribute information |
| SCHEMA_NODE | schema information that is attached to a BOS_NODE |
| TEXTURE_DATA | texture information |
| SS_PATTERN | pattern information |
|
BOS_NODE { int bits1; int bits2; SS_XYZ high; SS_XYZ low; SS_XYZ center; SS_XYZ top_axis; SS_XYZ bottom_axis; SS_XYZ local_horz; SS_XYZ local_vert; SS_XYZ local_base; NAME name; int force_style_color; RGB force_rgb; BOS_NODE *next_bos; BOS_NODE *prev_bos; BLOCK_NODE *parent; }; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| For bits1, the following are used:
For bits2, the following are used:
Field descriptions:
|
|
BLOCK_NODE { // Common BOS_NODE section omitted BOS_NODE *first_bos; SCHEMA_NODE *first_schema; TAG_NODE *first_tag; void *unused1; void *unused2; }; |
||||||
| Field descriptions:
|
|
OBJECT_NODE { // Common BOS_NODE section omitted SCHEMA_NODE *first_schema; void *unused1; void *unused2; void *unused3; PRIM_NODE *first_node; PRIM_NODE *last_node; int primitives; int high_id; EDGE edges; VERTEX vertices; double pattern_scale; int pattern_color; RGB pattern_rgb; SURFACE_NODE sn; }; |
||||||||||||||||||||||
| Field descriptions:
|
|
SYMBOL_NODE { // Common BOS_NODE section omitted MATRIX matrix; double pattern_scale; MODEL_NODE *model; SCHEMA_NODE *first_schema; TAG_NODE *first_tag; NAME model_name; FILE_NAME library_name; RGB pattern_rgb; RGB surface_rgb; int bits_surface; int pattern_color; int surface_pattern_color; }; |
||||||||||||||||||||||||
| Field descriptions:
|
|
TEXT_NODE { // Common BOS_NODE section omitted MATRIX matrix; SS_XYZ where; SS_XYZ xyz2; double height; double width_ratio; double spacing_ratio; double slant; double angle; double total_width; double total_height; char *text; FONT_NODE *font_ptr; int underscore; int overscore; int direction; int justification; RGB text_rgb; int text_width_style; int is_filled; }; |
|||||||||||||||||||||||||||||||||||||
| Field descriptions:
|
|
PRIM_NODE { int bits; int id; PRIM_NODE *next_node; PRIM_NODE *prev_node; OBJECT_NODE *parent; }; |
||||||||||||||||||||||||||||||||||||||||||||
| Settings for the bits field:
Field descriptions:
|
|
LINE_NODE { // Common PRIM_NODE section omitted EDGE edge; }; |
||
| Field descriptions:
|
|
ROUND_NODE { // Common PRIM_NODE section omitted PRIM_NODE *first_hole; SS_XYZ horizontal; SS_XYZ vertical; double start_angle; double stop_angle; SURFACE_NODE *sn; RGB surface_rgb; RGB round_rgb; int unused2; int unused3; VERTEX center; int unused4; TEXTURE_DATA *texture; }; |
||||||||||||||||||||
| Field descriptions:
|
|
POLYGON_NODE { // Common PRIM_NODE section omitted PRIM_NODE *first_hole; SURFACE_NODE *sn; RGB surface_rgb; int unused; PRIM_NODE *first_node; PRIM_NODE *first_phantom; TEXTURE_DATA *texture; }; |
||||||||||||
| Field descriptions:
|
|
POLYLINE_NODE { // Common PRIM_NODE section omitted void *unused1; void *unused2; int unused3; int unused4; PRIM_NODE *first_node; void *unused5; void *unused6; }; |
||
| Field descriptions:
|
|
POINT_NODE { // Common PRIM_NODE section omitted VERTEX point; int type; int unused2; double size; RGB line_rgb; }; |
||||||||
| Field descriptions:
|
|
CURVE_NODE { // Common PRIM_NODE section omitted PRIM_NODE *first_hole; SURFACE_NODE *sn; RGB surface_rgb; int unused4; int unused3; RGB line_rgb; PRIM_NODE *first_point; TEXTURE_DATA *texture; }; |
||||||||||||
| Field descriptions:
|
|
SPOINT_NODE { // Common PRIM_NODE section omitted VERTEX point; int knots; }; |
||||
| Field descriptions:
|
| BPOINT_NODE { // Common PRIM_NODE section omitted VERTEX point; SS_XYZ forward; SS_XYZ backward; }; |
||||||
| Field descriptions:
|
|
FONT_NODE { int font_type; FILE_NAME font_name; USINT style; FILE_NAME screen_font_name; USINT screen_style; int space_out; BOS_NODE **the_chars; int first_char; int last_char; int default_char; double unused; FONT_NODE *next_font; }; |
||||||||||||||||||||
| Field descriptions:
|
|
TAG_NODE { int type; NAME name; union { double tag_double; XYZ tag_xyz; char *tag_text; } data; TAG_NODE *next_tag; }; |
||||||
| Field descriptions:
|
|
LIGHT_NODE { int type; int enabled; NAME light_name; char *light_shader; XYZ location; XYZ direction; double exponent; double constant_attenuation; double linear_attenuation; double quadratic_attenuation; double cone_angle; RGB light_rgb; LIGHT_NODE *next_light; }; |
||||||||||||||||||||||||||
| Field descriptions:
|
|
typedef struct { int bits; int ambient_diffusion; int diffusion; int spectral_intensity; int spectral_power; double opacity; RGB spectral_color; } SURFACE_NODE; |
||||||||||||||
| Field descriptions:
|
|
MODEL_NODE { int unused; NAME name; SS_XYZ high; SS_XYZ low; FILE_NAME library_name[12]; BLOCK_NODE *root; MODEL_NODE *next_model; int high_low_set; }; |
||||||||||||||
| Field descriptions:
|
|
ATTRIBUTE_NODE { int bits; int precision; double the_double; NAME name; char *value; ATTRIBUTE_NODE *next_attribute; }; |
||||||||||||
| Field descriptions:
|
|
SCHEMA_NODE { NAME name; char *description; ATTRIBUTE_NODE *first_attribute; SCHEMA_NODE *next_schema; }; |
||||||||
| Field descriptions:
|
|
typedef struct { int Flags; double Width; double Height; double Rotation; } TEXTURE_DATA; |
||||||||
| Field descriptions:
|
|
typedef struct { double height; double width; int units; int fill; } SS_PATTERN; |
||||||||
| Field descriptions:
|