git-svn-id: svn://10.65.10.50/branches/R_10_00@23289 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        dxfrenderer.h
 | |
| // Purpose:     DXF reader and renderer
 | |
| // Author:      Sandro Sigala
 | |
| // Modified by:
 | |
| // Created:     2005-11-10
 | |
| // RCS-ID:      $Id: dxfrenderer.h 36174 2005-11-14 17:38:24Z JS $
 | |
| // Copyright:   (c) Sandro Sigala
 | |
| // Licence:     wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _DXFRENDERER_H_
 | |
| #define _DXFRENDERER_H_
 | |
| 
 | |
| struct DXFVector
 | |
| {
 | |
|     DXFVector() { x = y = z = 0.0f; }
 | |
|     DXFVector(float _x, float _y, float _z) { x = _x; y = _y; z = _z; }
 | |
|     float x, y, z;
 | |
| };
 | |
| 
 | |
| struct DXFEntity
 | |
| {
 | |
|     enum Type { Line, Face } type;
 | |
|     int colour;
 | |
| };
 | |
| 
 | |
| struct DXFLine: public DXFEntity
 | |
| {
 | |
|     DXFLine() { type = Line; }
 | |
|     DXFVector v0;
 | |
|     DXFVector v1;
 | |
| };
 | |
| 
 | |
| struct DXFFace: public DXFEntity
 | |
| {
 | |
|     DXFFace() { type = Face; }
 | |
|     void CalculateNormal();
 | |
|     DXFVector v0;
 | |
|     DXFVector v1;
 | |
|     DXFVector v2;
 | |
|     DXFVector v3;
 | |
|     DXFVector n;       // normal
 | |
| };
 | |
| 
 | |
| struct DXFLayer
 | |
| {
 | |
|     DXFLayer() { colour = -1; }
 | |
|     wxString name;
 | |
|     int colour;
 | |
| };
 | |
| 
 | |
| WX_DECLARE_LIST(DXFEntity, DXFEntityList);
 | |
| WX_DECLARE_LIST(DXFLayer, DXFLayerList);
 | |
| 
 | |
| class DXFRenderer
 | |
| {
 | |
| public:
 | |
|     DXFRenderer();
 | |
|     ~DXFRenderer();
 | |
| 
 | |
|     void Clear();
 | |
|     bool Load(wxInputStream& stream);
 | |
|     bool IsOk() const { return m_loaded; }
 | |
|     void Render() const;
 | |
| 
 | |
| private:
 | |
|     bool ParseHeader(wxInputStream& stream);
 | |
|     bool ParseTables(wxInputStream& stream);
 | |
|     bool ParseEntities(wxInputStream& stream);
 | |
|     int GetLayerColour(const wxString& layer) const;
 | |
|     void NormalizeEntities();
 | |
| 
 | |
|     bool m_loaded;
 | |
|     DXFLayerList m_layers;
 | |
|     DXFEntityList m_entities;
 | |
| };
 | |
| 
 | |
| #endif // !_DXFRENDERER_H_
 |