25 #include "hic_types.h"
39 enum AbsoluteWindowType
67 void AddRegion(
HC_KEY originalshell,
HC_KEY newshell,
int regionnum,
bool check =
true);
69 int GetRegionsFromOriginalShell(
HC_KEY originalshell,
HC_KEY **newshells,
int ®ionnum);
70 void BuildSegmentTreeRecursive(
HC_KEY okey,
HC_KEY nkey);
71 void MapSegmentTree(
HC_KEY modelkey);
72 void AddSegmentMapping(
HC_KEY originalshell,
HC_KEY segmentkey);
74 struct vhash_s * m_RegionToShellHash;
75 struct vhash_s * m_ShellToRegionHash;
76 struct vhash_s * m_ShellToSegmentHash;
105 void Set(
int first,
int second) {
116 bool operator<(
HShellEdge const & rhs)
const {
117 if(m_iFirst != rhs.m_iFirst)
118 return m_iFirst < rhs.m_iFirst;
119 return m_iSecond < rhs.m_iSecond;
140 int GetPointCount()
const ;
143 int GetEdgeCount()
const ;
148 HShellEdge const GetEdge(
int const iEdgeIndex)
const;
152 void OpenEdge(
int const iEdgeIndex)
const;
156 void CloseEdge()
const;
176 delete [] m_pRegionFlist;
180 int GetFaceCount()
const;
193 int m_iRegionFlistLength;
218 int GetFaceCount()
const;
223 int GetFaceFlistIndex(
int index)
const;
231 int GetFlistLen()
const ;
233 int const * GetFlist()
const ;
236 void GetFlist (
int flist[])
const;
241 mutable int * m_pFaceIndexes;
266 delete [] point_list;
267 delete [] normal_list;
269 delete [] region_list;
302 m_totalnumfaceslen = 0;
323 m_totalnumfaceslen = 0;
340 HC_KEY Insert(
int plen,
HPoint points[],
int flen,
int flist[], HC_KEY insertkey = INVALID_KEY);
348 HC_KEY Show(
int *plen,
HPoint **points,
int *flen,
int **flist);
356 void TransformPoints(
float matrix[]);
362 HC_KEY Optimize(
char *options);
368 HC_KEY Optimize2(
char *options);
370 void MakePolygon(
int facelen,
int face[],
HPoint points[]);
375 void OpenOwnerSegment();
379 void BeginFaceIteration();
384 int GetFace(
int facenum,
int **face);
389 int NextFace(
int **face);
396 void CalculateFaceCenter(
int face[],
int flen,
HPoint *mid);
403 void AddPoints(
HPoint points[],
int pnum,
HPoint param[] = 0,
HPoint normals[] = 0,
bool AddImmediately=
false);
410 void AddFace(
int face[],
int fnum,
int regionnum,
HPoint points[],
HPoint normals[] = 0,
bool AddImediately=
false);
417 void AddFaceDirect(
int face[],
int fnum,
bool reverse =
false,
bool AddImmediatly=
false);
424 void AddFace(
HPoint points[],
int fnum,
bool AddImmediatly=
false);
429 void Set(HC_KEY key);
436 void Regenerate(HC_KEY newowner = INVALID_KEY,
bool makeSegment =
true,
bool regenerate =
false);
441 void GrowArrays(
int fnum);
447 void GrowPointArray(
int fnum,
bool gorwvparams =
false,
bool grownormals =
false);
449 void GrowPointArray2(
int fnum,
bool growparamarray =
false,
bool grownormalarray =
false,
bool growfnarray =
false,
bool growcolorarray =
false);
450 void AddNextFaceWithDistinctNormals(
HPoint const * points,
HPoint const * normals,
int const * face1,
int const * face2,
int fnum);
451 void AddNextFaceWithDistinctNormalsAndTexture(
HPoint const * points,
HPoint const * normals,
HPoint const * texcor,
int const * face1,
int const *face2,
int const *face3,
int fnum);
452 void AddNextFaceWithDistinctNormalsAndColor(
HPoint const *points,
HPoint const *normals,
int const *face1,
int const *face2,
HPoint *face3,
int fnum);
455 void BeginAddFaces(
int pnum);
462 void GrowFaceArray(
int fnum);
465 void SubdivideOneQuadFace(
int face[],
HShellWrapper &wrapper,
bool generateIsolines,
int *facecolorlist,
int &fclnum);
468 void SubdivideOneQuadFace2(
int face[]);
473 void SubdivideQuadFaces(
bool GenerateIsolines);
478 void SetVertexColors(
HPoint *color);
482 void ShowVertexColors(
HPoint *color);
487 void SetVertexColors(
float *findex);
491 void ShowVertexColors(
float *color);
497 void MakeLod(
int lodnum,
int percent);
504 void ReplaceWithParameters(
int plen,
HPoint points[],
int flen,
int flist[],
HPoint normals[] = 0,
float params[] = 0,
int paranum = 3,
HPoint vcolors[] = 0,
bool emptyshell =
false);
505 void ReplaceWithParameters(
int plen,
HPoint points[],
int flen,
int flist[],
HPoint normals[],
float params[],
int paranum,
bool emptyshell);
506 void Replace(
int plen,
HPoint points[],
int flen,
int flist[],
HPoint normals[] = 0,
bool emptyshell =
false);
508 void SetFaceRegion(
int regionnum);
510 void SetEmptyShell(HC_KEY segmentkey,
bool MakeSegment);
528 int m_totalnumfaceslen;
549 char projection[128];
552 projection[0] =
'\0';
562 bool CameraDifferent(
HCamera &cam);
567 bool CameraDifferentByAngle(
HCamera &cam);
576 HC_Show_Camera (&position, &target, &up_vector, &field_width, &field_height, projection);
582 HC_Set_Camera (&position, &target, &up_vector, field_width, field_height, projection);
601 inline void Set(
double X,
double Y,
double Z,
double W) { x=X, y=Y, z=Z, w=W; }
626 HShellVertexData():m_VertexCount(0), m_pFIndexArraySize(0), m_pFIndexArray(0), m_Key(INVALID_KEY){
636 void SetKey(
HC_KEY const key);
639 char const *
const GetType()
const {
644 int const GetVertexCount()
const {
645 return m_VertexCount;
649 HC_KEY const GetKey()
const {
654 int const GetFIndexDataSize()
const {
655 return m_pFIndexArraySize;
659 float const *
const GetFIndexData()
const {
660 return m_pFIndexArray;
665 void GetFIndexData(
float data[])
const;
667 void SetFIndexData(
int const size,
float const data[]);
673 int m_pFIndexArraySize;
674 float *m_pFIndexArray;
759 const char * Show_One_Net_User_Option(
const char * which);
773 const char * Show_Net_User_Options();
796 static const float PI;
818 static void Find_Relative_Path(HC_KEY from_seg_key, HC_KEY to_seg_key,
char * path);
823 static float GetTime();
830 static void ClampPointToWindow (
HPoint * point);
855 static void GenerateCuboidPoints (
HPoint const * max,
HPoint const * min,
HPoint * points);
868 static HC_KEY InsertRectangle (
const char * seg,
float x0,
float y0,
float x1,
float y1,
float z = 0.0f,
bool fill =
false);
885 static void InsertArrow(
float stick_length,
float tip_length,
float stick_radius,
float arrow_radius,
const char *text,
const char *stick_color,
const char *tip_color,
int num_sides = 6,
float tip_falloff = 0.05,
bool reverse =
true);
893 static void ComputeDoublePrecisionCrossProduct(
double * vector1,
double * vector2,
double * up);
901 static double ComputeDoublePrecisionDotProduct(
double * vector1,
double * vector2);
908 static double ComputeDoublePrecisionVectorLength(
double * vector1);
916 static void GetViewplaneVectors(HC_KEY segment_key,
double * view,
double * up);
922 static void NormalizeDoublePrecisionVector(
double* vector1);
931 static bool PointsEqual(
HPoint * point1,
HPoint * point2);
944 static bool CreateAxisCircle (
HPoint const & center,
float radius,
int axis,
bool convert =
true);
953 static void RotateToVector(
HPoint start,
HPoint end,
bool doTranslation =
true);
970 static void SmoothTransition(
const HPoint &co,
const HPoint &to,
const HPoint &uo,
float fieldwidtho,
float fieldheighto,
const HPoint &cn,
const HPoint &tn,
const HPoint &un,
float fieldwidthn,
float fieldheightn,
HBaseView *view);
987 static bool CamerasEqual(
const HCamera &camera1,
const HCamera &camera2);
996 static void ComputeVectorToVectorRotationMatrix(
float matrix[],
HPoint v1,
HPoint v2);
1006 static bool ExtractRGB(
char *text,
float &r,
float &g,
float &b);
1018 static void TransitionQuaternion(
float quat_old[],
float quat_new[],
float t,
float qt[]);
1025 static void MatrixToQuaternion(
float matrix[],
float quaternion[]);
1032 static void QuaternionToMatrix(
float quaternion[],
float matrix[]);
1042 static void SmoothQuaternionTransition(
HBaseView *m_pView,
char *old_seg,
char *new_seg,
int num_of_transitions);
1051 static void SmoothMatrixTransition(
HBaseView *m_pView, HC_KEY seg_key,
float new_matrix[]);
1062 static void MultiSmoothTransitions(
HBaseView *m_pView,
int num_keys, HC_KEY *seg_key,
float new_matrix[],
HCamera *new_camera = 0);
1069 static HPoint GetCentroid(HC_KEY seg_key);
1077 static HPoint GetTransformedCentroid(HC_KEY seg_key,
float matrix[] = 0);
1086 static void URIencode(
const char * in_string, MVO_POINTER_SIZED_UINT n,
char * out_buffer);
1094 static void URIdecode(
const char * in_string,
char * out_buffer, MVO_POINTER_SIZED_UINT * n);
1104 static void GetCameraFromMatrix(
float matrix[],
HPoint *target,
HPoint *position,
HPoint *up_vector,
HPoint *translation);
1114 static void GetMatrixFromCamera(
HPoint target,
HPoint position,
HPoint up_vector,
HPoint translation,
float matrix[]);
1150 static void GetCameraFromGLFrustum(
double const left,
double const right,
double const bottom ,
double const top,
double const near_z,
double const far_z,
bool const perspective,
1151 HPoint &pos,
HPoint &target,
HPoint &up,
char * projection,
double &width,
double &height,
double &near_limit );
1160 static bool PushAttribute(
const char *attName);
1170 static void PushAttribute(
const char *attName,
const char *attText);
1179 static bool PopAttribute(
const char *attName);
1191 static bool ModifyPushedAttribute(
const char *attName,
const char *newStyle);
1199 static bool ShowPushedAttribute(
const char *attName,
HUserOptions& attText);
1213 static void Recursive_Merge_Shells(
HShell *total_info,
HShell *max_info,
bool do_recurse,
bool delete_orig_shells =
false,
bool insert_null_lods =
false );
1221 static HC_KEY Merge_Shells(
bool do_recurse,
bool delete_orig_shells =
false ,
bool optimize_shell =
true,
bool generate_regions =
false);
1230 static HC_KEY Merge_Shells_Generate_Regions(
int num_shells, HC_KEY * shell_keys,
bool delete_orig_shells =
false );
1241 static void Generate_LODs(
bool do_recurse =
true,
bool delete_orig_shells =
false,
bool insert_null_lods =
false,
int n_lod_levels = 2,
float reduction_ratio = 0.20 );
1250 static bool Segment_Shell_Allocate(
HShell *total_info,
HShell *max_info,
bool do_recurse );
1259 static void Shell_Search(
HShell *total_info,
HShell *max_info,
bool do_recurse );
1273 static void OptimizeSegmentTree(HC_KEY old_seg_key, HC_KEY *new_seg_key,
bool transform_shells =
true,
bool merge_shells =
true,
bool create_shell_regions =
false);
1284 static void CountShellData(HC_KEY shell_key,
int * faces,
int * vertices,
int * triangles,
int * tristrips = 0);
1292 static void FindFileNameExtension(
const char * filename_in,
char * ext_out,
int size = -1);
1300 static void FindFileNameExtension(__wchar_t
const *
const filename_in, __wchar_t * ext_out,
int size = -1);
1301 #ifdef H_USHORT_OVERLOAD
1302 static void FindFileNameExtension(
unsigned short const *
const filename_in,
unsigned short * ext_out,
int size = -1){
1303 FindFileNameExtension((
wchar_t const *
const)filename_in, (
wchar_t*)ext_out, size);
1311 static void FindUnicodeFileNameExtension(
const unsigned short * filename_in,
char * ext_out);
1320 static void FindFileNameAndDirectory(
const char * filename_in,
char * dir_out,
char * filename_out);
1328 static void FindFileNameAndDirectory(__wchar_t
const * filename_in, __wchar_t * dir_out, __wchar_t * filename_out);
1340 static const char* extra_pointer_format();
1344 static HC_KEY CreateScaleIndependentSegment(
const char *segname,
bool SetCallback =
true);
1349 static HC_KEY GetScaleIndependentGeomSegmentKey(HC_KEY segkey);
1354 static void SetScaleIndependentGeomPosition(HC_KEY segkey,
float x,
float y,
float z);
1359 static void GetScaleIndependentGeomPosition(HC_KEY segkey,
float &x,
float &y,
float &z);
1364 static void RegisterCallbacks();
1372 static bool IsModelKey(HC_KEY modelkey, HC_KEY objectkey);
1381 static HC_KEY UserOptionExists(HC_KEY key,
const char *attrib,
char *result);
1399 static void InsertRotatedArrow(
float stick_length,
float tip_length,
float stick_radius,
float tip_radius,
float distance,
int adelta,
float rotang,
const char *stick_color,
const char *tip_color,
int num_sides,
float tip_falloff,
bool reverse);
1410 static int CalculateKeyPath(HC_KEY startkey,
HBaseView *view, HC_KEY *keyarray,
int maxarray);
1416 static bool SegmentExists(
const char *segment);
1420 static void UnsetAttributes();
1429 static int IsChildOf(HC_KEY owner, HC_KEY child, HC_KEY klist[] = 0);
1436 static bool IsIdentityMatrix(
float matrix[]);
1444 static void ComputeShellNormal(HC_KEY skey,
HPoint &tnormal);
1455 static HC_KEY SelectUnderCursor(
HBaseView *view,
float x,
float y,
bool doSelection =
true,
bool DeSelect =
false);
1468 static HC_KEY SmartSelectUnderCursor(
HBaseView *view,
float x,
float y,
bool doSelection =
true,
bool DeSelect =
false);
1477 static bool ShowOneHeuristic(
const char *type,
char *res = 0);
1484 static bool ShowOneRenderingOption(
const char *type,
char *res = 0);
1495 static float EaseInEaseOut(
float t,
float a,
float b,
float c);
1501 static void UnwindIncludes(HC_KEY &key);
1509 static void UnwindIncludes(HC_KEY &newkey, HC_KEY *keys,
int count);
1518 static bool SafeSetUserOption(
const char * opt);
1526 static bool SafeShowUserOption(
char * opt);
1533 static void ProjectShell(HC_KEY shellkey);
1541 static HC_KEY MergeShells(HC_KEY shell1, HC_KEY shell2);
1548 static void ShowModellingMatrix(
float *segment_modelling_matrix);
1556 static void ConvertLocalPixelsToLocalWindow(
HBaseView * view,
HPoint *in_system ,
HPoint *out_system = 0);
1565 static HC_KEY GrabSegment(HC_KEY key);
1571 # define MakeSegment(key) GrabSegment(key)
1578 static void RenameSegment(HC_KEY segkey,
const char *newname);
1598 static void ShowNormals(HC_KEY shellkey,
float normallength);
1605 static bool IsSegmentKey(HC_KEY key);
1613 static int FindContents(HC_KEY &key);
1621 static int CalculateMajorAxis(
HBaseView *view);
1631 static HC_KEY FindOneObject(
const char *type,
bool l = 0);
1637 static void CloseAllSegments(HC_KEY endkey = INVALID_KEY);
1643 static void ReadjustTarget(
HBaseView *view);
1649 static bool GetAllowAnimation(HC_KEY key);
1653 static void SuppressAnimation();
1662 static int FindFaceByIndex(
int findex,
int *flist,
int flen);
1670 static bool ShowOneUserOption(
const char *option,
char *res);
1684 static void NameSegments(HC_KEY &key,
HBaseView *view);
1691 static void MoveToTemp(HC_KEY movekey, HC_KEY tempkey);
1703 static void ShowContentsWithPath(
const char * entitytypes,
struct vlist_s **ret_pathlist,
bool storePath =
false,
bool includeIncludes =
true,
bool filterIncludes =
true);
1711 static int ustrlen(
unsigned short *text);
1722 static bool RLECompress(
int const in_len,
1723 unsigned char const *
const in_buf,
1725 unsigned char *
const out_buf);
1736 static bool ZlibCompress(
int const in_len,
1737 unsigned char const *
const in_buf,
1739 unsigned char *
const out_buf);
1750 static bool ZlibDecompress(
int const in_len,
1751 unsigned char const *
const in_buf,
1753 unsigned char *
const out_buf);
1759 static unsigned short *uconvert(
const char *text);
1771 static bool BuildIncludePath(HC_KEY objectkey,
const HC_KEY *includelist,
int ilength, HC_KEY *fullpath,
int *fplength, HC_KEY matchkey = INVALID_KEY);
1779 static void BuildIncludePathFromSelection(
HSmartSelItem *sitem,
int &plen, HC_KEY *fullpath);
1790 static void MakeViewSnapshot(
HBaseView * view,
int width,
int height,
char ** data);
1797 static void MakeViewSnapshot(
HBaseView * view, HC_KEY image_key);
1807 static int ConstrainToVector(
const float matrix_in[],
const HVector &vector,
float matrix_out[]);
1816 static void Camera_To_Transform (
HCamera *camera ,
float *pos,
float projection_matrix[],
float complete_matrix[]);
1827 static void LocalPixelsToWorld(
HCamera *camera,
bool righthanded,
float xres,
float yres,
int xwpix,
int ywpix,
float result[]);
1834 static float ComputeAngleBetweenVector(
HPoint p1,
HPoint p2);
1842 static int strlen16(
const unsigned short *p16);
1863 static long ClipPolygonAgainstPlane(
long vertexCount,
const HPoint vertex[],
1864 const float plane[],
HPoint result[],
bool *noCut = 0);
1881 static HC_KEY OpenSegmentFromKey(HC_KEY key,
char *segment);
1895 static bool IsPointInsideAllEdges(
const float *pt,
const float points1[],
1896 int len,
const int face1[],
const float plane1[],
float fudge );
1911 static void DeleteManipulators(HC_KEY key);
1928 static void MergePointsIntoShell(
int num_shell_points,
HPoint plist1[],
int num_shell_facelist,
int flist1[],
1929 int num_merge_points,
HPoint merge_points[],
HPoint merge_vectors[],
1930 float tolerance,
bool AddExtraPoints,
int newpoints[],
int *newpointslen);
1947 static void SubdivideShells(HC_KEY sskey, HC_KEY startkey, HC_KEY newkey,
int numx,
int numy,
int numz,
ShellToRegionMapper *mapper = 0,
bool DoCut =
true,
bool DeleteOriginalShells =
false,
bool breakShells =
false);
1950 static void MergePolylines();
1951 static void CreateZebraStripeTexture(
int width,
int height,
int stripwidth,
bool horizontal,
HPixelRGB colorstripes,
HPixelRGB colorbackground);
1960 static void ascii_to_unicode(
char const *ascii,
unsigned short *unicode);
1969 static void unicode_to_ascii(
unsigned short const *unicode,
char *ascii);
1979 static void BatchRead(
HBaseModel * model,
const char * directory,
const char * extension);
1998 static void CalculateCornerImagePosition(
HBaseView *view,
int iwidth,
int iheight, HWindowCorner corner,
float &posx,
float &posy);
2000 static void DecipherTextureString(
char *texdef,
char *Source,
bool *DownSampling = 0,
bool *DownSamplingSet = 0,
char *ParameterizationSource = 0,
2001 char *InterpolationFilter = 0,
char *DecimationFilter = 0,
char *Layout = 0,
char *Tiling = 0,
bool *ValueScaleSet = 0,
2002 bool *ValueScale = 0,
float *ValueScaleMin =0,
float *ValueScaleMax = 0,
char *BlendingMode = 0);
2009 if (abs(element) > std::numeric_limits<float>::max())
2011 if (check_roundoff) {
2012 if (abs(element -
float(element)) > std::numeric_limits<float>::epsilon() * 0.001 * abs(element))
2024 while (element_count-- > 0)
2025 if (!IsSafeForSinglePrecision(*elements++, check_roundoff))
2032 static void scale_segment (HIC_Rendition *rendition,HIC_Segment_Info * geo3);
2033 static void activity_change (HIC_Segment *seg,
int old_activity,
int new_activity);
2034 static bool RestoreAttributeFromOption(
const char *attName,
HUserOptions& attText);
2035 static void ReplaceCharacter(
char *text,
char orig,
char target);
2036 static bool SetAttribute(
const char *attName,
const char *attText);
2037 static bool ShowAttribute(
const char *attName,
char *attText);
2038 static void ShowContentsWithPathAddEntity(HC_KEY key,
struct vlist_s *pathlist,
int level, HC_KEY *patharray,
bool storePath);
2039 static void ShowContentsWithPathRecursive(HC_KEY key,
const char *entitytypes,
struct vlist_s *pathlist, HC_KEY *patharray,
int level,
bool storePath,
bool includeIncludes,
bool filterIncludes);
2040 static void SubdivideOneShell(
HShellWrapper &myshell,
int numx,
int numy,
int numz,
HPoint &totalmin,
2054 m_pIncludeList =
new HC_KEY[includelistlength];
2055 for (
int i = 0; i < includelistlength; i++)
2056 m_pIncludeList[i] = includelist[i];
2057 m_IncludeListLength = includelistlength;
2061 delete [] m_pIncludeList;
2066 return MakeHashKey(m_Key, m_IncludeListLength,m_pIncludeList);
2069 static long MakeHashKey(
HC_KEY key,
int includelength,
HC_KEY includes[])
2071 long hashkey =
static_cast<long>(key);
2072 for (
int i = 0; i < includelength; i++)
2074 hashkey +=
static_cast<long>(includes[i]);
2081 int m_IncludeListLength;
2099 delete [] m_pChildFaces;
2104 void Init(
int * flist);
2105 void MakeChildFaces(
int & addpoint,
HPoint * points,
bool AddExtraPoints,
int * newpoints,
int * newpointslen);
2106 void Divide(
int pnum,
HPoint * points);
2112 return FindHitFaceRecursive(p, normal, plist,respoint);
2114 bool CheckIfColinear(
HPoint * point);
2116 int GetLengthRecursive(
int l);
2120 return GetLengthRecursive(0);
2124 int AddToFacelistRecursive(
int * start,
int l);
2126 int AddToFacelist(
int * start)
2128 return AddToFacelistRecursive(start, 0);
2146 m_uvindex =
new int[len];
2147 m_fllen =
new int[len];
2148 m_flindex =
new int[len];
2149 for (
int i=0;i<len;i++)
2150 m_uvindex[i] = index[i];
2158 delete [] m_uvindex;
2160 delete [] m_flindex;
2177 void AddColorPiece(
int index[],
int len,
int col);
2178 ColorPiece * FindMatch(
int col,
int ii,
int ii2,
int &rpos,
int &rlen,
bool &reverse);
2180 struct vlist_s* m_ColorPieceList;
2190 static void ColorizePointCloud(
HC_KEY const segment);
2199 AbsoluteWindowType ypos_type = RelativeTop, AbsoluteWindowType width_type = RelativeLeft,
2200 AbsoluteWindowType height_type = RelativeTop,
bool sb =
false);
2202 void DecipherOptions();
2203 void AdjustX(
float invalue, AbsoluteWindowType wt,
float &outvalue);
2204 void AdjustY(
float invalue, AbsoluteWindowType wt,
float &outvalue);
2207 static bool SetWindow(
HBaseView *view,
float xpos,
float ypos,
float width,
float height, AbsoluteWindowType xpos_type = RelativeLeft,
2208 AbsoluteWindowType ypos_type = RelativeTop, AbsoluteWindowType width_type = RelativeLeft,
2209 AbsoluteWindowType height_type = RelativeTop,
bool sb =
false);
2210 bool IsPositionInWindow(
float x,
float y);
2211 static bool IsPositionInWindow(
HBaseView *view,
float x,
float y);
2212 static void CalculateLocalWindowPos(
HBaseView *view,
float x,
float y,
float &xout,
float &yout);
2213 void CalculateLocalWindowPos(
float x,
float y,
float &xout,
float &yout);
2214 static void CalculateOuterWindowPos(
HBaseView *view,
float x,
float y,
float &xout,
float &yout);
2215 void CalculateOuterWindowPos(
float x,
float y,
float &xout,
float &yout);
2224 AbsoluteWindowType m_xpos_type;
2225 AbsoluteWindowType m_ypos_type;
2226 AbsoluteWindowType m_width_type;
2227 AbsoluteWindowType m_height_type;
2229 bool m_bShowBackground;
2287 const wchar_t* Show_One_Net_Unicode_Option(
const __wchar_t* which);
2289 const unsigned short * Show_One_Net_Unicode_Option(
const unsigned short * which);
2304 const __wchar_t* Show_Net_Unicode_Options();
2326 m_edgekey = edgekey;
2327 m_vertex1 = INVALID_KEY;
2328 m_vertex2 = INVALID_KEY;
2358 struct vlist_s * m_CoEdgeList;
2366 struct vhash_s * m_FaceHash;
2368 struct vhash_s * m_EdgeHash;
2369 struct vhash_s * m_VertexHash;
2379 HC_KEY FindVertex(
void *vertexid);
2383 BREP_Face *GetCurrentFace() {
return m_CurrentFace; }
2387 class H_FORMAT_TEXT;
2392 H_FORMAT_TEXT * m_dvr;
2399 operator char const* ()
const;
2411 char const * getOption(
char const * option)
const;
The HPixelRGB class is the data type of a rgb pixel.
Definition: HGlobals.h:471
HShellWrapper()
Definition: HUtility.h:311
The HShellObject class is a simple wrapper for a shell.
Definition: HUtility.h:202
int point_list_len
The length of the point list,.
Definition: HUtility.h:271
int m_facepointer
Definition: HUtility.h:523
void Show_One_User_Option(const char *type, char *value)
double w
The knot value of a B-Surface vertex.
Definition: HUtility.h:597
int region_count
The number of regions in the shell.
Definition: HUtility.h:279
HShellWrapper(HC_KEY key)
Definition: HUtility.h:295
The HUtility class contains a set of utility functions and data structures used widely in MVO classes...
Definition: HUtility.h:792
Definition: HUtility.h:2141
static const float PI
default=3.1415926f
Definition: HUtility.h:796
Definition: HUtility.h:2337
Definition: HUtility.h:2362
char * m_data
actual char* to the user options
Definition: HUtility.h:727
Definition: HUtility.h:2195
Definition: HUtility.h:2185
wchar_t * m_data
actual char* to the user options
Definition: HUtility.h:2257
The HCamera class is the data type of a HOOPS Camera Attribute.
Definition: HUtility.h:541
HPoint * point_list
The list of vertices that define the shell.
Definition: HUtility.h:272
void Show()
Definition: HUtility.h:575
HPoint up_vector
The direction of up.
Definition: HUtility.h:546
bool valid
True if the object has been initialized.
Definition: HUtility.h:543
void Show_User_Options(char *list)
double y
The y-coordinate of a B-Surface vertex.
Definition: HUtility.h:595
The HShellRegion class is a simple wrapper for a shell's region.
Definition: HUtility.h:168
static bool IsSafeForSinglePrecision(int element_count, double const *elements, bool check_roundoff=false)
Definition: HUtility.h:2023
HVector * normal_list
The list of normal vectors associated with the shell.
Definition: HUtility.h:273
HC_KEY * patharray
Array of Keys.
Definition: HUtility.h:685
The HSmartSelItem - selection item which can handle instancing.
Definition: HSelectionItem.h:187
Definition: HUtility.h:2172
void Set(int first, int second)
Definition: HUtility.h:105
class HPoint HVector
The HVector class is the data type of a three-dimensional vector.
Definition: HGlobals.h:326
void EndFaceIteration()
Definition: HUtility.h:383
float field_height
The height of the field of view.
Definition: HUtility.h:548
int len
length of key array
Definition: HUtility.h:686
int face_count
The number of faces in the shell.
Definition: HUtility.h:277
int * m_Flist
The list that defines the configuration of the faces in the shell in relation to the points as descri...
Definition: HUtility.h:519
HC_KEY m_Key
The key of the shell.
Definition: HUtility.h:520
int m_plen
The number of points in the points list.
Definition: HUtility.h:513
Definition: HUtility.h:2087
The HUnicodeOptions class is a helper class which wraps up memory management for variable size Unicod...
Definition: HUtility.h:2253
double z
The z-coordinate of a B-Surface vertex.
Definition: HUtility.h:596
Definition: HUtility.h:63
The HUserOptions class is a helper class which wraps up memory management for variable size user opti...
Definition: HUtility.h:723
HPoint target
The area that the camera is directed at.
Definition: HUtility.h:545
void InvalidateCamera()
Definition: HUtility.h:557
HPolyline * m_pNextPolyline
A pointer to a single HPolyline object.
Definition: HUtility.h:614
int face_list_len
The length of the face list.
Definition: HUtility.h:275
int m_flen
The length of the face list.
Definition: HUtility.h:514
The HShellVertexData class encapsulates colormap index information associated with the vertices of a ...
Definition: HUtility.h:622
static bool IsSafeForSinglePrecision(double element, bool check_roundoff=false)
Definition: HUtility.h:2008
HPoint * m_pHPointArray
A pointer to an array of HPoint objects.
Definition: HUtility.h:613
void Show_Unicode_Options(unsigned short *options)
int GetFirst() const
Definition: HUtility.h:98
int m_totalplen
Definition: HUtility.h:527
The HBaseModel class is used to store and manage model information.
Definition: HBaseModel.h:47
The HPoint class is the data type of a three-dimensional point.
Definition: HGlobals.h:121
Definition: HIOManager.h:865
The HBaseView class defines and manages a view of model information.
Definition: HBaseView.h:332
Definition: HUtility.h:2389
The HShell class is the data type of a HOOPS Shell.
Definition: HUtility.h:251
int m_length
length of current user option
Definition: HUtility.h:728
int * region_list
The list that defines the set of regions in the shell.
Definition: HUtility.h:280
Definition: HUtility.h:2047
void Show_One_Unicode_Option(const unsigned short *requestedOption, unsigned short *options)
The HShellFace class is a simple wrapper for a shell's face.
Definition: HUtility.h:131
int GetSecond() const
Definition: HUtility.h:100
static const float EH_Epsilon
default=0.01
Definition: HUtility.h:801
The HShellWrapper class is wraps shell information and provides methods to manipulate this informatio...
Definition: HUtility.h:288
The HShellEdge class is a simple wrapper for a shell's edge.
Definition: HUtility.h:88
HPoint position
The location of the camera.
Definition: HUtility.h:544
double x
The x-coordinate of a B-Surface vertex.
Definition: HUtility.h:594
void Set() const
Definition: HUtility.h:581
void Set(double X, double Y, double Z, double W)
Definition: HUtility.h:601
Definition: HUtility.h:2321
The HPlane class is the data type of a plane.
Definition: HGlobals.h:333
int m_PointCount
Number of points in the polyline.
Definition: HUtility.h:612
Definition: HUtility.h:2403
The HShowContentsWithPathType struct is used by HUtility to store a keypath.
Definition: HUtility.h:683
The HBSurfVertex class is the data type of a B-Surface vertex.
Definition: HUtility.h:591
int * face_list
The face list that defines how faces are formed in the shell.
Definition: HUtility.h:276
HC_KEY GetKey()
Definition: HUtility.h:352
HShellEdge(int iFirst=0, int iSecond=0)
Definition: HUtility.h:94
The HPolyline class is the data type for a three-dimensional polyline.
Definition: HUtility.h:609
Definition: HUtility.h:48
Definition: HUtility.h:2349
int m_length
length of current user option
Definition: HUtility.h:2258
float field_width
The width of the field of view.
Definition: HUtility.h:547
int m_totalflen
Definition: HUtility.h:525