1 #ifndef __LDPREFERENCES_H__
2 #define __LDPREFERENCES_H__
3 
4 #include <TCFoundation/TCAlertSender.h>
5 #include <LDLib/LDrawModelViewer.h>
6 #include <TCFoundation/TCStlIncludes.h>
7 #include <TCFoundation/TCUserDefaults.h>
8 
9 
10 class LDPreferences : public TCAlertSender
11 {
12 public:
13 	enum LightDirection
14 	{
15 		CustomDirection	= 0,
16 		UpperLeft		= 1,
17 		UpperMiddle		= 2,
18 		UpperRight		= 3,
19 		MiddleLeft		= 4,
20 		Middle			= 5,
21 		MiddleMiddle	= Middle,
22 		MiddleRight		= 6,
23 		LowerLeft		= 7,
24 		LowerMiddle		= 8,
25 		LowerRight		= 9,
26 	};
27 
28 	enum DefaultDirMode
29 	{
30 		DDMUnknown		= -1,
31 		DDMModelDir		= 0,
32 		DDMLastDir		= 1,
33 		DDMSpecificDir	= 2,
34 	};
35 
36 	enum SaveOp
37 	{
38 		SOSnapshot	= 0,
39 		SOFirst		= SOSnapshot,
40 		SOPartsList	= 1,
41 		SOExport	= 2,
42 		SOLast		= SOExport
43 	};
44 
45 	typedef std::map<SaveOp, DefaultDirMode> DirModeMap;
46 	typedef std::map<SaveOp, std::string> SaveOpStringMap;
47 
48 	LDPreferences(LDrawModelViewer* modelViewer = NULL);
lightVectorChangedAlertClass(void)49 	static const char *lightVectorChangedAlertClass(void)
50 	{
51 		return "LDLightVectorChanged";
52 	}
53 
54 	void setModelViewer(LDrawModelViewer *value);
getModelViewer(void)55 	LDrawModelViewer *getModelViewer(void) { return m_modelViewer; }
56 
57 	// These are called from the constructor, and cannot be properly made into
58 	// virtual functions.
59 	// *************************************************************************
60 	void applySettings(void);
61 	void applyGeneralSettings(void);
62 	void applyLDrawSettings(void);
63 	void applyGeometrySettings(void);
64 	void applyEffectsSettings(void);
65 	void applyPrimitivesSettings(void);
66 	void applyUpdatesSettings();
67 	void loadSettings(void);
68 	void loadDefaultGeneralSettings(bool initializing = true);
69 	void loadDefaultLDrawSettings(bool initializing = true);
70 	void loadDefaultGeometrySettings(bool initializing = true);
71 	void loadDefaultEffectsSettings(bool initializing = true);
72 	void loadDefaultPrimitivesSettings(bool initializing = true);
73 	void loadDefaultUpdatesSettings(bool initializing = true);
74 	void loadDefaultInventorySettings(bool initializing = true);
75 	void loadInventorySettings(void);
76 	// *************************************************************************
77 
78 	void commitSettings(void);
79 	void commitGeneralSettings(bool flush = true);
80 	void commitLDrawSettings(bool flush = true);
81 	void commitGeometrySettings(bool flush = true);
82 	void commitEffectsSettings(bool flush = true);
83 	void commitPrimitivesSettings(bool flush = true);
84 	void commitUpdatesSettings(bool flush = true);
85 	void commitInventorySettings(bool flush = true);
86 
87 	virtual void saveDefaultView(void);
88 	virtual void resetDefaultView(void);
89 
90 	// General settings
getFsaaMode(void)91 	int getFsaaMode(void) { return m_fsaaMode; }
getLineSmoothing(void)92 	bool getLineSmoothing(void) { return m_lineSmoothing; }
93 	void getBackgroundColor(int &r, int &g, int &b);
94 	void getDefaultColor(int &r, int &g, int &b);
getTransDefaultColor(void)95 	bool getTransDefaultColor(void) { return m_transDefaultColor; }
getDefaultColorNumber(void)96 	int getDefaultColorNumber(void) { return m_defaultColorNumber; }
getProcessLdConfig(void)97 	bool getProcessLdConfig(void) { return m_processLdConfig; }
getRandomColors(void)98 	bool getRandomColors(void) { return m_randomColors; }
getShowFps(void)99 	bool getShowFps(void) { return m_showFps; }
getShowAxes(void)100 	bool getShowAxes(void) { return m_showAxes; }
getShowErrors(void)101 	bool getShowErrors(void) { return m_showErrors; }
getDisableSmp(void)102 	bool getDisableSmp(void) { return !m_multiThreaded; }
getMultiThreaded(void)103 	bool getMultiThreaded(void) { return m_multiThreaded; }
getFullScreenRefresh(void)104 	int getFullScreenRefresh(void) { return m_fullScreenRefresh; }
getFov(void)105 	TCFloat getFov(void) { return m_fov; }
getMemoryUsage(void)106 	int getMemoryUsage(void) { return m_memoryUsage; }
107 	void getCustomColor(int index, int &r, int &g, int &b);
108 	DefaultDirMode getSaveDirMode(SaveOp op) const;
109 	const std::string& getSaveDir(SaveOp op) const;
110 	const std::string& getLastSaveDir(SaveOp op) const;
111 	const std::string& getDefaultSaveDir(SaveOp op, const std::string &modelFilename);
112 
getSnapshotsDirMode(void)113 	DefaultDirMode getSnapshotsDirMode(void) const
114 	{
115 		return getSaveDirMode(SOSnapshot);
116 	}
getSnapshotsDir(void)117 	std::string getSnapshotsDir(void)
118 	{
119 		return getSaveDir(SOSnapshot);
120 	}
getPartsListsDirMode(void)121 	DefaultDirMode getPartsListsDirMode(void) const
122 	{
123 		return getSaveDirMode(SOPartsList);
124 	}
getPartsListsDir(void)125 	std::string getPartsListsDir(void) const
126 	{
127 		return getSaveDir(SOPartsList);
128 	}
129 
130 	// LDraw settings
getLDrawDir(void)131 	const char *getLDrawDir(void) { return m_ldrawDir.c_str(); }
getExtraDirs(void)132 	const StringVector &getExtraDirs(void) { return m_extraDirs; }
133 
134 	// Geometry settings
getUseSeams(void)135 	bool getUseSeams(void) { return m_useSeams; }
getSeamWidth(void)136 	int getSeamWidth(void) { return m_seamWidth; }
getBoundingBoxesOnly(void)137 	bool getBoundingBoxesOnly(void) { return m_boundingBoxesOnly; }
getDrawWireframe(void)138 	bool getDrawWireframe(void) { return m_drawWireframe; }
getUseWireframeFog(void)139 	bool getUseWireframeFog(void) { return m_useWireframeFog; }
getRemoveHiddenLines(void)140 	bool getRemoveHiddenLines(void) { return m_removeHiddenLines; }
getWireframeThickness(void)141 	int getWireframeThickness(void) { return m_wireframeThickness; }
getBfc(void)142 	bool getBfc(void) { return m_bfc; }
getRedBackFaces(void)143 	bool getRedBackFaces(void) { return m_redBackFaces; }
getGreenFrontFaces(void)144 	bool getGreenFrontFaces(void) { return m_greenFrontFaces; }
getBlueNeutralFaces(void)145 	bool getBlueNeutralFaces(void) { return m_blueNeutralFaces; }
getShowHighlightLines(void)146 	bool getShowHighlightLines(void) { return m_showHighlightLines; }
getDrawConditionalHighlights(void)147 	bool getDrawConditionalHighlights(void)
148 	{
149 		return m_drawConditionalHighlights;
150 	}
getShowAllConditionalLines(void)151 	bool getShowAllConditionalLines(void) { return m_showAllConditionalLines; }
getShowConditionalControlPoints(void)152 	bool getShowConditionalControlPoints(void)
153 	{
154 		return m_showConditionalControlPoints;
155 	}
getEdgesOnly(void)156 	bool getEdgesOnly(void) { return m_edgesOnly; }
getUsePolygonOffset(void)157 	bool getUsePolygonOffset(void) { return m_usePolygonOffset; }
getBlackHighlights(void)158 	bool getBlackHighlights(void) { return m_blackHighlights; }
getEdgeThickness(void)159 	int getEdgeThickness(void) { return m_edgeThickness; }
160 
161 	// Effects settings
getUseLighting(void)162 	bool getUseLighting(void) { return m_useLighting; }
getQualityLighting(void)163 	bool getQualityLighting(void) { return m_qualityLighting; }
getSubduedLighting(void)164 	bool getSubduedLighting(void) { return m_subduedLighting; }
getUseSpecular(void)165 	bool getUseSpecular(void) { return m_useSpecular; }
getOneLight(void)166 	bool getOneLight(void) { return m_oneLight; }
167 	LightDirection getLightDirection(void);
getLightVector(void)168 	const TCVector &getLightVector(void) { return m_lightVector; }
getDrawLightDats(void)169 	bool getDrawLightDats(void) { return m_drawLightDats; }
getOptionalStandardLight(void)170 	bool getOptionalStandardLight(void) { return m_optionalStandardLight; }
getNoLightGeom(void)171 	bool getNoLightGeom(void) { return m_noLightGeom; }
getStereoMode(void)172 	LDVStereoMode getStereoMode(void) { return m_stereoMode; }
getStereoEyeSpacing(void)173 	int getStereoEyeSpacing(void) { return m_stereoEyeSpacing; }
getCutawayMode(void)174 	LDVCutawayMode getCutawayMode(void) { return m_cutawayMode; }
getCutawayAlpha(void)175 	int getCutawayAlpha(void) { return m_cutawayAlpha; }
getCutawayThickness(void)176 	int getCutawayThickness(void) { return m_cutawayThickness; }
getSortTransparent(void)177 	bool getSortTransparent(void) { return m_sortTransparent; }
getPerformSmoothing(void)178 	bool getPerformSmoothing(void) { return m_performSmoothing; }
getUseStipple(void)179 	bool getUseStipple(void) { return m_useStipple; }
getUseFlatShading(void)180 	bool getUseFlatShading(void) { return m_useFlatShading; }
getObi(void)181 	bool getObi(void) { return m_obi; }
182 
183 	// Primitives settings
getAllowPrimitiveSubstitution(void)184 	bool getAllowPrimitiveSubstitution(void)
185 	{
186 		return m_allowPrimitiveSubstitution;
187 	}
getTextureStuds(void)188 	bool getTextureStuds(void) { return m_textureStuds; }
getTextureFilterType(void)189 	int getTextureFilterType(void) { return m_textureFilterType; }
getAnisoLevel(void)190 	TCFloat getAnisoLevel(void) { return m_anisoLevel; }
getCurveQuality(void)191 	int getCurveQuality(void) { return m_curveQuality; }
getQualityStuds(void)192 	bool getQualityStuds(void) { return m_qualityStuds; }
getHiResPrimitives(void)193 	bool getHiResPrimitives(void) { return m_hiResPrimitives; }
getTexmaps(void)194 	bool getTexmaps(void) { return m_texmaps; }
getTexturesAfterTransparent(void)195 	bool getTexturesAfterTransparent(void) { return true; }
getTextureOffsetFactor(void)196 	TCFloat getTextureOffsetFactor(void) { return m_textureOffsetFactor; }
197 
198 	// Update settings
getProxyType(void)199 	int getProxyType(void) { return m_proxyType; }
getProxyServer(void)200 	const char *getProxyServer(void) { return m_proxyServer.c_str(); }
getProxyPort(void)201 	int getProxyPort(void) { return m_proxyPort; }
getCheckPartTracker(void)202 	bool getCheckPartTracker(void) { return m_checkPartTracker; }
getMissingPartWait(void)203 	int getMissingPartWait(void) { return m_missingPartWait; }
getUpdatedPartWait(void)204 	int getUpdatedPartWait(void) { return m_updatedPartWait; }
205 
206 	// Inventory settings
getInvShowModel(void)207 	bool getInvShowModel(void) { return m_invShowModel; }
getInvOverwriteSnapshot(void)208 	bool getInvOverwriteSnapshot(void) { return m_invOverwriteSnapshot; }
getInvExternalCss(void)209 	bool getInvExternalCss(void) { return m_invExternalCss; }
getInvPartImages(void)210 	bool getInvPartImages(void) { return m_invPartImages; }
getInvShowFile(void)211 	bool getInvShowFile(void) { return m_invShowFile; }
getInvShowTotal(void)212 	bool getInvShowTotal(void) { return m_invShowTotal; }
getInvColumnOrder(void)213 	const LongVector &getInvColumnOrder(void) { return m_invColumnOrder; }
getInvLastSavePath(void)214 	const std::string& getInvLastSavePath(void) const
215 	{
216 		return getLastSaveDir(SOPartsList);
217 	}
218 
219 	// General settings
220 	void setFsaaMode(int value, bool commit = false);
221 	void setLineSmoothing(bool value, bool commit = false);
222 	void setBackgroundColor(int r, int g, int b, bool commit = false);
223 	void setDefaultColor(int r, int g, int b, bool commit = false);
224 	void setTransDefaultColor(bool value, bool commit = false,
225 		bool apply = false);
226 	void setDefaultColorNumber(int value, bool commit = false);
227 	void setProcessLdConfig(bool value, bool commit = false);
228 	void setRandomColors(bool value, bool commit = false, bool apply = false);
229 	void setShowFps(bool value, bool commit = false);
230 	void setShowAxes(bool value, bool commit = false, bool apply = false);
231 	void setShowErrors(bool value, bool commit = false);
232 	void setDisableSmp(bool value, bool commit = false);
233 	void setFullScreenRefresh(int value, bool commit = false);
234 	void setFov(TCFloat value, bool commit = false);
235 	void setMemoryUsage(int value, bool commit = false);
236 	void setCustomColor(int index, int r, int g, int b, bool commit = false);
237 	void setSaveDirMode(SaveOp op, DefaultDirMode value, bool commit = false);
238 	void setSaveDir(SaveOp op, const char *value, bool commit = false);
239 	void setLastSaveDir(SaveOp op, const char *value, bool commit = false);
240 
241 	void setSnapshotsDirMode(DefaultDirMode value, bool commit = false)
242 	{
243 		setSaveDirMode(SOSnapshot, value, commit);
244 	}
245 	void setSnapshotsDir(const char *value, bool commit = false)
246 	{
247 		setSaveDir(SOSnapshot, value, commit);
248 	}
249 	void setPartsListsDirMode(DefaultDirMode value, bool commit = false)
250 	{
251 		setSaveDirMode(SOPartsList, value, commit);
252 	}
253 	void setPartsListsDir(const char *value, bool commit = false)
254 	{
255 		setSaveDir(SOPartsList, value, commit);
256 	}
257 
258 	// LDraw settings
259 	void setLDrawDir(const char *value, bool commit = false);
260 	void setExtraDirs(const StringVector &value, bool commit = false);
261 
262 	// Geometry settings
263 	void setUseSeams(bool value, bool commit = false, bool apply = false);
264 	void setSeamWidth(int value, bool commit = false);
265 	void setBoundingBoxesOnly(bool value, bool commit = false,
266 		bool apply = false);
267 	void setDrawWireframe(bool value, bool commit = false, bool apply = false);
268 	void setUseWireframeFog(bool value, bool commit = false,
269 		bool apply = false);
270 	void setRemoveHiddenLines(bool value, bool commit = false,
271 		bool apply = false);
272 	void setWireframeThickness(int value, bool commit = false);
273 	void setBfc(bool value, bool commit = false, bool apply = false);
274 	void setRedBackFaces(bool value, bool commit = false, bool apply = false);
275 	void setGreenFrontFaces(bool value, bool commit = false,
276 		bool apply = false);
277 	void setBlueNeutralFaces(bool value, bool commit = false,
278 		bool apply = false);
279 	void setShowHighlightLines(bool value, bool commit = false,
280 		bool apply = false);
281 	void setDrawConditionalHighlights(bool value, bool commit = false,
282 		bool apply = false);
283 	void setShowAllConditionalLines(bool value, bool commit = false,
284 		bool apply = false);
285 	void setShowConditionalControlPoints(bool value, bool commit = false,
286 		bool apply = false);
287 	void setEdgesOnly(bool value, bool commit = false, bool apply = false);
288 	void setUsePolygonOffset(bool value, bool commit = false,
289 		bool apply = false);
290 	void setBlackHighlights(bool value, bool commit = false,
291 		bool apply = false);
292 	void setEdgeThickness(int value, bool commit = false);
293 
294 	// Effects settings
295 	void setUseLighting(bool value, bool commit = false, bool apply = false);
296 	void setQualityLighting(bool value, bool commit = false, bool apply = false);
297 	void setSubduedLighting(bool value, bool commit = false, bool apply = false);
298 	void setUseSpecular(bool value, bool commit = false, bool apply = false);
299 	void setOneLight(bool value, bool commit = false, bool apply = false);
300 	void setLightDirection(LightDirection value, bool commit = false,
301 		bool apply = false);
302 	void setLightVector(const TCVector &value, bool commit = false,
303 		bool apply = false);
304 	void setDrawLightDats(bool value, bool commit = false, bool apply = false);
305 	void setOptionalStandardLight(bool value, bool commit = false,
306 		bool apply = false);
307 	void setNoLightGeom(bool value, bool commit = false, bool apply = false);
308 	void setStereoMode(LDVStereoMode value, bool commit = false);
309 	void setStereoEyeSpacing(int value, bool commit = false);
310 	void setCutawayMode(LDVCutawayMode value, bool commit = false,
311 		bool apply = false);
312 	void setCutawayAlpha(int value, bool commit = false);
313 	void setCutawayThickness(int value, bool commit = false);
314 	void setSortTransparent(bool value, bool commit = false);
315 	void setPerformSmoothing(bool value, bool commit = false,
316 		bool apply = false);
317 	void setUseStipple(bool value, bool commit = false);
318 	void setUseFlatShading(bool value, bool commit = false, bool apply = false);
319 	void setObi(bool value, bool commit = false);
320 
321 	// Primitives settings
322 	void setAllowPrimitiveSubstitution(bool value, bool commit = false,
323 		bool apply = false);
324 	void setTextureStuds(bool value, bool commit = false, bool apply = false);
325 	void setTextureFilterType(int value, bool commit = false);
326 	void setAnisoLevel(TCFloat value, bool commit = false);
327 	void setCurveQuality(int value, bool commit = false);
328 	void setQualityStuds(bool value, bool commit = false, bool apply = false);
329 	void setHiResPrimitives(bool value, bool commit = false);
330 	void setTexmaps(bool value, bool commit = false, bool apply = false);
331 	void setTexturesAfterTransparent(bool value, bool commit = false, bool apply = false);
332 	void setTextureOffsetFactor(TCFloat value, bool commit = false, bool apply = false);
333 	void setUseStrips(bool value, bool commit = false, bool apply = false);
334 
335 	// Update settings
336 	void setProxyType(int value, bool commit = false);
337 	void setProxyServer(const char *value, bool commit = false);
338 	void setProxyPort(int value, bool commit = false);
339 	void setCheckPartTracker(bool value, bool commit = false);
340 	void setMissingPartWait(int value, bool commit = false);
341 	void setUpdatedPartWait(int value, bool commit = false);
342 
343 	// Inventory settings
344 	void setInvShowModel(bool value, bool commit = false);
345 	void setInvOverwriteSnapshot(bool value, bool commit = false);
346 	void setInvExternalCss(bool value, bool commit = false);
347 	void setInvPartImages(bool value, bool commit = false);
348 	void setInvShowFile(bool value, bool commit = false);
349 	void setInvShowTotal(bool value, bool commit = false);
350 	void setInvColumnOrder(const LongVector &value, bool commit = false);
351 	void setInvLastSavePath(const char *value, bool commit = false)
352 	{
353 		setLastSaveDir(SOPartsList, value, commit);
354 	}
355 
356 	// No UI
357 	void setDefaultZoom(TCFloat value, bool commit = false);
358 protected:
359 	~LDPreferences(void);
360 	void dealloc(void);
361 	void setSetting(bool &setting, bool value, const char *key, bool commit);
362 	void setSetting(int &setting, int value, const char *key, bool commit);
363 	void setSetting(TCULong &setting, TCULong value, const char *key,
364 		bool commit);
365 	void setSetting(TCFloat &setting, TCFloat value, const char *key,
366 		bool commit);
367 	void setSetting(std::string &setting, const std::string &value,
368 		const char *key, bool commit, bool isPath = false);
369 	void setSetting(LongVector &setting, const LongVector &value,
370 		const char *key, bool commit);
371 	void setSetting(StringVector &setting, const StringVector &value,
372 		const char *key, bool commit, bool isPath = false, int keyDigits = 2,
373 		int startIndex = 0);
374 	bool setSetting(TCVector &setting, const TCVector &value,
375 		const char *key, bool commit);
376 	void setColorSetting(TCULong &setting, int r, int g, int b, const char *key,
377 		bool commit);
378 	bool getBoolSetting(const char *key, bool defaultValue = false);
379 	LongVector getLongVectorSetting(const char *key,
380 		const LongVector &defaultValue = LongVector());
381 	StringVector getStringVectorSetting(const char *key,
382 		const StringVector &defaultValue = StringVector(), bool isPath = false,
383 		int keyDigits = 2, int startIndex = 0);
384 	TCVector getTCVectorSetting(const char *key,
385 		const TCVector &defaultValue = TCVector());
386 	long getLongSetting(const char *key, long defaultValue = 0);
387 	int getIntSetting(const char *key, int defaultValue = 0);
388 	float getFloatSetting(const char *key, float defaultValue = 0.0f);
389 	std::string getStringSetting(const char *key,
390 		const char *defaultValue = NULL, bool isPath = false);
391 	void getColorSetting(const char *key, int &r, int &g, int &b,
392 		TCULong defaultColor = 0);
393 
394 	virtual void getRGB(int color, int &r, int &g, int &b);
395 	virtual int getColor(int r, int g, int b);
396 	virtual void commitSaveDir(SaveOp op);
397 
398 	// These are called from the constructor, and cannot be properly made into
399 	// virtual functions.
400 	// *************************************************************************
401 	void setupDefaultRotationMatrix(void);
402 	void setupModelCenter(void);
403 	void setupModelSize(void);
404 	void loadGeneralSettings(void);
405 	void loadLDrawSettings(void);
406 	void loadGeometrySettings(void);
407 	void loadEffectsSettings(void);
408 	void loadPrimitivesSettings(void);
409 	void loadUpdatesSettings(void);
410 	void setupSaveDir(SaveOp op, const std::string &dirModeKey,
411 		const std::string &dirKey, const std::string &lastDirKey);
412 	void loadSaveDir(SaveOp op);
413 	void setSaveDirDefault(SaveOp op, DefaultDirMode mode);
414 	// *************************************************************************
415 
416 	static std::string m_emptyString;
417 	static std::string m_modelDir;
418 	LDrawModelViewer* m_modelViewer;
419 
420 	// General settings
421 	int m_fsaaMode;
422 	bool m_lineSmoothing;
423 	TCULong m_backgroundColor;
424 	TCULong m_defaultColor;
425 	bool m_transDefaultColor;
426 	int m_defaultColorNumber;
427 	bool m_processLdConfig;
428 	bool m_randomColors;
429 	bool m_showFps;
430 	bool m_showAxes;
431 	bool m_showErrors;
432 	bool m_multiThreaded;
433 	int m_fullScreenRefresh;
434 	TCFloat m_fov;
435 	int m_memoryUsage;
436 	TCULong m_customColors[16];
437 	DirModeMap m_saveDirModes;
438 	SaveOpStringMap m_saveDirs;
439 	SaveOpStringMap m_lastSaveDirs;
440 	SaveOpStringMap m_saveDirModeKeys;
441 	SaveOpStringMap m_saveDirKeys;
442 	SaveOpStringMap m_lastSaveDirKeys;
443 
444 	// LDraw settings
445 	std::string m_ldrawDir;
446 	StringVector m_extraDirs;
447 
448 	// Geometry settings
449 	bool m_useSeams;
450 	int m_seamWidth;
451 	bool m_boundingBoxesOnly;
452 	bool m_drawWireframe;
453 	bool m_useWireframeFog;
454 	bool m_removeHiddenLines;
455 	int m_wireframeThickness;
456 	bool m_bfc;
457 	bool m_redBackFaces;
458 	bool m_greenFrontFaces;
459 	bool m_blueNeutralFaces;
460 	bool m_showHighlightLines;
461 	bool m_drawConditionalHighlights;
462 	bool m_showAllConditionalLines;
463 	bool m_showConditionalControlPoints;
464 	bool m_edgesOnly;
465 	bool m_usePolygonOffset;
466 	bool m_blackHighlights;
467 	int m_edgeThickness;
468 
469 	// Effects settings
470 	bool m_useLighting;
471 	bool m_qualityLighting;
472 	bool m_subduedLighting;
473 	bool m_useSpecular;
474 	bool m_oneLight;
475 	LDVStereoMode m_stereoMode;
476 	int m_stereoEyeSpacing;
477 	LDVCutawayMode m_cutawayMode;
478 	int m_cutawayAlpha;
479 	int m_cutawayThickness;
480 	bool m_sortTransparent;
481 	bool m_performSmoothing;
482 	bool m_useStipple;
483 	bool m_useFlatShading;
484 	bool m_obi;
485 
486 	// Primitives settings
487 	bool m_allowPrimitiveSubstitution;
488 	bool m_textureStuds;
489 	int m_textureFilterType;
490 	TCFloat m_anisoLevel;
491 	int m_curveQuality;
492 	bool m_qualityStuds;
493 	bool m_hiResPrimitives;
494 	bool m_texmaps;
495 	TCFloat m_textureOffsetFactor;
496 	bool m_useStrips;
497 
498 	// Update settings
499 	int m_proxyType;
500 	std::string m_proxyServer;
501 	int m_proxyPort;
502 	bool m_checkPartTracker;
503 	int m_missingPartWait;
504 	int m_updatedPartWait;
505 
506 	// Inventory settings
507 	bool m_invShowModel;
508 	bool m_invOverwriteSnapshot;
509 	bool m_invExternalCss;
510 	bool m_invPartImages;
511 	bool m_invShowFile;
512 	bool m_invShowTotal;
513 	LongVector m_invColumnOrder;
514 
515 	// Settings with no UI
516 	bool m_skipValidation;
517 	TCFloat m_defaultZoom;
518 	TCFloat m_zoomMax;
519 	TCVector m_lightVector;
520 	bool m_drawLightDats;
521 	bool m_optionalStandardLight;
522 	bool m_noLightGeom;
523 	std::string m_ldConfig;
524 
525 	StringBoolMap m_changedSettings;
526 	StringBoolMap m_globalSettings;
527 
528 	bool m_initializing;
529 };
530 
531 #endif // __LDPREFERENCES_H__
532