You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

227 lines
6.8 KiB

  1. /******************************************************************************
  2. ** libDXFrw - Library to read/write DXF files (ascii & binary) **
  3. ** **
  4. ** Copyright (C) 2011 Rallaz, rallazz@gmail.com **
  5. ** **
  6. ** This library is free software, licensed under the terms of the GNU **
  7. ** General Public License as published by the Free Software Foundation, **
  8. ** either version 2 of the License, or (at your option) any later version. **
  9. ** You should have received a copy of the GNU General Public License **
  10. ** along with this program. If not, see <http://www.gnu.org/licenses/>. **
  11. ******************************************************************************/
  12. #ifndef DRW_INTERFACE_H
  13. #define DRW_INTERFACE_H
  14. #include <string.h>
  15. #include "drw_entities.h"
  16. #include "drw_objects.h"
  17. // #include "dl_extrusion.h"
  18. /**
  19. * Abstract class (interface) for comunicate dxfReader with the application.
  20. * Inherit your class which takes care of the entities in the
  21. * processed DXF file from this interface.
  22. *
  23. * @author Rallaz
  24. */
  25. class DRW_Interface
  26. {
  27. public:
  28. DRW_Interface()
  29. {
  30. // extrusion = new DL_Extrusion;
  31. }
  32. virtual ~DRW_Interface()
  33. {
  34. // delete extrusion;
  35. }
  36. /** Called when header is parsed. */
  37. virtual void addHeader( const DRW_Header* data ) = 0;
  38. /** Called for every line Type. */
  39. virtual void addLType( const DRW_LType& data ) = 0;
  40. /** Called for every layer. */
  41. virtual void addLayer( const DRW_Layer& data ) = 0;
  42. /** Called for every dim style. */
  43. virtual void addDimStyle( const DRW_Dimstyle& data ) = 0;
  44. /** Called for every VPORT table. */
  45. virtual void addVport( const DRW_Vport& data ) = 0;
  46. /** Called for every text style. */
  47. virtual void addTextStyle( const DRW_Textstyle& data ) = 0;
  48. /** Called for every AppId entry. */
  49. virtual void addAppId( const DRW_AppId& data ) = 0;
  50. /**
  51. * Called for every block. Note: all entities added after this
  52. * command go into this block until endBlock() is called.
  53. *
  54. * @see endBlock()
  55. */
  56. virtual void addBlock( const DRW_Block& data ) = 0;
  57. /**
  58. * In DWG called when the following entities corresponding to a
  59. * block different from the current. Note: all entities added after this
  60. * command go into this block until setBlock() is called already.
  61. *
  62. * int handle are the value of DRW_Block::handleBlock added with addBlock()
  63. */
  64. virtual void setBlock( const int handle ) = 0;
  65. /** Called to end the current block */
  66. virtual void endBlock() = 0;
  67. /** Called for every point */
  68. virtual void addPoint( const DRW_Point& data ) = 0;
  69. /** Called for every line */
  70. virtual void addLine( const DRW_Line& data ) = 0;
  71. /** Called for every ray */
  72. virtual void addRay( const DRW_Ray& data ) = 0;
  73. /** Called for every xline */
  74. virtual void addXline( const DRW_Xline& data ) = 0;
  75. /** Called for every arc */
  76. virtual void addArc( const DRW_Arc& data ) = 0;
  77. /** Called for every circle */
  78. virtual void addCircle( const DRW_Circle& data ) = 0;
  79. /** Called for every ellipse */
  80. virtual void addEllipse( const DRW_Ellipse& data ) = 0;
  81. /** Called for every lwpolyline */
  82. virtual void addLWPolyline( const DRW_LWPolyline& data ) = 0;
  83. /** Called for every polyline start */
  84. virtual void addPolyline( const DRW_Polyline& data ) = 0;
  85. /** Called for every spline */
  86. virtual void addSpline( const DRW_Spline* data ) = 0;
  87. /** Called for every spline knot value */
  88. virtual void addKnot( const DRW_Entity& data ) = 0;
  89. /** Called for every insert. */
  90. virtual void addInsert( const DRW_Insert& data ) = 0;
  91. /** Called for every trace start */
  92. virtual void addTrace( const DRW_Trace& data ) = 0;
  93. /** Called for every 3dface start */
  94. virtual void add3dFace( const DRW_3Dface& data ) = 0;
  95. /** Called for every solid start */
  96. virtual void addSolid( const DRW_Solid& data ) = 0;
  97. /** Called for every Multi Text entity. */
  98. virtual void addMText( const DRW_MText& data ) = 0;
  99. /** Called for every Text entity. */
  100. virtual void addText( const DRW_Text& data ) = 0;
  101. /**
  102. * Called for every aligned dimension entity.
  103. */
  104. virtual void addDimAlign( const DRW_DimAligned* data ) = 0;
  105. /**
  106. * Called for every linear or rotated dimension entity.
  107. */
  108. virtual void addDimLinear( const DRW_DimLinear* data ) = 0;
  109. /**
  110. * Called for every radial dimension entity.
  111. */
  112. virtual void addDimRadial( const DRW_DimRadial* data ) = 0;
  113. /**
  114. * Called for every diametric dimension entity.
  115. */
  116. virtual void addDimDiametric( const DRW_DimDiametric* data ) = 0;
  117. /**
  118. * Called for every angular dimension (2 lines version) entity.
  119. */
  120. virtual void addDimAngular( const DRW_DimAngular* data ) = 0;
  121. /**
  122. * Called for every angular dimension (3 points version) entity.
  123. */
  124. virtual void addDimAngular3P( const DRW_DimAngular3p* data ) = 0;
  125. /**
  126. * Called for every ordinate dimension entity.
  127. */
  128. virtual void addDimOrdinate( const DRW_DimOrdinate* data ) = 0;
  129. /**
  130. * Called for every leader start.
  131. */
  132. virtual void addLeader( const DRW_Leader* data ) = 0;
  133. /**
  134. * Called for every hatch entity.
  135. */
  136. virtual void addHatch( const DRW_Hatch* data ) = 0;
  137. /**
  138. * Called for every viewport entity.
  139. */
  140. virtual void addViewport( const DRW_Viewport& data ) = 0;
  141. /**
  142. * Called for every image entity.
  143. */
  144. virtual void addImage( const DRW_Image* data ) = 0;
  145. /**
  146. * Called for every image definition.
  147. */
  148. virtual void linkImage( const DRW_ImageDef* data ) = 0;
  149. /**
  150. * Called for every comment in the DXF file (code 999).
  151. */
  152. virtual void addComment( const char* comment ) = 0;
  153. /** Sets the current attributes for entities. */
  154. /* void setExtrusion(double dx, double dy, double dz, double elevation) {
  155. * extrusion->setDirection(dx, dy, dz);
  156. * extrusion->setElevation(elevation);
  157. * }*/
  158. /** @return the current attributes used for new entities. */
  159. // DL_Extrusion* getExtrusion() {
  160. // return extrusion;
  161. // }
  162. virtual void writeHeader( DRW_Header& data ) = 0;
  163. virtual void writeBlocks() = 0;
  164. virtual void writeBlockRecords() = 0;
  165. virtual void writeEntities() = 0;
  166. virtual void writeLTypes() = 0;
  167. virtual void writeLayers() = 0;
  168. virtual void writeTextstyles() = 0;
  169. virtual void writeVports() = 0;
  170. virtual void writeDimstyles() = 0;
  171. virtual void writeAppId() = 0;
  172. protected:
  173. // DL_Attributes attributes;
  174. // DL_Extrusion *extrusion;
  175. };
  176. #endif