94aafc0c962648cb0326ad3153764d718f6ac147
[adg.git] / docs / adg / NEWS.xml
blob94aafc0c962648cb0326ad3153764d718f6ac147
1 <?xml version="1.0"?>
2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3                          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
5 <chapter id="NEWS">
6 <title>News archive</title>
7 <subtitle>Summary of changes between releases</subtitle>
9 <simplesect id="NEWS.0.7.4">
10 <title>ADG 0.7.4</title>
12 <para>Improved documentation: the API reference manual is now kept in
13 sync with the <ulink url="http://adg.entidi.com/">online documentation</ulink> by
14 using a dedicated <ulink url="http://gtkdoc.entidi.com/">SilverStripe module</ulink>.
15 This really simplifies the maintenance burden of the doc.</para>
17 <para>A bug that was preventing the correct finalization of the returned
18 cairo path from GObject introspection bindings has been corrected.</para>
19 </simplesect>
21 <simplesect id="NEWS.0.7.3">
22 <title>ADG 0.7.3</title>
24 <para>The compatibility of the project with outdated systems has been
25 improved in order to be able to install it on old web servers.</para>
27 <para>Compilation without GTK+ support has been tested: the canvas is now
28 properly working on a server without X server installed.</para>
29 </simplesect>
31 <simplesect id="NEWS.0.7.2">
32 <title>ADG 0.7.2</title>
34 <para>Out of the box bindings are now fully working: the adg-demo
35 program provided by <ulink url="http://adg.entidi.com/lua/">adg-lua</ulink> is
36 in par with the official adg-demo in C.</para>
38 <para>AdgDress is inherited from GEnum instead of being a handcrafted
39 solution. A lot of specialized code have been removed, so the
40 mapping between numbers and names in bindings is automatic.</para>
42 <para>Consistency in widget names has been improved, allowing to
43 simplify signal connections on the Lua side.</para>
44 </simplesect>
46 <simplesect id="NEWS.0.7.1">
47 <title>ADG 0.7.1</title>
49 <para>Out of the box support for <ulink url="http://github.com/pavouk/lgi/">LGI</ulink>
50 (dynamic Lua bindings based on GObject introspection) is now
51 provided upstream and effectively used for testing APIs. The
52 introspection support has been improved, some APIs (AdgPoint
53 related methods above all) have been protected against NULL and
54 some bugs raised by the bindings work have been corrected.</para>
56 <para>The GBoxed wrappers for cairo structs such as cairo_matrix_t have
57 been dropped in favor of the native support provided by the
58 cairo-gobject library.</para>
60 <para>GObject wrappers for CPML structs such as pairs, primitives and
61 segments has been moved to CPML itself. This makes redundant the
62 presence of wrappers on the ADG side, simplyfing the work for the
63 language bindings.</para>
64 </simplesect>
66 <simplesect id="NEWS.0.7.0">
67 <title>ADG 0.7.0</title>
69 <para>The autoscaling feature is now available: a series of predefined
70 scale factors are applied until the proper one is found. The demo
71 program autoscales the drawing on a right click on the drawing
72 area and restores the paper zoom and position on a left click.</para>
74 <para>The introspection support has been improved, making it possible
75 to have LGI (Lua) bindings working out of the box. The typedef
76 hack has been dropped in favor of a private forwarder header.</para>
78 <para>The dash pattern of AdgLineStyle can now be customized by binding
79 to it an AdgDash instance.</para>
80 </simplesect>
82 <simplesect id="NEWS.0.6.6">
83 <title>ADG 0.6.6</title>
85 <para>The project has been ported to GTK+3 also on Windows platforms.
86 The helper scripts now build only GTK+3 installers.</para>
88 <para>The recent porting of Fedora mingw packages to archlinux made
89 possible to generate for the first time a win64 installer.</para>
91 <para>adg-demo now embeds icons of different sizes, ranging from 16x16
92 to 128x128 pixels. The look-up falls back to srcdir so the icons
93 can be used also without installing the program. A bunch of new
94 APIs has been added to help this relocation.</para>
96 <para>The Windows installers received a lot of cosmetic improvements.
97 The NSIS code has been cleaned up.</para>
98 </simplesect>
100 <simplesect id="NEWS.0.6.5">
101 <title>ADG 0.6.5</title>
103 <para>Some missing documentation files that prevented the proper build
104 adg-0.6.4 have been included in the distribution package.</para>
105 </simplesect>
107 <simplesect id="NEWS.0.6.4">
108 <title>ADG 0.6.4</title>
110 <para>The Lua bindings, based on lgob, are now available as a separate
111 project (adg-lua). The glue code is automatically generated
112 using GObject introspection.</para>
114 <para>The build system can detect and use GTK+3 and gladeui-2.0 when
115 found. GTK+2 and gladeui-1.0 are still availables and can be forced
116 at configure time.</para>
118 <para>The rendering of AdgRDim has been enhanced: when the "outside"
119 property is enabled, the leader line will extend beyoud the arc to
120 quote for a styleable distance, and the marker will be reveresed.</para>
122 <para>The best text frontend is selected at configure time. When pango
123 is available, it will be preferred over the cairo toy text APIs.</para>
124 </simplesect>
126 <simplesect id="NEWS.0.6.3">
127 <title>ADG 0.6.3</title>
129 <para>The text manipulation logic has been moved inside the AdgTextual
130 interface and a new entity based on pango (AdgText) has been added.
131 Also AdgToyText implements AdgTextual so all the text entities are
132 now interchangeable.</para>
134 <para>The demo program has a new dialog page that allows to customize
135 the title block of the drawing. The zoom hints have been moved
136 outside the paper so the drawing can be considered finalized.</para>
138 <para>The CPML library has its own test framework. Anyway tests have
139 been improved generally so it is now possible to generate a
140 report by using "make test-report".</para>
142 <para>The missing extents computation on AdgRDim, AdgADim and AdgArrow
143 are now in place. By calling adg-demo with the -E option it
144 is possible to visually verify the extents status.</para>
146 <para>A bunch of bugs, most notably the wrong glade catalogdir detection
147 and some extents computation, have been resolved.</para>
148 </simplesect>
150 <simplesect id="NEWS.0.6.2">
151 <title>ADG 0.6.2</title>
153 <para>The localization infrastructure has been added and tested by adding
154 the italian translation.</para>
156 <para>The AdgGtkArea widget is now capable of interactively change zoom
157 and pan in global space by dragging and/or rotating the wheel while
158 keeping the shift pressed.</para>
160 <para>A new class has been implemented: AdgGtkLayout is an AdgGtkArea
161 based widget that implements the scrolling natively, hence it can
162 be added directly to a GtkScrolledWindow container.</para>
163 </simplesect>
165 <simplesect id="NEWS.0.6.1">
166 <title>ADG 0.6.1</title>
168 <para>The canvas now has printing support when compiled with GTK+ enabled.
169 The media setup can be associated to the canvas so this data can be
170 accessed to provide a consistent behavior between different backends.</para>
172 <para>The demo program can now render the drawing to an SVG file.
173 Generated files are stored in the user document directory.</para>
175 <para>Uncomplete entities now fail gracefully instead of complaining for
176 insufficient data. This provides an easy way to implement optional
177 machinings: the optional groove in the adg-demo program is working
178 by leveraging this feature.</para>
179 </simplesect>
181 <simplesect id="NEWS.0.6.0">
182 <title>ADG 0.6.0</title>
184 <para>The portability of the build system has been improved: the ADG project
185 now builds out of the box on FreeBSD, OpenSolaris, MinGW32 and GNU/Linux.</para>
187 <para>The adg-demo program has been rewritten almost from scratch to provide
188 a nice example of what the ADG should be used for. The rendering has
189 been cleaned up and the model-view interaction now works: changing the
190 data on the edit dialog changes the drawing (this is what the ADG has
191 been developed for). The GTK+ widget, although not shining, is fairly
192 usable and light years ahead of the previous version.</para>
194 <para>The canvas now has custom paddings and margins, a background dress and
195 the ability to accept an AdgTitleBlock entity.</para>
197 <para>The project tree has been rearranged in three different subprojects:
198 CPML (mathematical stuff above cairo), ADG (the canvas above CPML) and
199 ADG-GTK (user interface helpers above ADG and GTK+).</para>
201 <para>Support for glade-3 has been added: if enabled, ADG-GTK will try to
202 install its catalog in the proper glade directory.</para>
203 </simplesect>
205 <simplesect id="NEWS.0.5.6">
206 <title>ADG 0.5.6</title>
208 <para>The build system has done a huge step toward portability: the
209 requirements are less restrictive and the overall implementation
210 is cleaner and well defined.</para>
212 <para>The API has been exercised by API-Sanity-Autotest that helped to
213 discover some problems: check out issue #23 for details.</para>
215 <para>A test framework based on glib-2.16 has been added. It is still
216 under development but yet fully working.</para>
218 <para>The CPML API has been cleaned up by using an internal struct of
219 function pointers to delegate the job to the different primitives.
220 The public symbols of the CPML library have been reduced from 105
221 to 70.</para>
222 </simplesect>
224 <simplesect id="NEWS.0.5.5">
225 <title>ADG 0.5.5</title>
227 <para>The quote of linear dimensions can be freely positioned using the
228 AdgDim:pos property. By default, ADG keeps the quote inside the
229 extension lines if there is enough room, otherwise displaces it
230 to the "pos" coordinates.</para>
232 <para>A document describing how to contribute to the project has been
233 added. A general description of the API conventions used by is
234 also provided.</para>
236 <para>A lot of bug fixing and code clean up. A bug in the installation
237 has been solved and support for pkg-config has been added. This
238 will probably be the last release of the 0.5 branch.</para>
239 </simplesect>
241 <simplesect id="NEWS.0.5.4">
242 <title>ADG 0.5.4</title>
244 <para>AdgTable now provides a generic tabular entity customizable with
245 AdgTableStyle. It supports unlimited rows with independent cells.</para>
247 <para>Some new special entities, such as AdgLogo (the official ADG logo)
248 and AdgProjection (showing the drawing projection scheme) have
249 been implemented.</para>
251 <para>A bare title block entity, AdgTitleBlock, is now available: it is
252 allowed to set its cells content either by using string values or
253 custom entities.</para>
255 <para>AdgAlignment is a new container entity that allows to traslate its
256 children of a custom factor of the children boundary box: any
257 entity can now be right aligned or centered.</para>
258 </simplesect>
260 <simplesect id="NEWS.0.5.3">
261 <title>ADG 0.5.3</title>
263 <para>AdgRDim, a new entity to quote radial dimensions, is now available.</para>
265 <para>A bunch of new classes to manage hatches have been implemented.
266 Specifically, AdgHatch is the entity to be added to the canvas,
267 AdgFillStyle a generic abstract class that wraps cairo_pattern_t
268 and AdgRuledFill the AdgFillStyle implementation to fill an hatch
269 with a serie of parallel lines with custom spacing and angle.</para>
271 <para>The AdgModel now supports named pairs, that is any coordinates
272 can be set explicitely (as before) or as a reference to a pair
273 set by the model. The AdgPoint helper class is the object used
274 to manage this relationship. The API of dimension entities has
275 been updated to accept AdgPoint instead of plain AdgPair.</para>
276 </simplesect>
278 <simplesect id="NEWS.0.5.2">
279 <title>ADG 0.5.2</title>
281 <para>AdgADim, a new entity to quote angular dimensions, is implemented.</para>
283 <para>The linear dimensions now accept the "outside" property to reflect
284 the arrows around the extension lines. The default value of this
285 property is ADG_THREE_STATE_UNKNOWN, meaning it will be computed at
286 runtime, depending on quote size and available space.</para>
288 <para>The new AdgEdges model can now be used to programmatically build a
289 serie of vertical lines expressing the edges of another model. This
290 can be used on symmetrical shapes, often met in turned parts.</para>
292 <para>The entities now actively respond to extents requests: it is possible
293 to know the necessary space before rendering them. Any matrix change
294 now emits specific signals to fulfill this requirement.</para>
295 </simplesect>
297 <simplesect id="NEWS.0.5.1">
298 <title>ADG 0.5.1</title>
300 <para>The new AdgMarker abstract class has been added to provide a common
301 ancestor to marker entities. AdgArrow (a filled arrow) is its first
302 renderable implementation.</para>
304 <para>The rendering customization is now provided by AdgDress, an index that
305 virtualizes the underlying AdgStyle and derived instances. This allows
306 some advanced operation, such as overriding a style in a specific branch
307 of the entity hierarchy. The deprecated AdgContext class has been removed.</para>
309 <para>The AdgPath class has been splitted in AdgTrail and AdgPath. The former
310 provides low level access to CpmlPath, allowing the implementation of
311 paths that do not fit in the global/local model. AdgLDim internally
312 uses a private AdgTrail to implement base and extension lines rendering.</para>
313 </simplesect>
315 <simplesect id="NEWS.0.5.0">
316 <title>ADG 0.5.0</title>
318 <para>The old paper-model matrix approach has been superseded by a cleaner and
319 smarter approach based on global/local maps. This resulted in a great
320 code complexity reduction: check out the home page for further details.</para>
322 <para>Parent-child relationship is no more tied to AdgContainer: dependencies
323 between AdgEntities can now be expressed without a full-fledged container.</para>
325 <para>AdgDim now uses internally four AdgToyText entities to render the quote.
326 This has been made possible by the new parent-child APIs, simplyfing the
327 rendering code a lot.</para>
329 <para>A bunch of classes, most notably AdgRotable, AdgTranslatable and AdgPoint,
330 have been superseded by the new global/local map approach and have been
331 removed from the project.</para>
332 </simplesect>
334 <simplesect id="NEWS.0.4.3">
335 <title>ADG 0.4.3</title>
337 <para>Higher level operators, such as chamfer and fillet, can now be used
338 in the path definition. They do not work yet for Bézier curves but
339 the infrastructure is in place.</para>
341 <para>A Gtk+ widget for easily showing the canvas has been implemented. It
342 is based on GtkDrawingArea and provides some interaction throught the
343 mouse, such as zooming and panning. It is not viable for serious work
344 but it is funny to use and opened to improvements.</para>
346 <para>The CPML library has been enriched with the missing functions
347 needed by the above new features. Now it has a ..._length() and
348 ..._near_pos() families of functions. The mathematic behind this
349 library is far from complete: the overall design is quite stable
350 but there are a lot of placeholders, especially when curves were
351 involved.</para>
352 </simplesect>
354 <simplesect id="NEWS.0.4.2">
355 <title>ADG 0.4.2</title>
357 <para>The work on model-view separation has been started: the AdgModel
358 abstract class is now in place. Above this class, the new AdgPath
359 model is derived, providing a full set of APIs to construct paths
360 from scratch. Also, AdgPath gives full access the model throught
361 CPML, allowing to modify and manipulate the path data.</para> 
363 <para>The CPML library now natively supports arcs. Although cairo does
364 not recognize arcs, a lot of work has been done to hide the
365 complexity needed to provide an API that does the necessary
366 trasformations transparently.</para>
368 <para>The old AdgPath entity has been rewrote to AdgStroke. This is a
369 stroked view of an AdgPath model. Its implementation is trivial
370 as all the path complexity has moved to AdgPath.</para>
371 </simplesect>
373 <simplesect id="NEWS.0.4.1">
374 <title>ADG 0.4.1</title>
376 <para>The CPML library has been boosted with additional APIs to browse
377 segments/primitives and to compute intersections between different
378 constructs. Now it has its own demo program (cpml-demo), showing
379 some of the implemented feature. Although some function is still
380 a stub, the overall infrastructure is likely to be definitive.</para>
382 <para>All the CPML APIs are now properly documented.</para>
384 <para>The ldim demo has been merged into the more complex adg-demo.
385 Now the demo programs use the GtkBuilder feature, so the Gtk+
386 dependency has been raised to 2.12.</para>
387 </simplesect>
389 <simplesect id="NEWS.0.4.0">
390 <title>ADG 0.4.0</title>
392 <para>The useless wrappers in AdgPath have been removed: now the standard
393 cairo path API could be used in the path constructor callback.</para>
395 <para>AdgPoint has been added. This new core struct can be used to represent
396 a coordinate system with different model and space component.</para>
398 <para>The new AdgToyText entity can be used to show arbitrary text using the
399 cairo "toy" text API.</para>
401 <para>Two interfaces, AdgTranslatable and AdgRotable, have been implemented
402 to allow arbitrary positioning (using the new AdgPoint struct) and
403 rotation of entities where this is applicable (e.g. AdgToyText).</para>
405 <para>The CPML API has been almost rewrote from scratch: removed a lot of
406 duplicated stuff, dropped CpmlPath (by using the original cairo_path_t)
407 and implemented new functions, such as segment browsing (always in
408 forward direction), reversing and transformation.</para>
410 <para>README, NEWS, TODO and ChangeLog are now automatically generated, so
411 redundancy is removed and the maintainability improved. The originals
412 are kept in docbook format, allowing to use them also in html version.</para>
414 <para>The adg-demo program now allows to save the sample drawing in png, pdf
415 and postscript. Two useless toy text entities has been added.</para>
416 </simplesect>
418 <simplesect id="NEWS.0.3.2">
419 <title>ADG 0.3.2</title>
421 <para>The dependency on libgcontainer has been dropped: now the adg canvas
422 requires only cairo and Gtk+2 (will be optional). This allows to try
423 the demo program (demo/adg-demo) on any decent GNU/Linux distribution
424 without installing anything.</para>
426 <para>The container logic has been included in AdgEntity (the GChildable
427 portion) and AdgContainer (the GContainerable part).</para>
428 </simplesect>
430 <simplesect id="NEWS.0.3.1">
431 <title>ADG 0.3.1</title>
433 <para>Implemented the "invalidate" signal to force the cache recomputation
434 on a new rendering operation.</para>
436 <para>The new cairo "toy" API has been used to do text management in AdgDim.
437 This allows caching of the intermediate glyphs for improved
438 performances (no profiling yet done). The cairo dependency has been
439 raised to version 0.7.4 or more.</para>
441 <para>The AdgLDim entity has been rewritten to full implement the new cache
442 design. Other entities have been improved to allow a paper matrix
443 other than the default identity matrix.</para>
444 </simplesect>
446 <simplesect id="NEWS.0.3.0">
447 <title>ADG 0.3.0</title>
449 <para>Reworked styles and implemented AdgContext, a clean and well defined
450 approach to manage rendering customization.</para>
452 <para>Moved all the geometrical stuff in Cairo Path Manipulation Library
453 (CPML), an internal library depending only on cairo.</para>
454   
455 <para>Greatly improved documentation.</para>
456 </simplesect>
458 <simplesect id="NEWS.0.2.2">
459 <title>ADG 0.2.2</title>
461 <para>Strongly separated model and paper matrix concepts and updated their
462 management using nested transformations.</para>
464 <para>Reworked the rendering process in a cleaner way by propagating the
465 "render" signal and using internal entity states to let the application
466 know what changed from the previous rendering.</para>
467 </simplesect>
469 <simplesect id="NEWS.0.2.1">
470 <title>ADG 0.2.1</title>
472 <para>Reworked the sources tree in a cleaner way (to help future development)
473 and used private structs instead of populating the instance structure.</para>
474 </simplesect>
476 <simplesect id="NEWS.0.2.0">
477 <title>ADG 0.2.0</title>
479 <para>This is the first public release of the ADG library. It is in a early
480 stage of developement, but the goal is quite ambitious!</para>
481 </simplesect>
483 </chapter>