papyrus is a C++ scenegraph library based on cairo
===== 0.13.3 =====
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 now-fixed bug in Drawable's renderer related to the visibility of objects. The show()/hide() methods should now work as expected.
papyrus is a C++ scenegraph library based on cairo
===== 0.13.2 =====
Like most releases this one features both bugfixes and enhancements.
A bug causing segfaults in Drawable's destructor that removed a child from a parent was fixed. Drawables will no longer automatically remove themselves from parents on destruction, but this was legacy code as children have (for some time now) been owned by their parents in the scenegraph. Thus, the only way for a child to destruct is to first remove it from it's parent.... read more
This release 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(). In addition to adding the using directive to a class these macros provide some of the other repetitive code used in each descendant of Renderable and Drawable, including declaration of smart pointer types.... read more
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
This release modifies the basic demo adding support for scrolled viewports and zooming on the shapes.
New shapes are Deltilles, Hextilles and Quadrilles.
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.... read more
This release fixes some bugs in the Reference class' handling of composed matrices and extents. Thanks to Julius Ziegler for reporting the problem and providing an example application (called reference in the examples directory).
Like most releases this release contains a little of everything... a few new features... some new optimizations... some bug fixes.
In the new features category are 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.... read more
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.
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:
* Added Papyrus::Event::InterruptMarshaller to stop signal propagation on the first true slot return value.
* Added Papyrus::Event::signal typedef to simplify the declaration event signals with an interrupt marshaller... read more
This release introduces new changes to support more of an SVG-like structure including paint and drawable dictionaries respectively similar in concept to SVG's paint servers and defs section.
This release also adds two new dependencies on glibmm (mainly for UTF strings and regular expression support) and libxml++ as well as removing the dependency on expat.
Limited support for linear gradients in SVGs is also introduced as is the new class Paint; a thin encapsulation of cairo's patterns with a signal emitted when the pattern is changed.... read more
With this release papyrus changes from GPLv3 to LGPLv3.
This release also contains a rewrite of the extents calculation mechanisms (fixing some issues with viewboxes) and the controller hierarchy.
Other changes include the addition of a new shape Annulus (aka donut, ring), extended documentation including a brief discussion on the role of MVC within papyrus, and a few other code cleanups and bug fixes.
This release only fixes a variable naming problem within the pkgconfig .pc files.
There are many changes in the papyrus library with this release. This release introduces a preview of the SVG drawable which can load an SVG and return a papyrus drawable object.
This is a bug fix release heading to 0.7.80. Fixed the freehand sketcher example. Fixed grid segfaults. Fixed virtual destructors on numerous drawables.
Many new changes in preparation for 0.8.0.
This release incorporates several patches from Mjumbe Wawatu
Ukweli and Peter Miller that (among other things) fixed a bug
in the lower_to_bottom() method and made the method more
efficient as well as extending the Papyrus::Image class
allowing it to use cairo image surfaces directly.
Additionally, the autoconf checks for the cairo version have
been replaced with cairo's own macros. This should fix many
of the problems people have have with both Ubuntu and Gentoo.... read more
Release Name: 0.7.0
This release adds the concept of drawing layers within
Groups, and the use of layers is shown in the rewritten
Boxed and Handlebox classes. Methods show(), hide() and
is_visible() have been added to Drawable. Rectangle, Circle
and Arc also have new create() methods that accept default
fill and outline patterns, allowing most basic aspects to
be defined in construction.... read more
This release features a working implementation of
the Grid item. A Grid is a canvas item that
inherits from Drawable, and thus can have any of
the standard affine transforms (scaling,
rotation, translation, skewing) applied to it.
It provides an API that allows for independent
line drawing styles of the X and Y axes, each
border and X and Y interval lines.
Additionally, initialization of the X11 color map has been split into four files to make
compilation easier on machines with 512MB or less.... read more
Some new features, some drawing improvements and
some bug fixes. The drawing improvements mainly
relate to taking advantage of more aspects of the
cairo API to improve both speed and drawing
quality. Several new controllers are present such
as the Rotator and Scaler controllers that can be
used in combination with a Handlebox for
presenting handles on selections and using the
handles for rotation and scaling. The demo has
been extended to demonstrate the new controllers.... read more
This is the first 0.4.x release specifically for cairo/cairomm 1.2.x. This release features a few code cleanups, and changes the default rotational centroid for Papyrus::Image to be the center of the bounding box.
This is the first 0.3.x release specifically for cairo/cairomm 1.0.x after branching into 0.3.x and 0.4.x for cairo 1.0.x and 1.2.x respectively. This release features a few code cleanups, and changes the default rotational centroid for Papyrus::Image to be the center of the bounding box.
This release introduces simple frame-based animators and event-based controllers to the papyrus library.
The former papyrusgtk library with Gtkmm widgets has been renamed to papyrusmm to leave open the future possibility of a Gtk+ based library. Although the library is named papyrusmm, the namespace remains PapyrusGtk, similar to the Gtk namespace in Gtkmm.
Several animator control widgets have been added to papyrusmm to support papyrus' animators.... read more
New in this release are the Bezierline and Beziergon classes that, as the name implies, create lines and polygons whose segments are bezier curves rather than straight lines.