|26 days 37 minutes||adg: modernize geometry computation for radial dimensions
Adopt the new behavior (explained in commit 21ba042dec9a) on AdgRDim.
|26 days 49 minutes||adg: modernize geometry computation for angular dimensions
Adopt the new behavior (explained in commit 21ba042dec9a) on AdgADim.
|26 days 1 hour||adg: modernize geometry computation for linear dimensions
Adopt the new behavior (explained in commit 21ba042dec9a) on AdgLDim.
|26 days 1 hour||adg: add wrappers for common geometry notices
Added two new methods to AdgDim (adg_dim_geometry_missing() and
adg_dim_geometry_coincidents()) that wrap adg_dim_set_geometry_notice()
and set the notification message in the two most common cases: a
reference is missing (the former) and two references are coincident (the
|26 days 11 hours||adg: add geometry handling to AdgDim
Add new internal methods to help the relocation of geometry behavior
into AdgDim in view of the planned a change of behavior on the geometry
Actually when a point is missing or when two points that must be
differents are coincidents the entity is not rendered but in the former
case it is done silently while in the latter case a warning is issued.
This is not consistent and implicates code duplication. Worse, the
caller has no easy way to know if the dimension has been rendered.
The new behavior will be to always be silent and to provide a way to
inspect if the dimension is valid before the rendering, allowing to do
some code similar to the following one:
dim = <create new dimension>
if dim:compute_geometry() then
-- The dimension is valid: render it
print('Dimension not valid: ', dim:get_geometry_notice())
|1 month 19 hours||demo: update to latest changes|
|1 month 20 hours||adg: drop custom dimension dresses
The dimension dress is a *slot* where custom styles go: there is no need
to have more slots. Use the newly provided APIs for customizing the
dimensions instead of using additional dresses.
|1 month 20 hours||adg: new API adg_style_clone()
Allow to clone the style for easier customization.
|1 month 21 hours||adg: new API adg_object_clone()
A helper method to clone a generic GObject instance. It traverses all
the readable/writable properties and duplicate them.
It will be helpful for customizing styles.
|1 month 1 day||adg: provide example on how to customize a style
This documentation improvement is required in order to get rid of the
wrong dimension dresses (ADG_DRESS_DIMENSION_ANGULAR,
ADG_DRESS_DIMENSION_RADIUS and ADG_DRESS_DIMENSION_DIAMETER).
|2 months 21 days||adg: update cp whenever a path rescan occurs
When rescanning the path (e.g. after an adg_path_remove_primitive() or
an adg_path_append_cairo_path() call), the current point needs to be
|2 months 21 days||adg: round angular dimensions to 3 digits
By default angular dimensions are expressed in sexagesimal units
(degrees and seconds): no needs to go under 3 decimals of precision.
Furthermore I get *again* the 29°60' issue.
|2 months 21 days||adg: improve adg_path_remove_primitive() behavior
Do not consider CPML_MOVE items when removing the last primitive. Also,
recompute the path to refresh the last and over primitives.
|2 months 21 days||adg: new API adg_path_remove_primitive()
A new method that removes the last primitive from a path.
|3 months 2 days||adg: add AdgDimStyle:rounding
A new property that rounds the raw value to a specific number of
decimals. This is required because otherwise I get 59°60' instead of 60°
when using sexagesimal units.
|3 months 3 days||adg: set AdgTitleBlock floating by default|
|3 months 6 days||adg: add floating entity concept and API
When an entity is "floating", its extents does not concur on increasing
the extents of its own container. In other words, during the arrange
phase AdgContainer only considers the non-floating children to compute
In particular, this affects how adg_canvas_autoscale() works: all
floating entities are not taken into consideration.
A typical example is the title block or any other annotation not
dependent from the model for positioning.
|3 months 6 days||test: protect /adg/path/method/line-to against common crashes
Sometime the test suite still crashes for unknown reasons, e.g.:
Try to catch some common problems (NULL dereferences) to see where the
|3 months 7 days||adg: new API adg_path_join()
A new method that joins every segment inside the same path.
|3 months 7 days||adg: properly handle multisegment paths in adg_path_reflect()
Do not implicitely connect segments when reflecting a path. Keep them
separates: there are cases when this can be helpful.
|3 months 7 days||adg: change behavior of AdgEdges
Always consider the start of a segment as corner. This is required in
order to match the latest directives, i.e. adg_path_reflect() must be
able to handle multisegment paths.
|3 months 7 days||test: use conversion macros when testing AdgTrail|
|3 months 7 days||test: adg_trail_n_segments() with a single segment path|
|3 months 7 days||adg: start from the last segment when reflecting
Switched order on the adg_path_reflect() segments loop to start from the
last segment, as this is what a human would expect and will make joining
(NYI) much easier.
|3 months 7 days||adg: new API adg_trail_n_segments()
A convenient function to get the number of segments present in the
cairo_path_t embedded in an AdgTrail instance.