00001 // 00002 // Copyright (c) 2000 by Tech Soft 3D, LLC. 00003 // The information contained herein is confidential and proprietary to 00004 // Tech Soft 3D, LLC., and considered a trade secret as defined under 00005 // civil and criminal statutes. Tech Soft 3D shall pursue its civil 00006 // and criminal remedies in the event of unauthorized use or misappropriation 00007 // of its trade secrets. Use of this information by anyone other than 00008 // authorized employees of Tech Soft 3D, LLC. is granted only under a 00009 // written non-disclosure agreement, expressly prescribing the scope and 00010 // manner of such use. 00011 // 00012 // $Id$ 00013 // 00014 00015 00016 #ifndef _HPSHOWCACHE_H 00017 #define _HPSHOWCACHE_H 00018 00019 #ifdef H_PACK_8 00020 #pragma pack(push) 00021 #pragma pack(8) 00022 #endif 00023 00024 #include "HTools.h" 00025 #include "HGlobals.h" 00026 #include "vhash.h" 00027 00028 00029 #define PSHOW_CACHE_MODELLING_MATRIX 0x00000001 00030 #define PSHOW_CACHE_VISIBILITY 0x00000002 00031 #define PSHOW_CACHE_RENDERING_OPTIONS 0x00000004 00032 #define PSHOW_CACHE_HANDEDNESS 0x00000008 00033 #define PSHOW_CACHE_HEURISTICS 0x00000010 00034 #define PSHOW_CACHE_TEXT_FONT 0x00000020 00035 #define PSHOW_CACHE_TEXT_ALIGNMENT 0x00000040 00036 #define PSHOW_CACHE_TEXT_PATH 0x00000080 00037 #define PSHOW_CACHE_TEXT_SPACING 0x00000100 00038 #define PSHOW_CACHE_MARKER_SIZE 0x00000200 00039 #define PSHOW_CACHE_MARKER_SYMBOL 0x00000400 00040 #define PSHOW_CACHE_LINE_WEIGHT 0x00000800 00041 #define PSHOW_CACHE_LINE_PATTERN 0x00001000 00042 #define PSHOW_CACHE_COLOR 0x00002000 00043 #define PSHOW_CACHE_EDGE_WEIGHT 0x00004000 00044 #define PSHOW_CACHE_EDGE_PATTERN 0x00008000 00045 #define PSHOW_CACHE_CAMERA 0x00010000 00046 #define PSHOW_CACHE_IMAGE_SCALE 0x00020000 00047 #define PSHOW_CACHE_HIDDEN_LINE_HSRA 0x00040000 00048 #define PSHOW_CACHE_POLYGON_HANDEDNESS 0x00080000 00049 #define PSHOW_CACHE_TRANS_COLOR 0x00100000 00050 #define PSHOW_CACHE_COLORMAP 0x00200000 00051 #define PSHOW_CACHE_CLIP_REGION 0x00400000 00052 00053 00054 00055 class HPShowCache 00056 { 00057 public: 00058 HPShowCache():flags(0), path(0), modelling_matrix(0), 00059 clip_region_loops(0), clip_region_spec(0), clip_region_lengths(0), clip_region_points(0), 00060 visibility(0), rendering_options(0), handedness(0), heuristics(0), 00061 text_font(0), text_alignment(0), text_spacing(1.f), marker_size(0), marker_symbol(0), 00062 line_weight(0), line_pattern(0), color(0), color_map(0), edge_weight(0), 00063 edge_pattern(0), camera_position(0,0,0), camera_target(0,0,0), camera_up(0,0,0), 00064 camera_width(0.f), camera_height(0.f), camera_projection(0), 00065 text_path_x(1.f), text_path_y(0), text_path_z(0), 00066 screen_range(0), depth_range(0), tessellation(0), general_curve(0), nurbs_surface(0), general_displacement(0), mask_transform(0), 00067 anti_alias(0), image_scale(0), polygon_handedness(0), trans_color(0), 00068 hidden_line_hsra(false), have_text_path(false), have_text_spacing(false) 00069 { 00070 } 00071 00072 ~HPShowCache() 00073 { 00074 if(path) 00075 delete [] path; 00076 if(visibility) 00077 delete [] visibility; 00078 if(clip_region_spec) 00079 delete [] clip_region_spec; 00080 if(clip_region_points) 00081 delete [] clip_region_points; 00082 if(clip_region_lengths) 00083 delete [] clip_region_lengths; 00084 if(rendering_options) 00085 delete [] rendering_options; 00086 if(handedness) 00087 delete [] handedness; 00088 if(heuristics) 00089 delete [] heuristics; 00090 if(text_font) 00091 delete [] text_font; 00092 if(text_alignment) 00093 delete [] text_alignment; 00094 if(marker_size) 00095 delete [] marker_size; 00096 if(marker_symbol) 00097 delete [] marker_symbol; 00098 if(line_weight) 00099 delete [] line_weight; 00100 if(line_pattern) 00101 delete [] line_pattern; 00102 if(color) 00103 delete [] color; 00104 if(color_map) 00105 delete [] color_map; 00106 if(edge_weight) 00107 delete [] edge_weight; 00108 if(edge_pattern) 00109 delete [] edge_pattern; 00110 if(camera_projection) 00111 delete [] camera_projection; 00112 if(screen_range) 00113 delete [] screen_range; 00114 if(depth_range) 00115 delete [] depth_range; 00116 if(tessellation) 00117 delete [] tessellation; 00118 if(general_curve) 00119 delete [] general_curve; 00120 if(nurbs_surface) 00121 delete [] nurbs_surface; 00122 if(general_displacement) 00123 delete [] general_displacement; 00124 if(mask_transform) 00125 delete [] mask_transform; 00126 if(anti_alias) 00127 delete [] anti_alias; 00128 if(image_scale) 00129 delete [] image_scale; 00130 if(polygon_handedness) 00131 delete [] polygon_handedness; 00132 if(trans_color) 00133 delete [] trans_color; 00134 00135 } 00136 00137 unsigned int flags; 00138 00139 HC_KEY* path; 00140 int path_count; 00141 00142 float modelling_matrix_data[16]; 00143 float * modelling_matrix; 00144 00145 int clip_region_loops; 00146 char * clip_region_spec; 00147 int * clip_region_lengths; 00148 HPoint *clip_region_points; 00149 00150 char * visibility; 00151 char * rendering_options; 00152 char * handedness; 00153 char * heuristics; 00154 char * text_font; 00155 char * text_alignment; 00156 00157 float text_spacing; 00158 char * marker_size; 00159 char * marker_symbol; 00160 char * line_weight; 00161 char * line_pattern; 00162 char * color; 00163 char * color_map; 00164 char * edge_weight; 00165 char * edge_pattern; 00166 HPoint camera_position; 00167 HPoint camera_target; 00168 HPoint camera_up; 00169 float camera_width; 00170 float camera_height; 00171 char * camera_projection; 00172 00173 float text_path_x, text_path_y, text_path_z; 00174 char * screen_range; 00175 char * depth_range; 00176 char * tessellation; 00177 char * general_curve; 00178 char * nurbs_surface; 00179 char * general_displacement; 00180 char * mask_transform; 00181 char * anti_alias; 00182 char * image_scale; 00183 char * polygon_handedness; 00184 char * trans_color; 00185 00186 bool hidden_line_hsra; 00187 bool have_text_path; 00188 bool have_text_spacing; 00189 }; 00190 00191 //typedef VHash<HC_KEY, HPShowCache *> HVHashPShowCache; 00192 00193 class HVHashPShowCache: public VHash<HC_KEY, HPShowCache *> 00194 { 00195 00196 }; 00197 00198 00199 class HConditionStyleInfo { 00200 public: 00201 HC_KEY hightlight_style; 00202 HC_KEY condition_style; 00203 HC_POINTER_SIZED_INT use_count; 00204 00205 HConditionStyleInfo(HC_KEY HightlightStyle): hightlight_style(HightlightStyle), use_count(0) {}; 00206 ~HConditionStyleInfo() {}; 00207 }; 00208 00209 class HConditionStyleInfoHash: public VStringHash<HConditionStyleInfo *> { 00210 public: 00211 HConditionStyleInfoHash():VStringHash<HConditionStyleInfo *>(2) {}; 00212 }; 00213 00214 class HConditionStyleKeyInfoHash: public VHash<HC_KEY, HConditionStyleInfo *> {}; 00215 00216 class HSelectionSegmentConditionInfo: public VHash<HC_KEY, HConditionStyleInfoHash *> {}; 00217 00218 00219 #ifdef H_PACK_8 00220 #pragma pack(pop) 00221 #endif 00222 00223 #endif 00224 00225 00226 00227 00228 00229 00230 00231 00232 00233 00234 00235 00236 00237 00238 00239 00240 00241 00242