[docs] Updated NEWS.xml
[adg.git] / docs / gnu / NEWS.xml
blobc62dff6c1ab0bec77def386ae3edb2979a702607
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.5.6">
10 <title>ADG 0.5.6</title>
12 <para>The build system has done a huge step toward portability: the
13 requirements are less restrictive and the overall implementation
14 is cleaner and quite well defined.</para>
16 <para>The API has been exercised by API-Sanity-Autotest that helped to
17 discover some problem: check out issue #23 for more details.</para>
19 <para>A test framework based on glib-2.16 has being added. It is still
20 under development but yet fully working.</para>
22 <para>The CPML API has been cleaned up by using an internal struct of
23 function pointers to delegate the job to the different primitives.
24 The public symbols have been reduced from 105 to 70.</para>
26 </simplesect>
28 <simplesect id="NEWS.0.5.5">
29 <title>ADG 0.5.5</title>
31 <para>The quote of linear dimensions can be freely positioned using the
32 AdgDim:pos property. By default, ADG keeps the quote inside the
33 extension lines if there is enough room, otherwise displaces it
34 to the "pos" coordinates.</para>
36 <para>A document describing how to contribute to the project has been
37 added. A general description of the API conventions used by is
38 also provided.</para>
40 <para>A lot of bug fixing and code clean up. A bug in the installation
41 has been solved and support for pkg-config has been added. This
42 will probably be the last release of the 0.5 branch.</para>
44 </simplesect>
46 <simplesect id="NEWS.0.5.4">
47 <title>ADG 0.5.4</title>
49 <para>AdgTable now provides a generic tabular entity customizable with
50 AdgTableStyle. It supports unlimited rows with independent cells.</para>
52 <para>Some new special entities, such as AdgLogo (the official ADG logo)
53 and AdgProjection (showing the drawing projection scheme) have
54 been implemented.</para>
56 <para>A bare title block entity, AdgTitleBlock, is now available: it is
57 allowed to set its cells content either by using string values or
58 custom entities.</para>
60 <para>AdgAlignment is a new container entity that allows to traslate its
61 children of a custom factor of the children boundary box: any
62 entity can now be right aligned or centered.</para>
64 </simplesect>
66 <simplesect id="NEWS.0.5.3">
67 <title>ADG 0.5.3</title>
69 <para>AdgRDim, a new entity to quote radial dimensions, is now available.</para>
71 <para>A bunch of new classes to manage hatches have been implemented.
72 Specifically, AdgHatch is the entity to be added to the canvas,
73 AdgFillStyle a generic abstract class that wraps cairo_pattern_t
74 and AdgRuledFill the AdgFillStyle implementation to fill an hatch
75 with a serie of parallel lines with custom spacing and angle.</para>
77 <para>The AdgModel now supports named pairs, that is any coordinates
78 can be set explicitely (as before) or as a reference to a pair
79 set by the model. The AdgPoint helper class is the object used
80 to manage this relationship. The API of dimension entities has
81 been updated to accept AdgPoint instead of plain AdgPair.</para>
83 </simplesect>
85 <simplesect id="NEWS.0.5.2">
86 <title>ADG 0.5.2</title>
88 <para>AdgADim, a new entity to quote angular dimensions, is implemented.</para>
90 <para>The linear dimensions now accept the "outside" property to reflect
91 the arrows around the extension lines. The default value of this
92 property is ADG_THREE_STATE_UNKNOWN, meaning it will be computed at
93 runtime, depending on quote size and available space.</para>
95 <para>The new AdgEdges model can now be used to programmatically build a
96 serie of vertical lines expressing the edges of another model. This
97 can be used on symmetrical shapes, often met in turned parts.</para>
99 <para>The entities now actively respond to extents requests: it is possible
100 to know the necessary space before rendering them. Any matrix change
101 now emits specific signals to fulfill this requirement.</para>
103 </simplesect>
105 <simplesect id="NEWS.0.5.1">
106 <title>ADG 0.5.1</title>
108 <para>The new AdgMarker abstract class has been added to provide a common
109 ancestor to marker entities. AdgArrow (a filled arrow) is its first
110 renderable implementation.</para>
112 <para>The rendering customization is now provided by AdgDress, an index that
113 virtualizes the underlying AdgStyle and derived instances. This allows
114 some advanced operation, such as overriding a style in a specific branch
115 of the entity hierarchy. The deprecated AdgContext class has been removed.</para>
117 <para>The AdgPath class has been splitted in AdgTrail and AdgPath. The former
118 provides low level access to CpmlPath, allowing the implementation of
119 paths that do not fit in the global/local model. AdgLDim internally
120 uses a private AdgTrail to implement base and extension lines rendering.</para>
122 </simplesect>
124 <simplesect id="NEWS.0.5.0">
125 <title>ADG 0.5.0</title>
127 <para>The old paper-model matrix approach has been superseded by a cleaner and
128 smarter approach based on global/local maps. This resulted in a great
129 code complexity reduction: check out the home page for further details.</para>
131 <para>Parent-child relationship is no more tied to AdgContainer: dependencies
132 between AdgEntities can now be expressed without a full-fledged container.</para>
134 <para>AdgDim now uses internally four AdgToyText entities to render the quote.
135 This has been made possible by the new parent-child APIs, simplyfing the
136 rendering code a lot.</para>
138 <para>A bunch of classes, most notably AdgRotable, AdgTranslatable and AdgPoint,
139 have been superseded by the new global/local map approach and have been
140 removed from the project.</para>
142 </simplesect>
144 <simplesect id="NEWS.0.4.3">
145 <title>ADG 0.4.3</title>
147 <para>Higher level operators, such as chamfer and fillet, can now be used
148 in the path definition. They do not work yet for Bézier curves but
149 the infrastructure is in place.</para>
151 <para>A Gtk+ widget for easily showing the canvas has been implemented. It
152 is based on GtkDrawingArea and provides some interaction throught the
153 mouse, such as zooming and panning. It is not viable for serious work
154 but it is funny to use and opened to improvements.</para>
156 <para>The CPML library has been enriched with the missing functions
157 needed by the above new features. Now it has a ..._length() and
158 ..._near_pos() families of functions. The mathematic behind this
159 library is far from complete: the overall design is quite stable
160 but there are a lot of placeholders, especially when curves were
161 involved.</para>
163 </simplesect>
165 <simplesect id="NEWS.0.4.2">
166 <title>ADG 0.4.2</title>
168 <para>The work on model-view separation has been started: the AdgModel
169 abstract class is now in place. Above this class, the new AdgPath
170 model is derived, providing a full set of APIs to construct paths
171 from scratch. Also, AdgPath gives full access the model throught
172 CPML, allowing to modify and manipulate the path data.</para> 
174 <para>The CPML library now natively supports arcs. Although cairo does
175 not recognize arcs, a lot of work has been done to hide the
176 complexity needed to provide an API that does the necessary
177 trasformations transparently.</para>
179 <para>The old AdgPath entity has been rewrote to AdgStroke. This is a
180 stroked view of an AdgPath model. Its implementation is trivial
181 as all the path complexity has moved to AdgPath.</para>
183 </simplesect>
185 <simplesect id="NEWS.0.4.1">
186 <title>ADG 0.4.1</title>
188 <para>The CPML library has been boosted with additional APIs to browse
189 segments/primitives and to compute intersections between different
190 constructs. Now it has its own demo program (cpml-demo), showing
191 some of the implemented feature. Although some function is still
192 a stub, the overall infrastructure is likely to be definitive.</para>
194 <para>All the CPML APIs are now properly documented.</para>
196 <para>The ldim demo has been merged into the more complex adg-demo.
197 Now the demo programs use the GtkBuilder feature, so the Gtk+
198 dependency has been raised to 2.12.</para>
200 </simplesect>
202 <simplesect id="NEWS.0.4.0">
203 <title>ADG 0.4.0</title>
205 <para>The useless wrappers in AdgPath have been removed: now the standard
206 cairo path API could be used in the path constructor callback.</para>
208 <para>AdgPoint has been added. This new core struct can be used to represent
209 a coordinate system with different model and space component.</para>
211 <para>The new AdgToyText entity can be used to show arbitrary text using the
212 cairo "toy" text API.</para>
214 <para>Two interfaces, AdgTranslatable and AdgRotable, have been implemented
215 to allow arbitrary positioning (using the new AdgPoint struct) and
216 rotation of entities where this is applicable (e.g. AdgToyText).</para>
218 <para>The CPML API has been almost rewrote from scratch: removed a lot of
219 duplicated stuff, dropped CpmlPath (by using the original cairo_path_t)
220 and implemented new functions, such as segment browsing (always in
221 forward direction), reversing and transformation.</para>
223 <para>README, NEWS, TODO and ChangeLog are now automatically generated, so
224 redundancy is removed and the maintainability improved. The originals
225 are kept in docbook format, allowing to use them also in html version.</para>
227 <para>The adg-demo program now allows to save the sample drawing in png, pdf
228 and postscript. Two useless toy text entities has been added.</para>
230 </simplesect>
232 <simplesect id="NEWS.0.3.2">
233 <title>ADG 0.3.2</title>
235 <para>The dependency on libgcontainer has been dropped: now the adg canvas
236 requires only cairo and Gtk+2 (will be optional). This allows to try
237 the demo program (demo/adg-demo) on any decent GNU/Linux distribution
238 without installing anything.</para>
240 <para>The container logic has been included in AdgEntity (the GChildable
241 portion) and AdgContainer (the GContainerable part).</para>
243 </simplesect>
245 <simplesect id="NEWS.0.3.1">
246 <title>ADG 0.3.1</title>
248 <para>Implemented the "invalidate" signal to force the cache recomputation
249 on a new rendering operation.</para>
251 <para>The new cairo "toy" API has been used to do text management in AdgDim.
252 This allows caching of the intermediate glyphs for improved
253 performances (no profiling yet done). The cairo dependency has been
254 raised to version 0.7.4 or more.</para>
256 <para>The AdgLDim entity has been rewritten to full implement the new cache
257 design. Other entities have been improved to allow a paper matrix
258 other than the default identity matrix.</para>
260 </simplesect>
262 <simplesect id="NEWS.0.3.0">
263 <title>ADG 0.3.0</title>
265 <para>Reworked styles and implemented AdgContext, a clean and well defined
266 approach to manage rendering customization.</para>
268 <para>Moved all the geometrical stuff in Cairo Path Manipulation Library
269 (CPML), an internal library depending only on cairo.</para>
270   
271 <para>Greatly improved documentation.</para>
273 </simplesect>
275 <simplesect id="NEWS.0.2.2">
276 <title>ADG 0.2.2</title>
278 <para>Strongly separated model and paper matrix concepts and updated their
279 management using nested transformations.</para>
281 <para>Reworked the rendering process in a cleaner way by propagating the
282 "render" signal and using internal entity states to let the application
283 know what changed from the previous rendering.</para>
285 </simplesect>
287 <simplesect id="NEWS.0.2.1">
288 <title>ADG 0.2.1</title>
290 <para>Reworked the sources tree in a cleaner way (to help future development)
291 and used private structs instead of populating the instance structure.</para>
293 </simplesect>
295 <simplesect id="NEWS.0.2.0">
296 <title>ADG 0.2.0</title>
298 <para>This is the first public release of the ADG library. It is in a early
299 stage of developement, but the goal is quite ambitious!</para>
301 </simplesect>
303 </chapter>