| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: dxfrenderer.h
- // Purpose: DXF reader and renderer
- // Author: Sandro Sigala
- // Modified by:
- // Created: 2005-11-10
- // 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_
|