00001 /* 00002 * PROPRIETARY INFORMATION. This software is proprietary to 00003 * Side Effects Software Inc., and is not to be reproduced, 00004 * transmitted, or disclosed in any way without written permission. 00005 * 00006 * Produced by: 00007 * Sevag Gharibian 00008 * Side Effects Software Inc. 00009 * 477 Richmond St. West 00010 * Toronto, Ontario, M5V 2M5 00011 * Canada 00012 * 416-504-9876 00013 * 00014 * NAME: GU_DetailInfo.h (C++) 00015 * 00016 * COMMENTS: This class takes in a GU_Detail object and calculates/stores a 00017 * bunch of stats based on info extracted from that object. This 00018 * code used to be repeated in a few different place elsewhere, but 00019 * has now been encapsulated here because we're better than that! 00020 */ 00021 00022 #ifndef __GU_DetailInfo_h__ 00023 #define __GU_DetailInfo_h__ 00024 00025 #include "GU_API.h" 00026 #include <UT/UT_IntArray.h> 00027 #include <UT/UT_PtrArray.h> 00028 00029 #include "GU_Detail.h" 00030 00031 class UT_InfoTree; 00032 00033 ////////////////////////////////////////////////////////////////////////////// 00034 // 00035 // gu_NameValuePair 00036 // 00037 // A simple class to store name/value pairs, where both name and value 00038 // are strings. 00039 // 00040 ////////////////////////////////////////////////////////////////////////////// 00041 00042 class GU_API gu_NameValuePair 00043 { 00044 public: 00045 gu_NameValuePair (const char *label, const char *value); 00046 gu_NameValuePair (const char *label, int value); 00047 ~gu_NameValuePair(); 00048 00049 void setName(const char *label) { myLabel.harden(label); } 00050 const UT_String &getName() const { return myLabel; } 00051 00052 void setValue(const char *value) { myValue.harden(value); } 00053 void setValue(int value); 00054 const UT_String &getValue() const { return myValue; } 00055 00056 private: 00057 UT_String myLabel; 00058 UT_String myValue; 00059 }; 00060 00061 ////////////////////////////////////////////////////////////////////////////// 00062 // 00063 // GU_DetailInfo 00064 // 00065 ////////////////////////////////////////////////////////////////////////////// 00066 00067 class GU_API GU_DetailInfo 00068 { 00069 public: 00070 GU_DetailInfo (); 00071 ~GU_DetailInfo (); 00072 00073 /// Clears old member data and extracts new data from 'geo' and 00074 /// recalculates all stats 00075 void extractInfo (const GU_Detail &geo); 00076 00077 /// Fill 'branch' with info taken from 'geo'. Note: This method calls 00078 /// extractInfo(..) 00079 void fillInfoTree (const GU_Detail &geo,UT_InfoTree &branch); 00080 00081 /// A long list of accessor methods 00082 int getPolyCount() const { return myPolyCt; } 00083 int getMeshCount() const { return myMeshCt; } 00084 int getNurbcCount() const { return myNurbcCt; } 00085 int getNurbsCount() const { return myNurbsCt; } 00086 int getPasteCount() const { return myPasteCt; } 00087 int getRbezcCount() const { return myRbezcCt; } 00088 int getRbezsCount() const { return myRbezsCt; } 00089 int getNurbcRatCount() const { return myNurbcRatCt; } 00090 int getNurbsRatCount() const { return myNurbsRatCt; } 00091 int getRbezcRatCount() const { return myRbezcRatCt; } 00092 int getRbezsRatCount() const { return myRbezsRatCt; } 00093 int getCircCount() const { return myCircCt; } 00094 int getSphereCount() const { return mySphereCt; } 00095 int getTubeCount() const { return myTubeCt; } 00096 int getTriStripCount() const { return myTriStripCt; } 00097 int getTriFanCount() const { return myTriFanCt; } 00098 int getTriBezCount() const { return myTriBezCt; } 00099 int getPartCount() const { return myPartCt; } 00100 int getVpartCount() const { return myVpartCt; } 00101 int getMballCount() const { return myMballCt; } 00102 int getMsquadCount() const { return myMsquadCt; } 00103 int getMlineCount() const { return myMlineCt; } 00104 int getMbezCount() const { return myMbezCt; } 00105 int getMtriCount() const { return myMtriCt; } 00106 int getProfCount() const { return myProfCt; } 00107 int getPtGrpsCount() const { return myPtGrpsCt; } 00108 int getPrimGrpsCount() const { return myPrimGrpsCt; } 00109 int getVisProfCount() const { return myVisProfCt; } 00110 int getVtxCount() const { return myVtxCt; } 00111 int64 getMemoryUsage() const { return myMemUseInBytes; } 00112 00113 const UT_PtrArray<gu_NameValuePair *> 00114 *getCustomVarMappings() const 00115 { return &myCustomVarMappings; } 00116 protected: 00117 00118 // Clear all member variable data 00119 void clearDetails (); 00120 00121 private: 00122 00123 void addAttribute(UT_InfoTree *tree,const GB_Attribute *atr); 00124 void addAllAttributesToTree(UT_InfoTree *tree, 00125 GB_Attribute *atr, int debug); 00126 00127 /// Delete all heap member data 00128 void deleteHeapDataMembers(); 00129 00130 00131 // Attributes. Note: Ct stands for "Count" 00132 int myPolyCt; 00133 int myMeshCt; 00134 int myNurbcCt; 00135 int myNurbsCt; 00136 int myPasteCt; 00137 int myRbezcCt; 00138 int myRbezsCt; 00139 int myNurbcRatCt; 00140 int myNurbsRatCt; 00141 int myRbezcRatCt; 00142 int myRbezsRatCt; 00143 int myCircCt; 00144 int mySphereCt; 00145 int myTubeCt; 00146 int myTriStripCt; 00147 int myTriFanCt; 00148 int myTriBezCt; 00149 int myVolume; 00150 int myPartCt; 00151 int myVpartCt; 00152 int myMballCt; 00153 int myMsquadCt; 00154 int myMlineCt; 00155 int myMbezCt; 00156 int myMtriCt; 00157 int myProfCt; 00158 int myPtGrpsCt; 00159 int myPrimGrpsCt; 00160 int myVisProfCt; 00161 int myVtxCt; 00162 int64 myMemUseInBytes; 00163 00164 // Custom Variable Mappings 00165 UT_PtrArray<gu_NameValuePair *> myCustomVarMappings; 00166 }; 00167 00168 #endif
1.5.9