forked from LibreDWG/libredwg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNEWS
580 lines (517 loc) · 26.9 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
GNU LibreDWG NEWS -- history of user-visible changes. -*-indented-text-*-
Copyright (C) 2020 Free Software Foundation, Inc.
See the end for copying conditions.
LibreDWG version 0.11 - planned 2020/06 - beta:
New features:
* new programs dwgfilter, dxfwrite. dwgfilter allows custom jq queries.
dxfwrite allows version conversions, which dwgwrite does not yet supports.
* Can now read all 2004+ section types: added AppInfo, FileDepList,
Template, ObjFreeSpace;
and as blob: RevHistory, Security, AppInfoHistory.
AcDsPrototype_1b datastore not fully yet, so we cannot yet read new ACIS r2013+
SAB blobs stored there.
* Added new string types: T and T16, TU16, T32 (for those sections)
* Convert ACIS BinaryFile v2 SAB to old encrypted ACIS SAT v1 data, needed
to convert pre-r2013 ACIS v2 entities to DXF.
* Added support for many object/entity types:
Now stable: LIGHT, MESH, CELLSTYLEMAP, DYNAMICBLOCKPURGEPREVENTER, GEODATA,
LAYERFILTER, MULTILEADER, PLOTSETTINGS, SECTION_MANAGER, SECTIONOBJECT,
TABLEGEOMETRY, VBA_PROJECT, VISUALSTYLE.
New unstable: ARC_DIMENSION, ASSOCALIGNEDDIMACTIONBODY, LIGHTLIST, MATERIAL,
MENTALRAYRENDERSETTINGS, RAPIDRTRENDERSETTINGS, RENDERSETTINGS, SPATIAL_INDEX,
TABLESTYLE, SECTION_SETTINGS, DETAILVIEWSTYLE, SECTIONVIEWSTYLE, SUN.
Fixed PROXY_OBJECT, PROXY_ENTITY.
Note: Unstable objects are not preserved via DXF conversion.
Debugging classes added (needs --with-debug option):
NURBSURFACE, ATEXT, RTEXT, NAVISWORKSMODEL, ACSH_SWEEP_CLASS,
ACSH_BOX_CLASS, ACSH_BREP_CLASS, ACSH_WEDGE_CLASS, ACSH_EXTRUSION_CLASS,
ACSH_CHAMFER_CLASS, ACSH_FILLET_CLASS, ACSH_LOFT_CLASS,
ACSH_PYRAMID_CLASS, ACSH_SPHERE_CLASS, ACSH_REVOLVE_CLASS,
ACSH_TORUS_CLASS, ACSH_HISTORY_CLASS,
ASSOCEXTRUDEDSURFACEACTIONBODY, ASSOCLOFTEDSURFACEACTIONBODY,
ASSOCREVOLVEDSURFACEACTIONBODY, ASSOCSWEPTSURFACEACTIONBODY,
PERSUBENTMGR, DATALINK, DATATABLE, LAYOUTPRINTCONFIG,
CONTEXTDATAMANAGER, ALDIMOBJECTCONTEXTDATA,
BLKREFOBJECTCONTEXTDATA, FCFOBJECTCONTEXTDATA,
LEADEROBJECTCONTEXTDATA, MLEADEROBJECTCONTEXTDATA,
MTEXTATTRIBUTEOBJECTCONTEXTDATA, MTEXTOBJECTCONTEXTDATA,
TEXTOBJECTCONTEXTDATA, ACMECOMMANDHISTORY, ACMESCOPE,
ACMESTATEMGR, ASSOCGEOMDEPENDENCY, ACDBASSOCGEOMDEPENDENCY,
ASSOCOSNAPPOINTREFACTIONPARAM,
ACDBASSOCOSNAPPOINTREFACTIONPARAM, ASSOCVERTEXACTIONPARAM,
ACDBASSOCVERTEXACTIONPARAM, CSACDOCUMENTOPTIONS, CURVEPATH,
ACDBCURVEPATH, MOTIONPATH, POINTPATH, ACDBPOINTPATH,
TVDEVICEPROPERTIES) BLOCKVISIBILITYGRIP
BLOCKVISIBILITYPARAMETER, BLOCKGRIPLOCATIONCOMPONENT.
* Added support to write r2004+ format DWG's (which includes also r2010,
r2013, r2018, but not r2007), but this does not work fully yet.
* Added new Dwg_Version types: R_1_3 for AC1.3, R_2_4 for AC1001, and
AC1013 for R_13c3.
* The header can now be compiled wth C++ compilers, needed for some bindings.
Re-arranged nested structs, names, malloc casts, reserved keywords like this,
template.
Started with the gambas bindings, a Visual Basic clone for unix.
* DXF and JSON importers now create PLACEHOLDER objects for unsupported
objects.
* 3DSOLID got now material properties and revisionguid fields.
* new API functions:
dwg_ctrl_table, dwg_handle_name, dwg_find_dicthandle_objname, dwg_variable_dict,
dwg_next_entity, get_next_owned_block_entity, dwg_section_name,
dwg_version_type, dwg_version_as, dwg_errstrings, dwg_rgb_palette,
dwg_find_color_index.
* new dynapi functions: dwg_dynapi_subclass_value, dwg_dynapi_subclass_field,
dwg_dynapi_fields_size.
(BTW. the dynapi proved to be a godsend for the json importer)
API breaking changes:
* Renamed dwg_section_type to dwg_section_wtype, added a new dwg_section_type
for ASCII names.
* Removed all extra null_handle fields, and add the missing handle fields.
* Renamed all dwg_add_OBJECT functions to dwg_setup_OBJECT. They didn't add them, just setup
the internal structures.
* Hundreds of field renames due to harmonization efforts with the more generic
JSON importer. Note that some deprecated dwg_api accessor functions were also
renamed accordingly, but not all.
For the stable objects:
TEXT,ATTRIB,ATTDEF,SHAPE,STYLE: oblique_ang => oblique_angle,
DIMENSION_* _13_pt => xline1_pt, _14_pt => xline2_pt,
ext_line_rotation => oblique_angle
DIMENSION_ANG2LN _16_pt => xline1start_pt, _14_pt => xline2start_pt,
_13_pt => xline1end_pt, first_arc_pt => xline2end_pt
VIEW,VIEWPORT: view_direction => VIEWDIR (as it overrides this header),
view_twist => twist_angle,
view_height => VIEWSIZE,
snap_angle => SNAPANG,
view_center => VIEWCTR,
snap_base => SNAPBASE,
snap_spacing => SNAPUNIT,
grid_spacing => GRIDUNIT,
ucs_per_viewport => UCSVP,
ucs_origin => ucsorg,
ucs_x_axis => ucsxdir,
ucs_y_axis => ucsydir,
ucs_ortho_view_type => UCSORTHOVIEW
OLEFRAME.data_length => data_size,
LEADER.offset_to_block_ins_pt => inspt_offset
TOLERANCE.text_string => text_value
STYLE.vertical => is_vertical, shape_file => is_shape, fixed_height => text_size,
extref => xref
COMMON_TABLE_FIELDS: xrefref => is_xref_ref, xrefindex_plus1 => is_xref_resolved,
xrefdep => is_xref_dep. new common xref HANDLE field (was null_handle in many objects)
LAYER got a new visualstyle handle.
LTYPE.dashes got a new style handle and text field.
LTYPE has no styles H* anymore, moved to dashes.
LTYPE.text_area_is_present => has_strings_area, extref_handle => xref.
VIEW, VIEWPORT:
height => VIEWSIZE, width => view_width, center => VIEWCTR, target => view_target,
direction => VIEWDIR, front_clip => front_clip_z, back_clip => back_clip_z,
pspace_flag => is_pspace,
origin => ucsorg, x_direction => ucsxdir, y_direction => ucsydir,
elevation => ucs_elevation, orthographic_view_type => UCSORTHOVIEW,
camera_plottable => is_camera_plottable
UCS got a new orthopts array, and the renames as above.
DIMSTYLE got a new flag0. flag is computed from that.
VPORT_ENTITY_HEADER flag1 => is_on, vport_entity => viewport, xref_handle => xref,
new prev_entity handle.
MLINESTYLE index/ltype union changed to seperate lt_index, lt_ltype fields.
They were overwriting each other on version conversions.
MLINESTYLE.desc => description, data_length => data_size.
HATCH booleans got a is_ prefix.
XRECORD.num-databytes => xdata_size
MLEADERSTYLE text_frame => is_text_frame, is_new_format removed.
changed => is_changed.
DICTIONARYYWDFLT got a new format_flags and data_handle
SCALE.has_unit_scale => is_unit_scale
SORTENTSTABLE.dictionary => block_owner
Type changes in stable objects:
SPLINE.fit_pts are now ordinary BITCODE_3DPOINT*
SPLINE.color is BL, scale is now 3BD
Major bugfixes:
* Fixed converting ASCII from and to Unicode strings, when converting across
versions. Embed Unicode as \U+XXXX into ASCII, and decode it back to Unicode.
Honor dat,dwg->from_version and use the new FIELD_T as seperate type. (#185)
* Invalid numbers (read failures) are converted to 0.0 in the released version.
* Fixed wrong CMC color reads and writes, check the method, lookup the index,
support a CMTC truecolor-only type.
* Fixed EED writes, by writing to seperate streams and merging them at the end,
with proper size calculation.
Minor bugfixes:
* Fixed uncompressed sections overflows, some fuzzed (#183), some
with the new sections.
* Normalize extrusion vectors.
* Fix bit_write_BT, the thickness vector pre-R2000.
* Added many overflow checks, due to extensive fuzzing campains.
* Fixed wrong julian date conversions with TIMEBLL types.
* Fxed keyword conflicts with the bindings: No next, from, self fieldnames.
* Many more, see the ChangeLog.
Other newsworthy changes:
* Harmonized 2004 section search with the better 2007 variant. Added a new
section and info fixedtype field.
* Added unit-tests for all supported objects.
* Added src/classes.c defining the class stability (stable, unstable, debugging, unhandled).
* Need now -lm, the system math library, in all cases.
* Got a complete collection of old DWGs to cross-check against. Many new object types
could be stabilized because of this.
* CMC color got 2 new fields: raw (EMC only), method (the first rgb byte).
LibreDWG version 0.10.1 - released 2020/01/13 - beta:
Major bugfixes:
* Fixed dwg2SVG htmlescape overflows and off-by-ones (#182)
* Removed direct usages of fprintf and stderr in the lib. All can be
redefined now. (#181)
Minor bugfixes:
* Fuzzing fixes for dwg2SVG, dwgread. (#182)
* Fixed eed.raw leaks
LibreDWG version 0.10 - released 2020/01/08 - beta:
API breaking changes:
* added a new int *isnewp argument to all dynapi utf8text getters,
if the returned string is freshly malloced or not.
* removed the UNKNOWN supertype, there are only UNKNOWN_OBJ and UNKNOWN_ENT
left, with common_entity_data.
* renamed BLOCK_HEADER.preview_data to preview, preview_data_size to preview_size
* renamed SHAPE.shape_no to style_id
* renamed CLASS.wasazombie to is_zombie
Major bugfixes:
* Improved building the perl5 binding, proper dependencies.
Set proper -I and -L paths, create LibreDWG.c not swig_perl.c
* Harmonized INDXFB with INDXF, removed extra src/in_dxfb.c (#134).
Slimmed the .so size by 260Kb. Still untested though.
* Fixed encoding of added r2000 AUXHEADER address (broken since 0.9)
* Fixed EED encoding from dwgrewrite (a dxf2dwg regression from 0.9) (#180)
Minor bugfixes:
* Many fuzzing and static analyzer fixes for dwg2dxf, dxf2dwg, dwgrewrite,
including a stack-overflow on outdxf cquote. (#172-174, #178, #179).
dwgrewrite and indxf are pretty robust now, but still highly experimental,
as many dxf2dwg import and DWG validity tests are missing.
indxf still has many asserts on many structural DXF errors.
* Protect indxf from many NULL ptr, overflows and truncation.
* Fixed most indxf and encode leaks. (#151)
* More section decoders protections from invalid (fuzzed) values.
* Stabilized the ASAN leak tests for make check.
* Fix MULTILEADER.ctx.lline handles <r2010
* Fix indxf color.alpha; at DXF 440
* Fixed most important make scan-build warnings, the rest are mostly bogus.
Other newsworthy changes:
* Added LIBREDWG_VERSION et al to include/dwg.h
* Added support for AcDb3dSolid history_id (r2007+)
* Improved the indxf speed in new_object. Do a proper linear search, and
break on first found type.
* Rename the ./dxf helper to ./dwg, and added a ./dxf test helper.
* dxf2dwg got a new experimental --force-free option to check for leaks and
UAF or double-free's.
* Allow -o /dev/null sinks for dxf2dwg and dwg2dxf, for faster fuzzing.
* Harmonized *.spec formatting and adjusted gen-dynapi.pl
* Harmonized out_dxfb with out_dxf, e.g. the new mspace improvements (#173).
LibreDWG version 0.9.3 - released 2019/12/25 - beta:
Minor bugfixes:
* Added several overflow checks from fuzzing (#176)
CVE-2019-20009, CVE-2019-20010, CVE-2019-20011, CVE-2019-20012,
CVE-2019-20013, CVE-2019-20014, CVE-2019-20015
* Enabled AX_RESTRICT, undefining restrict in broken compilers (#141)
* Fixed AX_ADD_FORTIFY_SOURCE warnings with gcc-9 -Wcpp
* Disallow illegal SPLINE scenarios (#176)
LibreDWG version 0.9.2 - released 2019/11/08 - beta:
new API:
* Added the -x,--extnames option to dwglayers for r13-r14 DWGs,
displaying the extended variants with spaces. Since r2000 only
those "extended" names are stored. (#167)
Minor bugfixes:
* Fixed some leaks: SORTENTSTABLE, PROXY_ENTITY.ownerhandle for r13.
* Add DICTIONARY.itemhandles[] for r13 and r14
* Fixed some dwglayers null pointer derefs, and flush its output
for each layer. (#166)
Other newsworthy changes:
* Add geom utils to some programs: dwg2SVG and dwg2ps to transcode
points via its OCS (i.e. extrusion vector)
* Add basic POLYLINE_2D and LWPOLYLINE support to dwg2SVG. no arcs (bulges),
no other curve_types (spline, bezier), no widths.
LibreDWG version 0.9.1 - released 2019/10/28 - beta:
Minor bugfixes:
* Fixed bit_read_4BITS, off-by-one for the first bit.
* Fixed more null pointer dereferences, overflows, hangs and memory leaks
for fuzzed (i.e. illegal) dwg's.
* Fixed some more compiler warnings.
* Workaround stricter CPU's with ALIGNED_ACCESS_REQUIRED.
* Add -fstack-protector for newer mingw, to link -lssp, which is now mandatory
for _FORTIFY_SOURCE (a mingw-w64 libc headers bug).
* Do not use gcc-9.0 - gcc-9.2! This series is seriously broken, not
just for this project.
* dwg2SVG: honor TTF font styles => Verdana or Courier (#156)
LibreDWG version 0.9 - released 2019/10/6 - beta:
new API:
* Added the dxf importer, using the new dynapi and the r2000 encoder.
Status: experimental. Only for r2000 dxf's yet.
* Added utf8text conversion functions to the dynapi:
dwg_dynapi_header_utf8text, dwg_dynapi_entity_utf8text,
dwg_dynapi_common_utf8text converting unicode strings to UTF-8.
And it's higher level variants: dwg_{g,s}et_HEADER_utf8text,
dwg_{g,s}et_{ENTITY,OBJECT}_common,
dwg_{g,s}et_{ENTITY,OBJECT}_common_utf8text,
dwg_ent_{g,s}et_UTF8.
* Added the missing dwg_dynapi_common_set_value.
* Added dwg_dynapi_handle_name helper.
* Added to unstable objects: TABLESTYLE, TABLE.
TABLE r2018+ now includes TABLECONTENT.
* Added SummaryInfo section.
* Added 3DSOLID encoder.
* Added API's to find handles for names, searching in tables and dicts.
* Added TIMERLL type. raw, unencoded 2xRL julian date, for SummaryInfo.
* Added signed d variants to some types: BLd, BSd, RLd, ...
and x formatters: RLx.
* Added reverse dxf_revcvt_lweight().
API breaking changes:
* Added an is_utf8 arg to the dynapi setters:
dwg_dynapi_header_set_value, dwg_dynapi_entity_set_value,
dwg_dynapi_common_set_value, converting UTF-8 strings to TV or TU.
* Generalize object handles:
* Rename common field ownerhandle, esp. not NAME_control 330.
* Remove various null_handle fields.
* Rename LTYPE.null_handle to LTYPE.extref_handle
* Add SORTENTSTABLE.dict_handle (previous called ownerhandle,
it IS the ownerhandle. ok, there we do have both, the parenthandle
and the ownerhandle)
* Remove xrecord,proxy get_ownerhandle API
* Move ownerhandle to parent Object_Object along reactors and xdicobjhandle.
This field is common to all objects. (#118)
* Remove unneeded ownerhandle fields.
* Renamed STYLE.null_handle to STYLE.extref_handle
* Changed DIMASSOC spec
* Minor POLYLINE/VERTEX field fixups for DXF. add COMMON_ENTITY_POLYLINE.has_vertex 66,
add VERTEX_PFACE_FACE.flag 70.
* Renamed two LAYOUT fields: pspace_block_record => block_header,
last_viewport => active_viewport.
* Harmonize DICTIONARY_NAMED_OBJECT (NOD) names:
LAYOUTS => LAYOUT, PLOTSTYLES => PLOTSTYLENAME, MATERIALS => MATERIAL,
COLORS => COLOR.
* Renamed all linetype* fields to ltype.
* Removed IMAGE/WIPEOUT boundary_pt{0,1} fields. Use clip_verts[0,1] instead.
Important bugfixes:
* Fixed all remaining null pointer dereferences and memory leaks. We added
a smoke with asan, ubsan and lsan. Only the dxf importer is leaking.
* Fixed dwg_dynapi_common_*
* Fixed get_next_owned_entity, which omitted the last entity for r13-r2000.
(#143)
* Fixed the UCS-2 to utf-8 converter, causing corrupt DXF with unicode names
and strings. (#143)
* Fixed wrong object address (#112). handlestream_size is not part of obj->size.
This fixes the hdlpos += 8 FIXME's and many handles.
* Fixed FIELDLIST standard handles (#118)
* Fixed FIELD.childs and objects (#117)
* Fixed MLINESTYLE.ltype handles (#116)
* Fixed MULTILEADER content_block (#113)
* Added many missing handles 2007+ (#115)
Due to the fixed handle_stream offset, we can now reliably read many
more handles (#114):
DIMENSION_ORDINATE
DIMENSION_LINEAR
DIMENSION_ALIGNED
DIMENSION_ANG3PT
DIMENSION_ANG2LN
DIMENSION_RADIUS
DIMENSION_DIAMETER
MTEXT
BLOCK_CONTROL
STYLE
SORTENTSTABLE
APPID
DICTIONARYVAR
VPORT_ENTITY_HEADER
* Fixed OLE2FRAME encoder.
* Fixed EED code 5 as int64 (#110)
* More stable eed decoder with overflow, e.g. when dat does not advance error earlier.
Avoid endless loops on eed decoding errors.
* Various minor improvements in the dxf writer. (#143)
* Major improvements in the dxf reader. Most r2000 entities and many objects
can be imported, and read from acad dwg's.
* Various minor improvements in the dwg writer, esp. calculating the object
size and bitsize. fixed bit_write_4BITS (for VPORT.VIEWMODE)
* Protect all sizes from VALUEOUTOFBOUNDS with sensical values.
(i.e. new size restrictions)
Other newsworthy changes:
* Restricted the three dat, hdl_dat and str_dat streams in its size and
offset to the current object to detect every overflow. And report this
overflow.
* Read COMMON_ENTITY_HANDLE_DATA earlier, so that we can remove extra 2nd
handle loops at the end for r2007+ (#85)
* Support reading uncompressed sections (e.g SummaryInfo)
* Added -y/--overwrite flag to most programs.
* Better LOG_TRACE [rcount1], [rcount2] logging, expanded to the actual
index.
* Removed the dejagnu based test/testcases, merged with proper
test/unit-testing
* With the new dxf importer, a lot of logic had to be added for missing fields,
calculating them, adding defaults, and support dxfname aliases.
* Harmonized internal REPEAT macro names.
* Added decode code to recover from invalid HANDLES handleoff UMC or offset MC.
LibreDWG version 0.8 - released 2019/6/25 - still alpha:
new API:
* added a new dynamic API, read and write all header and object fields
by name. Many of the old dwg_api.h field accessors are deprecated.
* add calculated DIMENSION.flag from flag1 and flag2
* add BITCODE_UMC type for Object-map section_handles
* add reverse dwg_find_objectref lookup: linear search, only done for
entities with subentities to find the ref for the current object.
* added to stable: UNDERLAY entities, UNDERLAYDEFINITION, CAMERA objects
API breaking changes:
* rename get_first_owned_object to get_first_owned_entity,
get_next_owned_object to get_next_owned_entity.
* Changed these iterators in handling subentites (VERTEX, ATTRIB),
these are now skipped.
* rename <TABLE>.entry_name to name (#76)
* rename VPORT.shade_plot_handle back to sun_handle, dxf 361
* rename POLYLINE_3D.flag2 to curvetype, dxf 75.
* rename linewidth fields to linewt (#79)
* rename DIMENSION_ORDINATE.ucsorigin_pt to def.pt
* rename parenthandle fields to ownerhandle (#80)
* rename ent->parent to ent->ownerhandle (#82)
* replace ENTITY.subentity by ownerhandle 330
* rename _ent->entity_mode to entmode (as in ODA)
Important bugfixes:
* dwg.h now always includes stdint.h and inttypes.h, no more
int vs int32_t confusion
* Fixed many errors in DXF output:
* split BLOCKS and ENTITIES (#88)
esp. in respect to Paper_Space (#81) and Model_Space entities.
* DICTIONARY: fix hard_owner DXF 350/360.
* Fix xdata dxf groups: +1000 or XRECORD.
* Fix block names (#81), take it from its linked BLOCK entity
* Fix DIMENSION blocknames, ditto (#81).
* Fix c-quote of strings with different quoting rules than json.
* Fix _3DSOLID,_3DFACE dxfname and 3DSOLID, BODY subclass names
* Add missing DIMSTYLE 3 handle
* Support DXF elevation and extrusion as pt,
* Add dxf.test to be shell compatible
* convert CELWEIGHT and linewt values (#79)
* Support proper 330 ent->parent->handle (#82) which is not always the
MSPACE record.
* fix colors a bit
* print HANDSEED as hex (#71)
* Fixed JSON output, add tests with jq. just not yet via pipes (NOCOMMA hack).
make HEADER a hash, better ARRAY, POINTS, VECTORs, c-quote strings.
Resemble more to the DWG structure, not DXF: Rename ENTITIES to OBJECTS,
TODO: FILEHEADER sections (#76)
* Validate decoded and sort DXF output of entities with subentities
(POLYLINE, INSERT) (#83). In DWG they have different orderings,
fixup some off-by-one decoding errors (e.g. wrong handle stream offset).
* Fixed HATCH gradientfill color (#89)
* decode: set proper ->dxfname from classes.inc, Fixes ACDBDICTIONARYWDFLT
DXF object and simplifies out_dxf.
* Fix some CRC checks: RSx vs RS_LE, add unused crc64 code.
* More overflow and free protections added by Denis Pruchkovsky
* Extend read/write bit_MC/UMC from 4 to 5 bytes (denis #70, PR #65)
This is broken in all other dwg libraries.
* Fix bit_convert_TU for >U+800 (#80)
* Fixed more memory leaks (denis and rurban)
* Fixed some double-free's and oob errors in EED (#99, #104)
Other newsworthy changes:
* add --disable-bindings configure switch (#86)
* add more codepages to dxf: ANSI_1253, ANSI_1254, ANSI_936, ANSI_949
* add cirrus FreeBSD smoker
* rename dxf_example.{lsp,sh} to dxf-allcvt.*
* add dxf-roundtrip.sh, via TeighaFileConverter
LibreDWG version 0.7 - released 2018/12/6 - still alpha:
new API:
* add dwg_get_OBJECT(dwg) API for all objects in a DWG.
analog to dwg_get_ENTITY, but including all objects, tables,
block headers, even if unowned.
Note that the dwg_api will be revamped from static to dynamic before 1.0.
field accessors will be by name argument and ... (va_args)
See the work/dynapi branch #59 (in progress).
dwg_get_OBJECT(dwg) will be renamed to dwg_getall_OBJECT(dwg),
dwg_get_ENTITY(blkhdr) to dwg_getall_ENTITY(blkhdr).
API breaking changes:
* Changed BITCODE_RC from signed to unsigned char (#44)
* LEADER changes: rename hooklineonxdir to hookline_dir,
rename unknown_bit_4 to hookline_on,
endptproj only until r2007. (but still not 100% correct)
* MULTILEADER changes: rename num_vertex to numpts (analog to LEADER),
change vertex to points[] (PR #49 Denis Pryt)
* Fixed dwg_get_ENTITY(hdr): NULL-terminate the result (#60)
Important bugfixes:
* Fixed all memory leaks and double-free's (#43, #42, PR #58 Denis Pryt)
* Fixed EED sizes (PR #48, Denis Pryt)
* Fixed BLOCK_HEADER.num_inserts, esp. with xref's (#44).
For decode and encode.
* Fixed LTYPE.dash (#44)
* Fixup LEADER DXF values and path_type with annot_type mixup.
* Fixed TABLE.value.data_type with flags kGeneral (#54 Denis Pryt)
* Fixes VECTOR_CHKCOUNT segfault on unassigned obj->dxfname's
(esp. for <=R12), and fix overflows (#56)
* dwglayers: fix for DICTIONARY breaking the list output (#51)
* dxf: fix dxf_blocks_write for empty paper_space (#52)
* Fixed example/load_dwg.py allowing non-critical error codes
Other newsworthy changes:
* Check for RUNNING_ON_VALGRIND and call dwg_free then, even
if previously skipped.
* Renamed all remaining API "null malloc" error messages to
"Out of memory"
* Harmonized in_dxfb with in_dxf, but still WIP
LibreDWG version 0.6.2 - released 2018/11/07 - still alpha:
Important bugfixes:
* Fixed several out_dxf segfaults (#39)
* Enhanced the section size limit from 2032 to 2040.
There were several DWG files with a section size of 2035
in the wild. (PR #41, Denis Pryt)
* Fixed EED realloc on decoding when end - dat->byte == 1
(PR #41, Denis Pryt)
LibreDWG version 0.6.1 - released 2018/11/05 - still alpha:
Important bugfixes:
* fix wrong FIELD_2DD_VECTOR in dwg decode (#40).
LibreDWG version 0.6 - released 2018/08/13 - still alpha:
API breaking changes:
* Removed dwg_obj_proxy_get_reactors(), use dwg_obj_get_reactors() instead.
* Renamed SORTENTSTABLE.owner_handle to SORTENTSTABLE.owner_dict.
* Renamed all -as-rNNNN program options to --as-rNNNN.
Other newsworthy changes:
* Removed all unused type-specific reactors and xdicobjhandle fields,
use the generic object and entity fields instead.
* Added signed BITCODE_RLd and BITCODE_BLd (int32_t) types.
* Added unknown_bits field to all UNSTABLE/DEBUGGING classes.
* Custom CFLAGS are now honored.
* Support for GNU parallel and coreutils timeout logfile and picat processing.
Important bugfixes:
* Fixed previously empty strings for r2007+ for some objects and entities (#34).
* Fixed r2010+ picture size calculation (DXF 160, 310), leading to wrong entity offsets.
* Added more checks for unstable objects: empty handles, controls, overflows, isnan.
* Fixed some common_entity_data, mostly with non-indexed colors and gradient filled HATCH
(#27, #28, #31)
* Fixed some proper relative handles, which were previously treated as NULL handle.
* Fixed writing TV strings, now the length includes the final \0 char.
* Fixed the initial minimal hash size, fixing an endless loop on very small
(truncated) DWG's (<1000 bytes).
* Much less memory leaks.
* Improved free, i.e. no more double free with EED data. (#33)
* Better perl bindings build support on Windows, prefer local dwg.h over
installed dwg.h on testing (#29).
* Fixed dejagnu compilation on C11 by using -fgnu89-inline (#2)
New features:
* Added unstable support for the objects ASSOCDEPENDENCY, ASSOCPLANESURFACEACTIONBODY,
DBCOLOR, DIMASSOC, DYNAMICBLOCKPURGEPREVENTER, HELIX, LIGHT, PERSSUBENTMANAGER,
UNDERLAYDEFINITION and the entities MULTILEADER, UNDERLAY.
* Added getopt_long() support to all programs, position independent options.
* Implemented examples/unknown to find field layouts of unknown objects.
With bd and bits helpers to decode unknowns.
Now with a http://picat-lang.org helper. See also HACKING and savannah News.
* Implemented parsing ACIS version 2 to the binary SAB format.
* Added all missing dwg_object_to_OBJECT() functions for objects.
* Added dwg_ent_minsert_set_num_cols(), dwg_ent_minsert_set_num_rows()
* Added --disable-dxf, --enable--debug configure options. With debug there are many
more unstable objects available.
* Added libredwg.pc (#30)
* Added valgrind supressions for known darwin/glibc leaks.
* Changed and clarified the semver version numbering on development checkouts with
major.minor[.patch[.build.nonmastercommits-gittag]]. See HACKING.
LibreDWG version 0.5 - released 2018/07/05:
This is the first public release ever, after several years of silence.
It can read most r13-r2018 DWG files, and write r2000 DWG,
write DXF and GeoJSON files for all versions.
There are also many new programs: dwgread, dwgwrite, dwgrewrite,
dwg2dxf, dwglayers, dwggrep, dwgbmp, dwg2SVG (very basic), dwg2ps (infancy).
See the manual, ChangeLog or git history for details.
The API is usable but still pretty rough, we might still rename
some functions or names for better consistency and add more encoding API.
Copyright information:
Copyright (C) 2009-2019 Free Software Foundation, Inc.
This library is free software, licensed under the terms of the GNU
General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.