1 #ifndef __LDHTMLINVENTORY_H__ 2 #define __LDHTMLINVENTORY_H__ 3 4 #include <TCFoundation/TCObject.h> 5 #include <TCFoundation/TCStlIncludes.h> 6 #include <LDLoader/LDLPalette.h> 7 #include <stdio.h> 8 9 class LDPartsList; 10 class LDPartCount; 11 class LDLPalette; 12 class LDPreferences; 13 class LDrawModelViewer; 14 class LDViewPoint; 15 16 typedef enum 17 { 18 LDPLCFirst = 1, 19 LDPLCPart = LDPLCFirst, 20 LDPLCDescription, 21 LDPLCColor, 22 LDPLCQuantity, 23 LDPLCLast = LDPLCQuantity 24 } LDPartListColumn; 25 26 typedef std::vector<LDPartListColumn> LDPartListColumnVector; 27 typedef std::map<LDPartListColumn, bool> LDPartListColumnBoolMap; 28 29 class LDHtmlInventory : public TCObject 30 { 31 public: 32 LDHtmlInventory(void); 33 34 void setShowModelFlag(bool value); getShowModelFlag(void)35 bool getShowModelFlag(void) { return m_showModel; } 36 void setExternalCssFlag(bool value); getOverwriteSnapshotFlag(void)37 bool getOverwriteSnapshotFlag(void) const { return m_overwriteSnapshot; } 38 void setOverwriteSnapshotFlag(bool value); getExternalCssFlag(void)39 bool getExternalCssFlag(void) { return m_externalCss; } 40 void setPartImagesFlag(bool value); getPartImagesFlag(void)41 bool getPartImagesFlag(void) { return m_partImages; } 42 void setShowFileFlag(bool value); getShowFileFlag(void)43 bool getShowFileFlag(void) { return m_showFile; } 44 void setShowTotalFlag(bool value); getShowTotalFlag(void)45 bool getShowTotalFlag(void) { return m_showTotal; } getColumnOrder(void)46 const LDPartListColumnVector &getColumnOrder(void) const 47 { 48 return m_columnOrder; 49 } 50 void setColumnOrder(const LDPartListColumnVector &value); getLastSavePath(void)51 const char *getLastSavePath(void) { return m_lastSavePath.c_str(); } 52 const char *getSnapshotPath(void) const; 53 bool isColumnEnabled(LDPartListColumn column); 54 bool isSnapshotNeeded(void) const; 55 std::string defaultFilename(const char *modelFilename); 56 57 bool generateHtml(const char *filename, LDPartsList *partsList, 58 const char *modelName); 59 60 void prepForSnapshot(LDrawModelViewer *modelViewer); 61 void restoreAfterSnapshot(LDrawModelViewer *modelViewer); 62 63 static const char *getColumnName(LDPartListColumn column); 64 static CUCSTR getColumnNameUC(LDPartListColumn column); 65 protected: 66 virtual ~LDHtmlInventory(void); 67 virtual void dealloc(void); 68 void writeHeader(FILE *file); 69 void writeFooter(FILE *file); 70 void writeTableHeader(FILE *file, int totalParts); 71 void writeTableFooter(FILE *file); 72 void writePartRow(FILE *file, const LDPartCount &partCount, 73 LDLPalette *palette, const LDLColorInfo &colorInfo, int colorNumber); 74 bool writeExternalCss(void); 75 FILE *safeOpenCssFile(const std::string &cssFilename, bool &match); 76 void writePartHeaderCell(FILE *file); 77 void writeHeaderCell(FILE *file, LDPartListColumn column, int colSpan); 78 void writeHeaderCell(FILE *file, LDPartListColumn column); 79 void writePartCell(FILE *file, const LDPartCount &partCount, 80 LDLPalette *palette, const LDLColorInfo &colorInfo, int colorNumber); 81 void writeDescriptionCell(FILE *file, const LDPartCount &partCount); 82 void writeColorCell(FILE *file, LDLPalette *palette, 83 const LDLColorInfo &colorInfo, int colorNumber); 84 void writeQuantityCell(FILE *file, const LDPartCount &partCount, 85 int colorNumber); 86 void writeCell(FILE *file, LDPartListColumn column, 87 const LDPartCount &partCount, LDLPalette *palette, 88 const LDLColorInfo &colorInfo, int colorNumber); 89 void populateColumnMap(void); 90 std::string getSnapshotFilename(void) const; 91 92 std::string m_modelName; 93 LDPreferences *m_prefs; 94 95 bool m_showModel; 96 bool m_overwriteSnapshot; 97 bool m_externalCss; 98 bool m_partImages; 99 bool m_showFile; 100 bool m_showTotal; 101 std::string m_lastSavePath; 102 std::string m_lastFilename; 103 int m_columns; 104 LDPartListColumnVector m_columnOrder; 105 LDPartListColumnBoolMap m_columnMap; 106 LDViewPoint *m_viewPoint; 107 mutable std::string m_snapshotPath; 108 109 static const char *sm_style; 110 static const char *sm_cssHeader; 111 static const char *sm_cssFilename; 112 }; 113 114 #endif // __LDHTMLINVENTORY_H__ 115