You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
220 lines
9.0 KiB
220 lines
9.0 KiB
/*
|
|
* Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
* See packages/seacas/LICENSE for details
|
|
*/
|
|
#pragma once
|
|
/* ------------------------------------------------------------*/
|
|
/* >> DATA STRUCTURE DEFINITIONS */
|
|
/*-------------------------------------------------------------*/
|
|
|
|
#include "cgi.h"
|
|
|
|
/* define a structure to store SVDI attributes */
|
|
/* --keeps track of SVDI attribs which have been set for each surface */
|
|
/* --these values are stored in CGI terms, not SVDI/NDC terms */
|
|
typedef struct
|
|
{
|
|
int fg_color; /* foreground color for vector */
|
|
int bg_color; /* background color for vector */
|
|
float intensity; /* current intensity */
|
|
int line_type; /* current line style */
|
|
float line_width; /* current line width */
|
|
float char_x; /* current char box size in x */
|
|
float char_y; /* current char box size in y */
|
|
float fg_rgb[3]; /* foreground color for raster */
|
|
float bg_rgb[3]; /* background color for raster */
|
|
} vdi_attrib_struct;
|
|
|
|
/* state list structure for this device */
|
|
/* -- stores state of each surface for this device */
|
|
typedef struct
|
|
{
|
|
|
|
/* cstate.i - definitions for cgi part of state lists for devices
|
|
* 8 Sep 1989 - last date modified
|
|
* Pat McGee, jpm@lanl.gov
|
|
*/
|
|
|
|
int cgi_inited; /* 0 for uninitialized, 1 for inited */
|
|
int err_flag[MAX_ERROR_CLASS]; /* on or off for each of 7 classes */
|
|
error_report err_queue[ERROR_LIST_SIZE];
|
|
int err_head_ptr; /* head of error queue */
|
|
int err_count; /* count of errors in queue */
|
|
|
|
/* ----------control, negotiation and errors---------- */
|
|
/* control state list */
|
|
/* -- control state: */
|
|
int pic_dirty; /* 0 = clean, 1 = dirty */
|
|
int color_index_prec; /* -1 for bad */
|
|
|
|
/* -- VDC to Device mapping: */
|
|
point vdc1; /* corner 1 of vdc extent */
|
|
point vdc2; /* corner 2 of vdc extent */
|
|
point vp1; /* corner 1 of viewport (mode:fraction view surf)*/
|
|
point vp2; /* corner 1 of viewport (mode:fraction view surf)*/
|
|
point eff_vp1; /* corner 1 of effective viewport */
|
|
point eff_vp2; /* corner 2 of effective viewport */
|
|
|
|
/* -- clipping: */
|
|
cenum clip_indicator; /* on, off */
|
|
point clip_rect1; /* corner 1 of requested clip rectangle */
|
|
point clip_rect2; /* corner 2 of requested clip rectangle */
|
|
cenum ds_clip_indicator; /* off, draw surf clip rect, viewport */
|
|
|
|
/* ----------output and attributes---------- */
|
|
/* attribute state lists */
|
|
/* line attributes state list */
|
|
int line_type;
|
|
float line_width;
|
|
int line_color[3]; /* use elem 0 for indexed, all 3 for direct*/
|
|
cenum line_csm; /* csm in which line color was last specified */
|
|
|
|
/* marker attributes state list */
|
|
int mark_type;
|
|
float mark_size;
|
|
int mark_color[3]; /* use elem 0 for indexed, all 3 for direct*/
|
|
cenum mark_csm; /* csm in which mark color was last specified */
|
|
|
|
/* text attributes state list */
|
|
int text_color[3]; /* use elem 0 for indexed, all 3 for direct*/
|
|
cenum text_csm; /* csm in which text color was last specified */
|
|
float char_height;
|
|
|
|
/* fill attributes state list */
|
|
int fill_color[3]; /* use elem 0 for indexed, all 3 for direct*/
|
|
cenum fill_csm; /* csm in which fill color was last specified */
|
|
int interior_style; /* 0 = hollow, 1 = solid */
|
|
|
|
/* output and attribute control state list */
|
|
cenum csm; /* current color mode:
|
|
0=direct, 1=indexed, -1=bad*/
|
|
rgb color_table[COLOR_TABLE_SIZE];
|
|
|
|
/* end cstate.i */
|
|
|
|
int next_free_state; /* for free state list */
|
|
int this_index; /* index of statelist in array */
|
|
|
|
/* SVDI dependent stuff */
|
|
float xscale; /* x scale to map VDC to NDC viewport */
|
|
float yscale; /* y scale to map VDC to NDC viewport */
|
|
float xoffset; /* x offset to map VDC to NDC v.p. */
|
|
float yoffset; /* y offset to map VDC to NDC v.p. */
|
|
int color_set; /* TRUE = color table set by user */
|
|
vdi_attrib_struct vdi_attrib; /* current vdi attributes */
|
|
|
|
/* other info */
|
|
point eff_clip_rect1; /* corner 1 of effective clip rectangle */
|
|
point eff_clip_rect2; /* corner 2 of effective clip rectangle */
|
|
point clipmin; /* min corner of actual clip region - NDC */
|
|
point clipmax; /* max corner of actual clip region - NDC */
|
|
int clip_on; /* logical - TRUE = clipping is on */
|
|
int fg_index; /* for mapping foreground and background */
|
|
int bg_index; /* indices */
|
|
|
|
/* device dependent stuff - batch device */
|
|
/* -- BUFFER_SIZE is 0 if interactive device */
|
|
char filename[100]; /* name of file */
|
|
int file_d; /* file descriptor - -1 if file not open */
|
|
char buffer[BUFFER_SIZE]; /* for buffering data for output to file */
|
|
int buff_ptr; /* keep track of buffer space */
|
|
|
|
/* device dependent stuff - interactive device */
|
|
/* a state list exists for each logical input device as identified
|
|
* by its input class and its input device index. we support only
|
|
* locator, and 1 input device index.
|
|
*/
|
|
int input_dev_class; /* we only support locator */
|
|
int input_dev_index; /* we only support 1 */
|
|
cenum input_dev_state; /* ready or released */
|
|
|
|
} surf_statelist;
|
|
|
|
/* description table */
|
|
/* -- stores description table for this device - one per device */
|
|
typedef struct
|
|
{
|
|
|
|
/* cdescr.i - definitions for cgi description table */
|
|
/* 9 Sep 1989 - last date modified
|
|
*/
|
|
|
|
/* ----------control, negotiation and errors---------- */
|
|
/* device identity description table */
|
|
cenum dev_class; /* device class: IN,OUT,INOUT */
|
|
char dev_id[4]; /* device identification */
|
|
|
|
/* output device description table */
|
|
cenum copy_class; /* hard, soft */
|
|
cenum display_type; /* vector,raster,other */
|
|
cenum bcolor_cap; /* background color capability */
|
|
cenum dynamic_mod_bg; /* dynamic mod accept for bg color */
|
|
cenum dynamic_mod_map; /* dynamic mod accept for mapping */
|
|
dpoint dc1; /* device bottom left corner */
|
|
dpoint dc2; /* device upper right corner */
|
|
float draw_surf_width; /* measured in millimeters */
|
|
float draw_surf_height; /* measured in millimeters */
|
|
cenum pix_loc; /* pixel location */
|
|
|
|
/* ----------output and attributes---------- */
|
|
/* attribute description tables */
|
|
/* primitive support description table */
|
|
int max_pts_polyline; /* -1,128..n */
|
|
int max_pts_disj_polyline; /* -1,0..n */
|
|
int max_pts_polygon; /* -1,0..n */
|
|
int max_pts_polygon_set; /* -1,0..n */
|
|
int max_pts_polymarker; /* -1,128..n */
|
|
int max_pts_cellarray; /* -1,0..n */
|
|
int max_pts_closed_fig; /* -1,0..n */
|
|
int max_chars_text; /* 80..n */
|
|
cenum cellarray_fill_cap; /* none,global,local */
|
|
cenum cellarray_align_cap; /* axis,skewed */
|
|
cenum compound_text_cap; /* none,global,local */
|
|
cenum compound_fig_cap; /* none,global,local */
|
|
|
|
/* line description table */
|
|
int linewidth_nominal; /* nominal scaled line width ( >0 ) */
|
|
int linewidth_min; /* minimum scaled line width ( >0 ) */
|
|
int linewidth_max; /* maximum scaled line width ( >0 ) */
|
|
int line_types[5]; /* list of available line types */
|
|
int line_widths[5]; /* list of available scale line widths */
|
|
|
|
/* marker description table */
|
|
int mark_nominal; /* nominal scaled marker size ( >0 ) */
|
|
int mark_min; /* minimum scaled marker size ( >0 ) */
|
|
int mark_max; /* maximum scaled marker size ( >0 ) */
|
|
int mark_types[1]; /* list of available marker types */
|
|
int mark_sizes[1]; /* list of available scale marker sizes */
|
|
|
|
/* text description table */
|
|
/* fill description table */
|
|
cenum interior_styles[2]; /* list of available interior styles */
|
|
|
|
/* attribute and control description table */
|
|
int num_simul_colors; /* 2..n */
|
|
int num_avail_colors; /* 2..n */
|
|
int num_avail_int; /* if direct, use all 3 */
|
|
cenum csm_avail; /* indexed only, indexed and direct */
|
|
cenum dynamic_mod_ct; /* irg, cbs, imm */
|
|
cenum color_overwrite; /* irg, cbs, imm */
|
|
cenum monochrome_device; /* no,yes */
|
|
|
|
/* end cdescr.i */
|
|
|
|
/* SVDI part of description table */
|
|
/* --used to store default SVDI setup and to reinitialize */
|
|
int set_flag; /* TRUE = SVDI defaults set, FALSE = not */
|
|
int svdi_type; /* 0 = SVDI, 1 = SVDI+raster */
|
|
float xndc_max; /* max x ndc value */
|
|
float yndc_max; /* max y ndc value */
|
|
float att_array[14]; /* output status of attributes */
|
|
/* --stuff stored in CGI terms */
|
|
int num_cols; /* number of colors */
|
|
int col_mode; /* color mode */
|
|
int index_array[256]; /* color index array */
|
|
float color_array[256][3]; /* color values */
|
|
|
|
} dev_descrip_table;
|
|
|