Release Notes: This release introduces a new controller named Flasher that derives from Animator. On each animation frame, Flasher will alternate between showing and hiding the associated drawables, causing them to flash at the interval rate of the animator. The addition of the Flasher animator exposed a bug that has been fixed in Drawable's renderer related to the visibility of objects. The show()/hide() methods should now work as expected.
Release Notes: This release features both bugfixes and enhancements. A bug causing segfaults in Drawable's destructor that removed a child from a parent was fixed. Fixing this bug allowed the base Papyrus::Object to inherit from sigc::trackable again. The Group::clear() method has been cleaned up and improved. This should result in a fairly significant performance improvement if you have many items in a group and regularly clear it. A simple estimate would put the old version at a performance level of 3 * O(n lg(n)) + O(n) and the new version at 4 * O(n).
Release Notes: This is primarily a bugfix release. There was an overload resolution bug with the virtual and non-virtual render() methods. Because of scoping rules, the virtual methods were not seen by descendants of Renderable, causing an infinite recursion of the virtual method resulting in a segfault. To remedy this, two new macros have been created: PAPYRUS_RENDERABLE() and PAPYRUS_DRAWABLE(). These macros add a using directive to ensure the overload resolution resolves to the virtual render() methods.
Release Notes: This release adds support for linear and radial gradients. The paint hierarchy has also been restructured and as a result a new wrapper for cairo contexts has been implemented that includes internal state values. The Paint class is now a top level ancestor for all paints, including the gradients. The former solid colors that were supplied by Paint can now be found in its descendant Color. Other changes include a fix in ScrolledViewport for a display bug and the restructuring of several primitives such as Point, Vertex, and LineSegment.
Release Notes: This release modifies the basic demo by adding support for scrolled viewports and zooming on the shapes. New shapes are Deltilles, Hextilles, and Quadrilles.
Release Notes: This release features a new controller called Zoomer providing mouse wheel zooming of drawables. There is a new viewport widget named ScrolledViewport. It contains a basic viewport, but adds vertical and horizontal scrollers and provides an API very similar to Gtk's ScrolledWindow widget. Also new are two drawing modes. One allows for intermediate drawing, primarily to support compositing. The other is alpha drawing using cairo's paint_with_alpha() methods. Support for rounded rectangles is also added.
Release Notes: This release fixes some bugs in the Reference class' handling of composed matrices and extents.
Release Notes: This release contains a few new features, some new optimizations, and some bugfixes. New features include the freeze()/thaw() methods added to Drawable. You can try them out in the demo, which includes an example. In coordination with the introduction of the freeze()/thaw() methods, the Boolean redraw parameter on all the Drawable affine transform methods has been removed. Rather than adding this parameter per function call, you can now enclose a group of function calls with a freeze/thaw pair. An issue that prevented the Canvas from drawing its background has been fixed, as well as several instances of invalid list iterators in Drawable's external matrices that caused segfaults. This release handles external matrix changed signals through a reference counted system rather than the older one-connection-per-added-matrix. This should improve things if a matrix is added multiple times to a drawable at the same or different levels.
Release Notes: This release fixes a bug in the Group::inside(x,y) method that prevented selection/picking from working properly. There are also a few new convenience methods added to Matrix related to operations in inverse matrices.
Release Notes: This release contains a few minor changes to the handling of events within the papyrus-gtkmm Viewport class. The drawable picking example has also been updated and simplified to focus on how to perform mouse-based selection. Other items include Papyrus::Event::InterruptMarshaller to stop signal propagation on the first true slot return value, Papyrus::Event::signal typedef to simplify the declaration event signals with an interrupt marshaller, and signal_event_papyrus() added to Viewport allowing connections to be made to the Viewport papyrus events.