SpatiaLite  5.0.1
gg_dxf.h
Go to the documentation of this file.
1 /*
2  gg_dxf.h -- Gaia common support for DXF files
3 
4  version 5.0, 2020 August 1
5 
6  Author: Sandro Furieri a.furieri@lqt.it
7 
8  ------------------------------------------------------------------------------
9 
10  Version: MPL 1.1/GPL 2.0/LGPL 2.1
11 
12  The contents of this file are subject to the Mozilla Public License Version
13  1.1 (the "License"); you may not use this file except in compliance with
14  the License. You may obtain a copy of the License at
15  http://www.mozilla.org/MPL/
16 
17 Software distributed under the License is distributed on an "AS IS" basis,
18 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
19 for the specific language governing rights and limitations under the
20 License.
21 
22 The Original Code is the SpatiaLite library
23 
24 The Initial Developer of the Original Code is Alessandro Furieri
25 
26 Portions created by the Initial Developer are Copyright (C) 2008-2021
27 the Initial Developer. All Rights Reserved.
28 
29 Contributor(s):
30 
31 Alternatively, the contents of this file may be used under the terms of
32 either the GNU General Public License Version 2 or later (the "GPL"), or
33 the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
34 in which case the provisions of the GPL or the LGPL are applicable instead
35 of those above. If you wish to allow use of your version of this file only
36 under the terms of either the GPL or the LGPL, and not to allow others to
37 use your version of this file under the terms of the MPL, indicate your
38 decision by deleting the provisions above and replace them with the notice
39 and other provisions required by the GPL or the LGPL. If you do not delete
40 the provisions above, a recipient may use your version of this file under
41 the terms of any one of the MPL, the GPL or the LGPL.
42 
43 */
44 
45 
52 #ifndef _GG_DXF_H
53 #ifndef DOXYGEN_SHOULD_SKIP_THIS
54 #define _GG_DXF_H
55 #endif
56 
57 #ifdef __cplusplus
58 extern "C"
59 {
60 #endif
61 
62 /* constant values for DXF */
63 
65 #define GAIA_DXF_IMPORT_BY_LAYER 1
66 
67 #define GAIA_DXF_IMPORT_MIXED 2
68 
69 #define GAIA_DXF_AUTO_2D_3D 3
70 
71 #define GAIA_DXF_FORCE_2D 4
72 
73 #define GAIA_DXF_FORCE_3D 5
74 
75 #define GAIA_DXF_RING_NONE 6
76 
77 #define GAIA_DXF_RING_LINKED 7
78 
79 #define GAIA_DXF_RING_UNLINKED 8
80 
81 
83 #define GAIA_DXF_V12 1000
84 
85 /* data structs */
86 
87 
91  typedef struct gaia_dxf_extra_attr
92  {
94  char *key;
96  char *value;
106 
110  typedef struct gaia_dxf_insert
111  {
113  char *block_id;
115  double x;
117  double y;
119  double z;
121  double scale_x;
123  double scale_y;
125  double scale_z;
127  double angle;
129  int hasText;
131  int hasPoint;
133  int hasLine;
135  int hasPolyg;
137  int hasHatch;
139  int is3Dtext;
143  int is3Dline;
159 
163  typedef struct gaia_dxf_text
164  {
166  char *label;
168  double x;
170  double y;
172  double z;
174  double angle;
188 
192  typedef struct gaia_dxf_point
193  {
195  double x;
197  double y;
199  double z;
213 
217  typedef struct gaia_dxf_circle
218  {
220  double cx;
222  double cy;
224  double cz;
226  double radius;
234 
238  typedef struct gaia_dxf_arc
239  {
241  double cx;
243  double cy;
245  double cz;
247  double radius;
249  double start;
251  double stop;
259 
263  typedef struct gaia_dxf_hole
264  {
266  int points;
268  double *x;
270  double *y;
272  double *z;
282 
287  typedef struct gaia_dxf_polyline
288  {
292  int points;
294  double *x;
296  double *y;
298  double *z;
319  typedef struct gaia_dxf_hatch_segm
320  {
322  double x0;
324  double y0;
326  double x1;
328  double y1;
338 
342  typedef struct gaia_dxf_boundary_path
343  {
357 
361  typedef struct gaia_dxf_hatch
362  {
364  double spacing;
366  double angle;
368  double base_x;
370  double base_y;
372  double offset_x;
374  double offset_y;
394 
398  typedef struct gaia_dxf_block
399  {
403  char *layer_name;
405  char *block_id;
427  int is3Dtext;
431  int is3Dline;
443 
447  typedef struct gaia_dxf_layer
448  {
450  char *layer_name;
492  int is3Dtext;
496  int is3Dline;
532 
536  typedef struct gaia_dxf_parser
537  {
539  char *filename;
551  int srid;
553  const char *selected_layer;
555  const char *prefix;
561  int line_no;
565  int op_code;
567  int section;
569  int tables;
571  int blocks;
573  int entities;
575  int is_layer;
577  int is_block;
579  int is_text;
581  int is_point;
587  int is_line;
591  int is_arc;
595  int is_hatch;
601  int eof;
603  int error;
627  char *extra_key;
629  char *extra_value;
645 
649  typedef struct gaia_dxf_write
650  {
652  FILE *out;
656  int version;
658  int count;
660  int error;
666 
667 
668 /* function prototypes */
669 
670 
692  GAIAGEO_DECLARE gaiaDxfParserPtr gaiaCreateDxfParser (int srid,
693  int force_dims,
694  const char *prefix,
695  const char
696  *selected_layer,
697  int special_rings);
698 
709  GAIAGEO_DECLARE void gaiaDestroyDxfParser (gaiaDxfParserPtr parser);
710 
727  GAIAGEO_DECLARE int gaiaParseDxfFile (gaiaDxfParserPtr parser,
728  const char *dxf_path);
729 
747  GAIAGEO_DECLARE int gaiaParseDxfFile_r (const void *p_cache,
748  gaiaDxfParserPtr parser,
749  const char *dxf_path);
750 
769  GAIAGEO_DECLARE int gaiaLoadFromDxfParser (sqlite3 * db_handle,
770  gaiaDxfParserPtr parser,
771  int mode, int append);
772 
785  GAIAGEO_DECLARE int gaiaDxfWriterInit (gaiaDxfWriterPtr dxf,
786  FILE * out, int precision,
787  int version);
788 
804  GAIAGEO_DECLARE int
805  gaiaDxfWriteHeader (gaiaDxfWriterPtr dxf, double minx, double miny,
806  double minz, double maxx, double maxy, double maxz);
807 
817  GAIAGEO_DECLARE int gaiaDxfWriteFooter (gaiaDxfWriterPtr dxf);
818 
828  GAIAGEO_DECLARE int gaiaDxfWriteTables (gaiaDxfWriterPtr dxf);
829 
840  GAIAGEO_DECLARE int gaiaDxfWriteLayer (gaiaDxfWriterPtr dxf,
841  const char *layer_name);
842 
853  GAIAGEO_DECLARE int gaiaDxfWriteEntities (gaiaDxfWriterPtr dxf);
854 
864  GAIAGEO_DECLARE int gaiaDxfWriteEndSection (gaiaDxfWriterPtr dxf);
865 
880  GAIAGEO_DECLARE int gaiaDxfWritePoint (gaiaDxfWriterPtr dxf,
881  const char *layer_name, double x,
882  double y, double z);
883 
901  GAIAGEO_DECLARE int gaiaDxfWriteText (gaiaDxfWriterPtr dxf,
902  const char *layer_name, double x,
903  double y, double z,
904  const char *label,
905  double text_height, double angle);
906 
919  GAIAGEO_DECLARE int
920  gaiaDxfWriteLine (gaiaDxfWriterPtr dxf, const char *layer_name,
921  gaiaLinestringPtr line);
922 
935  GAIAGEO_DECLARE int
936  gaiaDxfWriteRing (gaiaDxfWriterPtr dxf, const char *layer_name,
937  gaiaRingPtr ring);
938 
954  GAIAGEO_DECLARE int
955  gaiaDxfWriteGeometry (gaiaDxfWriterPtr dxf, const char *layer_name,
956  const char *label, double text_height,
957  double text_rotation, gaiaGeomCollPtr geometry);
958 
981  GAIAGEO_DECLARE int
982  gaiaExportDxf (gaiaDxfWriterPtr dxf, sqlite3 * db_handle,
983  const char *sql, const char *layer_col_name,
984  const char *geom_col_name, const char *label_col_name,
985  const char *text_height_col_name,
986  const char *text_rotation_col_name,
987  gaiaGeomCollPtr geom_filter);
988 
989 #ifdef __cplusplus
990 }
991 #endif
992 
993 #endif /* _GG_DXF_H */
gaia_dxf_block::last_line
gaiaDxfPolylinePtr last_line
pointer to last DXF Polyline (Linestring) object [linked list]
Definition: gg_dxf.h:417
gaia_dxf_insert::is3Dtext
int is3Dtext
boolean flag: contains 3d Text objects
Definition: gg_dxf.h:139
gaiaParseDxfFile_r
GAIAGEO_DECLARE int gaiaParseDxfFile_r(const void *p_cache, gaiaDxfParserPtr parser, const char *dxf_path)
Parsing a DXF file.
gaia_dxf_block::first_polyg
gaiaDxfPolylinePtr first_polyg
pointer to first DXF Polyline (Polygon) object [linked list]
Definition: gg_dxf.h:419
gaia_dxf_extra_attr
wrapper for DXF Extra Attribute object
Definition: gg_dxf.h:92
gaia_dxf_parser::blocks
int blocks
internal parser variable
Definition: gg_dxf.h:571
gaia_dxf_parser::first_block
gaiaDxfBlockPtr first_block
OUT: pointer to first DXF Block object [linked list].
Definition: gg_dxf.h:545
gaia_dxf_layer::last_hatch
gaiaDxfHatchPtr last_hatch
pointer to last DXF Hatch object [linked list]
Definition: gg_dxf.h:470
gaia_dxf_layer::first_polyg
gaiaDxfPolylinePtr first_polyg
pointer to first DXF Polyline (Polygon) object [linked list]
Definition: gg_dxf.h:464
gaiaDxfPointPtr
gaiaDxfPoint * gaiaDxfPointPtr
Typedef for DXF Point object.
Definition: gg_dxf.h:212
gaia_dxf_layer::first_ins_polyg
gaiaDxfInsertPtr first_ins_polyg
pointer to first DXF Insert Polyline (Polygon) object [linked list]
Definition: gg_dxf.h:484
gaia_dxf_parser::curr_insert
gaiaDxfInsert curr_insert
internal parser variable
Definition: gg_dxf.h:609
gaia_dxf_hole::points
int points
total count of points
Definition: gg_dxf.h:266
gaiaDxfHole
struct gaia_dxf_hole gaiaDxfHole
wrapper for DXF Polygon interior hole object
gaia_dxf_hatch::base_x
double base_x
hatch line base X
Definition: gg_dxf.h:368
gaia_dxf_arc::stop
double stop
stop angle
Definition: gg_dxf.h:251
gaia_dxf_block::layer_name
char * layer_name
pointer to Layer Name string
Definition: gg_dxf.h:403
gaia_dxf_write::out
FILE * out
IN: output DXF file handle.
Definition: gg_dxf.h:652
gaia_dxf_parser::is_insert
int is_insert
internal parser variable
Definition: gg_dxf.h:599
gaia_dxf_insert::hasPoint
int hasPoint
boolean flag: contains Point objects
Definition: gg_dxf.h:131
gaia_dxf_hatch_segm::y1
double y1
end Y
Definition: gg_dxf.h:328
gaiaDxfExtraAttrPtr
gaiaDxfExtraAttr * gaiaDxfExtraAttrPtr
Typedef for DXF Extra Attribute object.
Definition: gg_dxf.h:105
gaia_dxf_write
wrapper for DXF Write object
Definition: gg_dxf.h:650
gaia_dxf_text::next
struct gaia_dxf_text * next
pointer to next item [linked list]
Definition: gg_dxf.h:180
gaia_dxf_layer::is3Dpoint
int is3Dpoint
boolean flag: contains 3d Point objects
Definition: gg_dxf.h:494
gaia_dxf_parser::eof
int eof
internal parser variable
Definition: gg_dxf.h:601
gaia_dxf_hatch
wrapper for DXF Pattern Hatch object
Definition: gg_dxf.h:362
gaiaDxfWritePoint
GAIAGEO_DECLARE int gaiaDxfWritePoint(gaiaDxfWriterPtr dxf, const char *layer_name, double x, double y, double z)
Writing a DXF Point Entity.
gaia_dxf_layer::first_ins_text
gaiaDxfInsertPtr first_ins_text
pointer to first DXF Insert Text object [linked list]
Definition: gg_dxf.h:472
gaia_dxf_hatch_segm::x1
double x1
end X
Definition: gg_dxf.h:326
gaia_dxf_write::count
int count
OUT: count of exported geometries.
Definition: gg_dxf.h:658
gaia_dxf_arc::radius
double radius
radius
Definition: gg_dxf.h:247
gaia_dxf_circle::cy
double cy
Center Y coordinate.
Definition: gg_dxf.h:222
gaia_dxf_parser::undeclared_layers
int undeclared_layers
internal parser variable
Definition: gg_dxf.h:637
gaia_dxf_layer::is3DinsLine
int is3DinsLine
boolean flag: contains 3d Insert Polyline (Linestring) objects
Definition: gg_dxf.h:504
gaia_dxf_polyline::next
struct gaia_dxf_polyline * next
pointer to next item [linked list]
Definition: gg_dxf.h:308
gaia_dxf_layer::last_ins_line
gaiaDxfInsertPtr last_ins_line
pointer to last DXF Insert Polyline (Linestring) object [linked list]
Definition: gg_dxf.h:482
gaia_dxf_layer::hasExtraText
int hasExtraText
boolean flag: contains Text Extra Attributes
Definition: gg_dxf.h:508
gaia_dxf_hatch_segm::x0
double x0
start X
Definition: gg_dxf.h:322
gaia_dxf_insert::hasPolyg
int hasPolyg
boolean flag: contains Polyline (Polygon) objects
Definition: gg_dxf.h:135
gaia_dxf_layer
wrapper for DXF Layer object
Definition: gg_dxf.h:448
gaia_dxf_circle
wrapper for DXF Circle object
Definition: gg_dxf.h:218
gaia_dxf_arc::cy
double cy
Center Y coordinate.
Definition: gg_dxf.h:243
gaia_dxf_parser::is_layer
int is_layer
internal parser variable
Definition: gg_dxf.h:575
gaia_dxf_arc::cx
double cx
Center X coordinate.
Definition: gg_dxf.h:241
gaiaDxfInsertPtr
gaiaDxfInsert * gaiaDxfInsertPtr
Typedef for DXF Insert object.
Definition: gg_dxf.h:158
gaiaDxfLayer
struct gaia_dxf_layer gaiaDxfLayer
wrapper for DXF Layer object
gaia_dxf_parser::unlinked_rings
int unlinked_rings
IN: parser option - unlinked rings special handling.
Definition: gg_dxf.h:559
gaia_dxf_boundary_path::last
gaiaDxfHatchSegmPtr last
pointer to last segment
Definition: gg_dxf.h:347
gaia_dxf_block::first_point
gaiaDxfPointPtr first_point
pointer to first DXF Point object [linked list]
Definition: gg_dxf.h:411
gaiaDxfWriteLine
GAIAGEO_DECLARE int gaiaDxfWriteLine(gaiaDxfWriterPtr dxf, const char *layer_name, gaiaLinestringPtr line)
Writing a DXF Polyline (opened) Entity.
gaia_dxf_parser::extra_value
char * extra_value
internal parser variable
Definition: gg_dxf.h:629
gaia_dxf_circle::cz
double cz
Center Z coordinate.
Definition: gg_dxf.h:224
gaia_dxf_polyline::z
double * z
array of Z coordinates
Definition: gg_dxf.h:298
gaia_dxf_write::error
int error
OUT: error flag.
Definition: gg_dxf.h:660
gaia_dxf_extra_attr::value
char * value
pointer to Extra Attribute Value string
Definition: gg_dxf.h:96
gaia_dxf_arc::start
double start
start angle
Definition: gg_dxf.h:249
gaia_dxf_layer::is3Dline
int is3Dline
boolean flag: contains 3d Polyline (Linestring) objects
Definition: gg_dxf.h:496
gaia_dxf_layer::is3Dtext
int is3Dtext
boolean flag: contains 3d Text objects
Definition: gg_dxf.h:492
gaiaDxfPolylinePtr
gaiaDxfPolyline * gaiaDxfPolylinePtr
Typedef for DXF Polyline object.
Definition: gg_dxf.h:315
gaia_dxf_layer::hasExtraInsPolyg
int hasExtraInsPolyg
boolean flag: contains Insert Polyline (Polygon) Extra Attributes
Definition: gg_dxf.h:522
gaia_dxf_parser::line_no
int line_no
internal parser variable
Definition: gg_dxf.h:561
gaia_dxf_parser::tables
int tables
internal parser variable
Definition: gg_dxf.h:569
gaiaDxfWriterInit
GAIAGEO_DECLARE int gaiaDxfWriterInit(gaiaDxfWriterPtr dxf, FILE *out, int precision, int version)
Initializing a DXF Writer Object.
gaia_dxf_layer::last_text
gaiaDxfTextPtr last_text
pointer to last DXF Text object [linked list]
Definition: gg_dxf.h:454
gaiaDxfPoint
struct gaia_dxf_point gaiaDxfPoint
wrapper for DXF Point object
gaia_dxf_text::last
gaiaDxfExtraAttrPtr last
pointer to last Extra Attribute [linked list]
Definition: gg_dxf.h:178
gaia_dxf_text
wrapper for DXF Text object
Definition: gg_dxf.h:164
gaia_dxf_point::first
gaiaDxfExtraAttrPtr first
pointer to first Extra Attribute [linked list]
Definition: gg_dxf.h:201
gaia_dxf_parser::prefix
const char * prefix
IN: parser option - pointer to prefix string for DB tables.
Definition: gg_dxf.h:555
gaia_dxf_block::block_id
char * block_id
pointer to Block ID string
Definition: gg_dxf.h:405
gaia_dxf_parser::op_code
int op_code
internal parser variable
Definition: gg_dxf.h:565
gaia_dxf_parser::first_layer
gaiaDxfLayerPtr first_layer
OUT: pointer to first DXF Layer object [linked list].
Definition: gg_dxf.h:541
gaia_dxf_layer::first_ins_hatch
gaiaDxfInsertPtr first_ins_hatch
pointer to first DXF Insert Hatch object [linked list]
Definition: gg_dxf.h:488
gaia_dxf_point
wrapper for DXF Point object
Definition: gg_dxf.h:193
gaiaDxfHolePtr
gaiaDxfHole * gaiaDxfHolePtr
Typedef for DXF Point object.
Definition: gg_dxf.h:281
gaia_dxf_polyline::points
int points
total count of points
Definition: gg_dxf.h:292
gaia_dxf_hole::y
double * y
array of Y coordinates
Definition: gg_dxf.h:270
gaiaDxfArc
struct gaia_dxf_arc gaiaDxfArc
wrapper for DXF Arc object
gaia_dxf_layer::first_hatch
gaiaDxfHatchPtr first_hatch
pointer to first DXF Hatch object [linked list]
Definition: gg_dxf.h:468
gaia_dxf_parser::op_code_line
int op_code_line
internal parser variable
Definition: gg_dxf.h:563
gaia_dxf_insert::angle
double angle
rotation angle
Definition: gg_dxf.h:127
gaiaCreateDxfParser
GAIAGEO_DECLARE gaiaDxfParserPtr gaiaCreateDxfParser(int srid, int force_dims, const char *prefix, const char *selected_layer, int special_rings)
Creates a DXF Parser object.
gaia_dxf_hatch::boundary
gaiaGeomCollPtr boundary
pointer to Boundary geometry
Definition: gg_dxf.h:380
gaia_dxf_insert::block_id
char * block_id
pointer to Block ID string
Definition: gg_dxf.h:113
gaiaDxfTextPtr
gaiaDxfText * gaiaDxfTextPtr
Typedef for DXF Text object.
Definition: gg_dxf.h:187
gaia_dxf_layer::is3Dpolyg
int is3Dpolyg
boolean flag: contains 3d Polyline (Polygon) objects
Definition: gg_dxf.h:498
gaia_dxf_block::next
struct gaia_dxf_block * next
pointer to next item [linked list]
Definition: gg_dxf.h:435
gaia_dxf_layer::first_line
gaiaDxfPolylinePtr first_line
pointer to first DXF Polyline (Linestring) object [linked list]
Definition: gg_dxf.h:460
gaia_dxf_write::version
int version
IN: DXF version number.
Definition: gg_dxf.h:656
gaia_dxf_point::y
double y
Y coordinate.
Definition: gg_dxf.h:197
gaiaDxfHatchPtr
gaiaDxfHatch * gaiaDxfHatchPtr
Typedef for DXF Hatch object.
Definition: gg_dxf.h:393
gaiaDxfWriteHeader
GAIAGEO_DECLARE int gaiaDxfWriteHeader(gaiaDxfWriterPtr dxf, double minx, double miny, double minz, double maxx, double maxy, double maxz)
Writing the DXF Header.
gaia_dxf_parser::extra_key
char * extra_key
internal parser variable
Definition: gg_dxf.h:627
gaia_dxf_parser::entities
int entities
internal parser variable
Definition: gg_dxf.h:573
gaia_dxf_block::last_polyg
gaiaDxfPolylinePtr last_polyg
pointer to last DXF Polyline (Polygon) object [linked list]
Definition: gg_dxf.h:421
gaia_dxf_layer::first_ins_point
gaiaDxfInsertPtr first_ins_point
pointer to first DXF Insert Point object [linked list]
Definition: gg_dxf.h:476
gaia_dxf_parser::first_pt
gaiaDxfPointPtr first_pt
internal parser variable
Definition: gg_dxf.h:623
gaia_dxf_block::is3Dtext
int is3Dtext
boolean flag: contains 3d Text objects
Definition: gg_dxf.h:427
gaiaLoadFromDxfParser
GAIAGEO_DECLARE int gaiaLoadFromDxfParser(sqlite3 *db_handle, gaiaDxfParserPtr parser, int mode, int append)
Populating a DB so to permanently store all Geometries from a DXF Parser.
gaia_dxf_insert::scale_z
double scale_z
Z scale factor.
Definition: gg_dxf.h:125
gaiaDxfText
struct gaia_dxf_text gaiaDxfText
wrapper for DXF Text object
gaia_dxf_hatch::next
struct gaia_dxf_hatch * next
pointer to next item [linked list]
Definition: gg_dxf.h:386
gaia_dxf_polyline::first
gaiaDxfExtraAttrPtr first
pointer to first Extra Attribute [linked list]
Definition: gg_dxf.h:304
gaia_dxf_parser::curr_hatch
gaiaDxfHatchPtr curr_hatch
internal parser variable
Definition: gg_dxf.h:635
gaia_dxf_hole::next
struct gaia_dxf_hole * next
pointer to next item [linked list]
Definition: gg_dxf.h:274
gaia_dxf_parser::is_closed_polyline
int is_closed_polyline
internal parser variable
Definition: gg_dxf.h:621
gaia_dxf_polyline::x
double * x
array of X coordinates
Definition: gg_dxf.h:294
gaiaDxfArcPtr
gaiaDxfArc * gaiaDxfArcPtr
Typedef for DXF Arc object.
Definition: gg_dxf.h:258
gaiaDxfPolyline
struct gaia_dxf_polyline gaiaDxfPolyline
wrapper for DXF Polyline object could be a Linestring or a Polygon depending on the is_closed flag
gaia_dxf_parser::curr_text
gaiaDxfText curr_text
internal parser variable
Definition: gg_dxf.h:607
gaiaDxfLayerPtr
gaiaDxfLayer * gaiaDxfLayerPtr
Typedef for DXF Layer object.
Definition: gg_dxf.h:531
gaia_dxf_parser::curr_point
gaiaDxfPoint curr_point
internal parser variable
Definition: gg_dxf.h:613
gaia_dxf_hole::x
double * x
array of X coordinates
Definition: gg_dxf.h:268
gaia_dxf_parser::error
int error
internal parser variable
Definition: gg_dxf.h:603
gaia_dxf_parser::selected_layer
const char * selected_layer
IN: parser option - pointer the single Layer Name string.
Definition: gg_dxf.h:553
gaia_dxf_parser::last_layer
gaiaDxfLayerPtr last_layer
OUT: pointer to last DXF Layer object [linked list].
Definition: gg_dxf.h:543
gaia_dxf_hatch_segm::next
struct gaia_dxf_hatch_segm * next
pointer to next item [linked list]
Definition: gg_dxf.h:330
gaiaDxfWriteRing
GAIAGEO_DECLARE int gaiaDxfWriteRing(gaiaDxfWriterPtr dxf, const char *layer_name, gaiaRingPtr ring)
Writing a DXF Polyline (closed) Entity.
gaia_dxf_block
wrapper for DXF Block object
Definition: gg_dxf.h:399
gaia_dxf_parser::first_ext
gaiaDxfExtraAttrPtr first_ext
internal parser variable
Definition: gg_dxf.h:631
gaia_dxf_parser::is_polyline
int is_polyline
internal parser variable
Definition: gg_dxf.h:583
gaia_dxf_hatch::last_out
gaiaDxfHatchSegmPtr last_out
pointer to last Pattern segment
Definition: gg_dxf.h:384
gaia_dxf_hatch::offset_y
double offset_y
hatch line offset Y
Definition: gg_dxf.h:374
gaia_dxf_layer::is3DinsPolyg
int is3DinsPolyg
boolean flag: contains 3d Insert Polyline (Polygon) objects
Definition: gg_dxf.h:506
gaia_dxf_text::y
double y
Y coordinate.
Definition: gg_dxf.h:170
gaia_dxf_hatch_segm
wrapper for DXF Pattern Segment object
Definition: gg_dxf.h:320
gaiaDxfWriteLayer
GAIAGEO_DECLARE int gaiaDxfWriteLayer(gaiaDxfWriterPtr dxf, const char *layer_name)
Writing a DXF Table/Layer definition.
gaiaDxfHatchSegm
struct gaia_dxf_hatch_segm gaiaDxfHatchSegm
wrapper for DXF Pattern Segment object
gaiaDxfWriteFooter
GAIAGEO_DECLARE int gaiaDxfWriteFooter(gaiaDxfWriterPtr dxf)
Writing a DXF Entities Section Header.
gaia_dxf_layer::hasExtraPoint
int hasExtraPoint
boolean flag: contains Point Extra Attributes
Definition: gg_dxf.h:510
gaiaDxfWriter
struct gaia_dxf_write gaiaDxfWriter
wrapper for DXF Write object
gaia_dxf_block::last_text
gaiaDxfTextPtr last_text
pointer to last DXF Text object [linked list]
Definition: gg_dxf.h:409
gaia_dxf_layer::hasExtraLine
int hasExtraLine
boolean flag: contains Polyline (Linestring) Extra Attributes
Definition: gg_dxf.h:512
gaiaDxfBlockPtr
gaiaDxfBlock * gaiaDxfBlockPtr
Typedef for DXF Block object.
Definition: gg_dxf.h:442
gaia_dxf_layer::next
struct gaia_dxf_layer * next
pointer to next item [linked list]
Definition: gg_dxf.h:524
gaia_dxf_insert::last
gaiaDxfExtraAttrPtr last
pointer to last Extra Attribute [linked list]
Definition: gg_dxf.h:149
gaiaDxfWriteText
GAIAGEO_DECLARE int gaiaDxfWriteText(gaiaDxfWriterPtr dxf, const char *layer_name, double x, double y, double z, const char *label, double text_height, double angle)
Writing a DXF Text Entity.
gaia_dxf_point::last
gaiaDxfExtraAttrPtr last
pointer to last Extra Attribute [linked list]
Definition: gg_dxf.h:203
gaia_dxf_block::first_text
gaiaDxfTextPtr first_text
pointer to first DXF Text object [linked list]
Definition: gg_dxf.h:407
gaiaDxfParserPtr
gaiaDxfParser * gaiaDxfParserPtr
Typedef for DXF Layer object.
Definition: gg_dxf.h:644
gaia_dxf_parser::curr_arc
gaiaDxfArc curr_arc
internal parser variable
Definition: gg_dxf.h:619
gaiaDxfHatch
struct gaia_dxf_hatch gaiaDxfHatch
wrapper for DXF Pattern Hatch object
gaia_dxf_insert::x
double x
X coordinate.
Definition: gg_dxf.h:115
gaia_dxf_polyline::first_hole
gaiaDxfHolePtr first_hole
pointer to first Polygon hole [linked list]
Definition: gg_dxf.h:300
gaia_dxf_parser::force_dims
int force_dims
IN: parser option - dimension handlig.
Definition: gg_dxf.h:549
gaiaDxfWriteGeometry
GAIAGEO_DECLARE int gaiaDxfWriteGeometry(gaiaDxfWriterPtr dxf, const char *layer_name, const char *label, double text_height, double text_rotation, gaiaGeomCollPtr geometry)
Writing a DXF generic Entity.
gaia_dxf_insert::is3Dpoint
int is3Dpoint
boolean flag: contains 3d Point objects
Definition: gg_dxf.h:141
gaia_dxf_parser::is_vertex
int is_vertex
internal parser variable
Definition: gg_dxf.h:593
gaia_dxf_insert::hasLine
int hasLine
boolean flag: contains Polyline (Linestring) objects
Definition: gg_dxf.h:133
gaia_dxf_parser::last_ext
gaiaDxfExtraAttrPtr last_ext
internal parser variable
Definition: gg_dxf.h:633
gaia_dxf_parser::is_text
int is_text
internal parser variable
Definition: gg_dxf.h:579
gaia_dxf_parser::curr_block
gaiaDxfBlock curr_block
internal parser variable
Definition: gg_dxf.h:611
gaiaDxfBoundaryPath
struct gaia_dxf_boundary_path gaiaDxfBoundaryPath
wrapper for DXF Boundary Path object
gaiaRingStruct
Container for OGC RING Geometry.
Definition: gg_structs.h:159
gaia_dxf_hatch::base_y
double base_y
hatch line base Y
Definition: gg_dxf.h:370
gaia_dxf_insert::is3Dline
int is3Dline
boolean flag: contains 3d Polyline (Linestring) objects
Definition: gg_dxf.h:143
gaia_dxf_insert::is3Dpolyg
int is3Dpolyg
boolean flag: contains 3d Polyline (Polygon) objects
Definition: gg_dxf.h:145
gaia_dxf_layer::last_line
gaiaDxfPolylinePtr last_line
pointer to last DXF Polyline (Linestring) object [linked list]
Definition: gg_dxf.h:462
gaia_dxf_layer::last_ins_text
gaiaDxfInsertPtr last_ins_text
pointer to last DXF Insert Text object [linked list]
Definition: gg_dxf.h:474
gaia_dxf_layer::hasExtraInsText
int hasExtraInsText
boolean flag: contains Insert Text Extra Attributes
Definition: gg_dxf.h:516
gaia_dxf_hatch_segm::y0
double y0
start Y
Definition: gg_dxf.h:324
gaia_dxf_layer::hasExtraInsPoint
int hasExtraInsPoint
boolean flag: contains Insert Text Extra Attributes
Definition: gg_dxf.h:518
gaiaLinestringStruct
Container for OGC LINESTRING Geometry.
Definition: gg_structs.h:129
gaia_dxf_write::precision
int precision
IN: coord's precision (number of decimal digits)
Definition: gg_dxf.h:654
gaia_dxf_parser
wrapper for DXF Parser object
Definition: gg_dxf.h:537
gaia_dxf_block::is3Dpolyg
int is3Dpolyg
boolean flag: contains 3d Polyline (Polygon) objects
Definition: gg_dxf.h:433
gaia_dxf_hatch::first
gaiaDxfBoundaryPathPtr first
pointer to first Boundary
Definition: gg_dxf.h:376
gaiaDxfWriteTables
GAIAGEO_DECLARE int gaiaDxfWriteTables(gaiaDxfWriterPtr dxf)
Writing the DXF Tables Section Header.
gaia_dxf_boundary_path::first
gaiaDxfHatchSegmPtr first
pointer to first segment
Definition: gg_dxf.h:345
gaia_dxf_polyline::y
double * y
array of Y coordinates
Definition: gg_dxf.h:296
gaia_dxf_parser::section
int section
internal parser variable
Definition: gg_dxf.h:567
gaia_dxf_block::hasInsert
int hasInsert
Boolean flag: this block is referenced by some Insert.
Definition: gg_dxf.h:401
gaia_dxf_block::first_line
gaiaDxfPolylinePtr first_line
pointer to first DXF Polyline (Linestring) object [linked list]
Definition: gg_dxf.h:415
gaia_dxf_parser::is_line
int is_line
internal parser variable
Definition: gg_dxf.h:587
gaia_dxf_layer::last_point
gaiaDxfPointPtr last_point
pointer to lasst DXF Point object [linked list]
Definition: gg_dxf.h:458
gaia_dxf_insert::scale_x
double scale_x
X scale factor.
Definition: gg_dxf.h:121
gaiaDestroyDxfParser
GAIAGEO_DECLARE void gaiaDestroyDxfParser(gaiaDxfParserPtr parser)
Destroying a DXF Parser object.
gaia_dxf_layer::layer_name
char * layer_name
pointer to Layer Name string
Definition: gg_dxf.h:450
gaia_dxf_parser::is_hatch
int is_hatch
internal parser variable
Definition: gg_dxf.h:595
gaia_dxf_arc
wrapper for DXF Arc object
Definition: gg_dxf.h:239
gaia_dxf_layer::last_ins_hatch
gaiaDxfInsertPtr last_ins_hatch
pointer to last DXF Insert Hatch object [linked list]
Definition: gg_dxf.h:490
gaia_dxf_polyline
wrapper for DXF Polyline object could be a Linestring or a Polygon depending on the is_closed flag
Definition: gg_dxf.h:288
gaia_dxf_parser::linked_rings
int linked_rings
IN: parser option - linked rings special handling.
Definition: gg_dxf.h:557
gaia_dxf_block::last_point
gaiaDxfPointPtr last_point
pointer to last DXF Point object [linked list]
Definition: gg_dxf.h:413
gaia_dxf_layer::hasExtraInsLine
int hasExtraInsLine
boolean flag: contains Insert Polyline (Linestring) Extra Attributes
Definition: gg_dxf.h:520
gaia_dxf_layer::is3DinsPoint
int is3DinsPoint
boolean flag: contains 3d Insert Point objects
Definition: gg_dxf.h:502
gaia_dxf_layer::last_ins_polyg
gaiaDxfInsertPtr last_ins_polyg
pointer to last DXF Insert Polyline (Polygon) object [linked list]
Definition: gg_dxf.h:486
gaia_dxf_extra_attr::next
struct gaia_dxf_extra_attr * next
pointer to next item [linked list]
Definition: gg_dxf.h:98
gaia_dxf_hole::z
double * z
array of Z coordinates
Definition: gg_dxf.h:272
gaia_dxf_insert::z
double z
Z coordinate.
Definition: gg_dxf.h:119
gaia_dxf_insert::first
gaiaDxfExtraAttrPtr first
pointer to first Extra Attribute [linked list]
Definition: gg_dxf.h:147
gaia_dxf_parser::is_point
int is_point
internal parser variable
Definition: gg_dxf.h:581
gaia_dxf_circle::radius
double radius
radius
Definition: gg_dxf.h:226
gaia_dxf_hatch::angle
double angle
hatch line angle
Definition: gg_dxf.h:366
gaiaExportDxf
GAIAGEO_DECLARE int gaiaExportDxf(gaiaDxfWriterPtr dxf, sqlite3 *db_handle, const char *sql, const char *layer_col_name, const char *geom_col_name, const char *label_col_name, const char *text_height_col_name, const char *text_rotation_col_name, gaiaGeomCollPtr geom_filter)
Exporting a complex DXF file.
gaia_dxf_insert::hasHatch
int hasHatch
boolean flag: contains Hatch objects
Definition: gg_dxf.h:137
gaia_dxf_parser::last_block
gaiaDxfBlockPtr last_block
OUT: pointer to last DXF Block object [linked list].
Definition: gg_dxf.h:547
gaia_dxf_hatch::first_out
gaiaDxfHatchSegmPtr first_out
pointer to first Pattern segment
Definition: gg_dxf.h:382
gaiaDxfWriteEntities
GAIAGEO_DECLARE int gaiaDxfWriteEntities(gaiaDxfWriterPtr dxf)
Writing a DXF Entities Section Header.
gaia_dxf_arc::cz
double cz
Center Z coordinate.
Definition: gg_dxf.h:245
gaia_dxf_hatch::last
gaiaDxfBoundaryPathPtr last
pointer to last Boundary
Definition: gg_dxf.h:378
gaiaDxfBoundaryPathPtr
gaiaDxfBoundaryPath * gaiaDxfBoundaryPathPtr
Typedef for DXF Boundary Path object.
Definition: gg_dxf.h:356
gaia_dxf_block::first_hatch
gaiaDxfHatchPtr first_hatch
pointer to first DXF Hatch object [linked list]
Definition: gg_dxf.h:423
gaia_dxf_boundary_path
wrapper for DXF Boundary Path object
Definition: gg_dxf.h:343
gaia_dxf_text::x
double x
X coordinate.
Definition: gg_dxf.h:168
gaiaDxfBlock
struct gaia_dxf_block gaiaDxfBlock
wrapper for DXF Block object
gaia_dxf_insert::next
struct gaia_dxf_insert * next
pointer to next item [linked list]
Definition: gg_dxf.h:151
gaia_dxf_text::first
gaiaDxfExtraAttrPtr first
pointer to first Extra Attribute [linked list]
Definition: gg_dxf.h:176
gaiaGeomCollStruct
Container for OGC GEOMETRYCOLLECTION Geometry.
Definition: gg_structs.h:227
gaia_dxf_boundary_path::next
struct gaia_dxf_boundary_path * next
pointer to next item [linked list]
Definition: gg_dxf.h:349
gaia_dxf_insert::y
double y
Y coordinate.
Definition: gg_dxf.h:117
gaia_dxf_point::z
double z
Z coordinate.
Definition: gg_dxf.h:199
gaia_dxf_layer::first_ins_line
gaiaDxfInsertPtr first_ins_line
pointer to first DXF Insert Polyline (Linestring) object [linked list]
Definition: gg_dxf.h:480
gaia_dxf_point::next
struct gaia_dxf_point * next
pointer to next item [linked list]
Definition: gg_dxf.h:205
gaia_dxf_parser::curr_layer_name
char * curr_layer_name
internal parser variable
Definition: gg_dxf.h:605
gaia_dxf_block::is3Dline
int is3Dline
boolean flag: contains 3d Polyline (Linestring) objects
Definition: gg_dxf.h:431
gaiaDxfInsert
struct gaia_dxf_insert gaiaDxfInsert
wrapper for DXF Insert object
gaia_dxf_layer::hasExtraPolyg
int hasExtraPolyg
boolean flag: contains Polyline (Polygon) Extra Attributes
Definition: gg_dxf.h:514
gaia_dxf_layer::is3DinsText
int is3DinsText
boolean flag: contains 3d Insert Text objects
Definition: gg_dxf.h:500
gaia_dxf_layer::first_text
gaiaDxfTextPtr first_text
pointer to first DXF Text object [linked list]
Definition: gg_dxf.h:452
gaia_dxf_extra_attr::key
char * key
pointer to Extra Attribute Key value
Definition: gg_dxf.h:94
gaiaDxfParser
struct gaia_dxf_parser gaiaDxfParser
wrapper for DXF Parser object
gaia_dxf_block::last_hatch
gaiaDxfHatchPtr last_hatch
pointer to last DXF Hatch object [linked list]
Definition: gg_dxf.h:425
gaia_dxf_hatch::spacing
double spacing
hatch pattern spacing
Definition: gg_dxf.h:364
gaia_dxf_insert::scale_y
double scale_y
Y scale factor.
Definition: gg_dxf.h:123
gaia_dxf_hole
wrapper for DXF Polygon interior hole object
Definition: gg_dxf.h:264
gaia_dxf_parser::filename
char * filename
OUT: origin/input filename.
Definition: gg_dxf.h:539
gaia_dxf_parser::is_lwpolyline
int is_lwpolyline
internal parser variable
Definition: gg_dxf.h:585
gaia_dxf_parser::is_block
int is_block
internal parser variable
Definition: gg_dxf.h:577
gaia_dxf_text::angle
double angle
label rotation angle
Definition: gg_dxf.h:174
gaia_dxf_parser::is_circle
int is_circle
internal parser variable
Definition: gg_dxf.h:589
gaia_dxf_insert
wrapper for DXF Insert object
Definition: gg_dxf.h:111
gaiaDxfCirclePtr
gaiaDxfCircle * gaiaDxfCirclePtr
Typedef for DXF Circle object.
Definition: gg_dxf.h:233
gaia_dxf_parser::srid
int srid
IN: parser option - the SRID.
Definition: gg_dxf.h:551
gaia_dxf_layer::last_ins_point
gaiaDxfInsertPtr last_ins_point
pointer to last DXF Insert Point object [linked list]
Definition: gg_dxf.h:478
gaiaDxfWriterPtr
gaiaDxfWriter * gaiaDxfWriterPtr
Typedef for DXF Writer object.
Definition: gg_dxf.h:665
gaia_dxf_text::z
double z
Z coordinate.
Definition: gg_dxf.h:172
gaia_dxf_insert::hasText
int hasText
boolean flag: contains Text objects
Definition: gg_dxf.h:129
gaia_dxf_text::label
char * label
pointer to Label string
Definition: gg_dxf.h:166
gaia_dxf_parser::is_arc
int is_arc
internal parser variable
Definition: gg_dxf.h:591
gaia_dxf_polyline::last_hole
gaiaDxfHolePtr last_hole
pointer to last Polygon hole [linked list]
Definition: gg_dxf.h:302
gaia_dxf_layer::first_point
gaiaDxfPointPtr first_point
pointer to first DXF Point object [linked list]
Definition: gg_dxf.h:456
gaia_dxf_circle::cx
double cx
Center X coordinate.
Definition: gg_dxf.h:220
gaiaDxfExtraAttr
struct gaia_dxf_extra_attr gaiaDxfExtraAttr
wrapper for DXF Extra Attribute object
gaiaDxfHatchSegmPtr
gaiaDxfHatchSegm * gaiaDxfHatchSegmPtr
Typedef for DXF Hatch Segment object.
Definition: gg_dxf.h:337
gaia_dxf_hatch::offset_x
double offset_x
hatch line offset X
Definition: gg_dxf.h:372
gaia_dxf_parser::curr_circle
gaiaDxfCircle curr_circle
internal parser variable
Definition: gg_dxf.h:617
gaia_dxf_block::is3Dpoint
int is3Dpoint
boolean flag: contains 3d Point objects
Definition: gg_dxf.h:429
gaiaParseDxfFile
GAIAGEO_DECLARE int gaiaParseDxfFile(gaiaDxfParserPtr parser, const char *dxf_path)
Parsing a DXF file.
gaia_dxf_layer::last_polyg
gaiaDxfPolylinePtr last_polyg
pointer to last DXF Polyline (Polygon) object [linked list]
Definition: gg_dxf.h:466
gaia_dxf_parser::curr_end_point
gaiaDxfPoint curr_end_point
internal parser variable
Definition: gg_dxf.h:615
gaia_dxf_parser::last_pt
gaiaDxfPointPtr last_pt
internal parser variable
Definition: gg_dxf.h:625
gaia_dxf_point::x
double x
X coordinate.
Definition: gg_dxf.h:195
gaia_dxf_parser::is_hatch_boundary
int is_hatch_boundary
internal parser variable
Definition: gg_dxf.h:597
gaiaDxfWriteEndSection
GAIAGEO_DECLARE int gaiaDxfWriteEndSection(gaiaDxfWriterPtr dxf)
Writing a DXF Entities Section Header.
gaia_dxf_polyline::is_closed
int is_closed
open (Linestring) or closed (Polygon exterior ring)
Definition: gg_dxf.h:290
gaiaDxfCircle
struct gaia_dxf_circle gaiaDxfCircle
wrapper for DXF Circle object
gaia_dxf_polyline::last
gaiaDxfExtraAttrPtr last
pointer to last Extra Attribute [linked list]
Definition: gg_dxf.h:306