ADG 0.5.1
========= The new AdgMarker abstract class has been added to provide a common ancestor to marker entities. AdgArrow (a filled arrow) is its first renderable implementation. The rendering customization is now provided by AdgDress, an index that virtualizes the underlying AdgStyle and derived instances. This allows some advanced operation, such as overriding a style in a specific branch of the entity hierarchy. The deprecated AdgContext class has been removed. The AdgPath class has been splitted in AdgTrail and AdgPath. The former provides low level access to CpmlPath, allowing the implementation of paths that do not fit in the global/local model. AdgLDim internally uses a private AdgTrail to implement base and extension lines rendering. ADG 0.5.0 ========= The old paper-model matrix approach has been superseded by a cleaner and smarter approach based on global/local maps. This resulted in a great code complexity reduction: check out the home page for further details. Parent-child relationship is no more tied to AdgContainer: dependencies between AdgEntities can now be expressed without a full-fledged container. AdgDim now uses internally four AdgToyText entities to render the quote. This has been made possible by the new parent-child APIs, simplyfing the rendering code a lot. A bunch of classes, most notably AdgRotable, AdgTranslatable and AdgPoint, have been superseded by the new global/local map approach and have been removed from the project. ADG 0.4.3 ========= Higher level operators, such as chamfer and fillet, can now be used in the path definition. They do not work yet for Bézier curves but the infrastructure is in place. A Gtk+ widget for easily showing the canvas has been implemented. It is based on GtkDrawingArea and provides some interaction throught the mouse, such as zooming and panning. It is not viable for serious work but it is funny to use and opened to improvements. The CPML library has been enriched with the missing functions needed by the above new features. Now it has a ..._length() and ..._near_pos() families of functions. The mathematic behind this library is far from complete: the overall design is quite stable but there are a lot of placeholders, especially when curves were involved. ADG 0.4.2 ========= The work on model-view separation has been started: the AdgModel abstract class is now in place. Above this class, the new AdgPath model is derived, providing a full set of APIs to construct paths from scratch. Also, AdgPath gives full access the model throught CPML, allowing to modify and manipulate the path data. The CPML library now natively supports arcs. Although cairo does not recognize arcs, a lot of work has been done to hide the complexity needed to provide an API that does the necessary trasformations transparently. The old AdgPath entity has been rewrote to AdgStroke. This is a stroked view of an AdgPath model. Its implementation is trivial as all the path complexity has moved to AdgPath. ADG 0.4.1 ========= The CPML library has been boosted with additional APIs to browse segments/primitives and to compute intersections between different constructs. Now it has its own demo program (cpml-demo), showing some of the implemented feature. Although some function is still a stub, the overall infrastructure is likely to be definitive. All the CPML APIs are now properly documented. The ldim demo has been merged into the more complex adg-demo. Now the demo programs use the GtkBuilder feature, so the Gtk+ dependency has been raised to 2.12. ADG 0.4.0 ========= The useless wrappers in AdgPath have been removed: now the standard cairo path API could be used in the path constructor callback. AdgPoint has been added. This new core struct can be used to represent a coordinate system with different model and space component. The new AdgToyText entity can be used to show arbitrary text using the cairo "toy" text API. Two interfaces, AdgTranslatable and AdgRotable, have been implemented to allow arbitrary positioning (using the new AdgPoint struct) and rotation of entities where this is applicable (e.g. AdgToyText). The CPML API has been almost rewrote from scratch: removed a lot of duplicated stuff, dropped CpmlPath (by using the original cairo_path_t) and implemented new functions, such as segment browsing (always in forward direction), reversing and transformation. README, NEWS, TODO and ChangeLog are now automatically generated, so redundancy is removed and the maintainability improved. The originals are kept in docbook format, allowing to use them also in html version. The adg-demo program now allows to save the sample drawing in png, pdf and postscript. Two useless toy text entities has been added. ADG 0.3.2 ========= The dependency on libgcontainer has been dropped: now the adg canvas requires only cairo and Gtk+2 (will be optional). This allows to try the demo program (demo/adg-demo) on any decent GNU/Linux distribution without installing anything. The container logic has been included in AdgEntity (the GChildable portion) and AdgContainer (the GContainerable part). ADG 0.3.1 ========= Implemented the "invalidate" signal to force the cache recomputation on a new rendering operation. The new cairo "toy" API has been used to do text management in AdgDim. This allows caching of the intermediate glyphs for improved performances (no profiling yet done). The cairo dependency has been raised to version 0.7.4 or more. The AdgLDim entity has been rewritten to full implement the new cache design. Other entities have been improved to allow a paper matrix other than the default identity matrix. ADG 0.3.0 ========= Reworked styles and implemented AdgContext, a clean and well defined approach to manage rendering customization. Moved all the geometrical stuff in Cairo Path Manipulation Library (CPML), an internal library depending only on cairo. Greatly improved documentation. ADG 0.2.2 ========= Strongly separated model and paper matrix concepts and updated their management using nested transformations. Reworked the rendering process in a cleaner way by propagating the "render" signal and using internal entity states to let the application know what changed from the previous rendering. ADG 0.2.1 ========= Reworked the sources tree in a cleaner way (to help future development) and used private structs instead of populating the instance structure. ADG 0.2.0 ========= This is the first public release of the ADG library. It is in a early stage of developement, but the goal is quite ambitious! |