Projects / papyrus Canvas Library

papyrus Canvas Library

Papyrus is a 2D C++ scenegraph (canvas) library that utilizes the cairo library to perform drawing operations. Similar canvas libraries are the Gnome Canvas, Diacanvas, and the QT Canvas. Numerous canvas primitives are available, including arcs, rectangles, polylines, and line markers. An optional companion library, Papyrusmm, provides a set of Gtkmm widgets which includes viewports (a canvas display widget similar to Gtk::DrawingArea) and other UI widgets related to drawing interfaces.

Tags multimedia Graphics Editors Vector-Based Software Development Libraries Widget Sets User Interfaces Artistic Software Scientific/Engineering Visualization
Licenses LGPLv3
Operating Systems OS Independent
Implementation C++

Tweet this project Short link

Rss Recent releases

  • Rrelease-mid
  •  14 May 2009 20:51
  • Rrelease-after

Changes: This release fixes some bugs in the Reference class' handling of composed matrices and extents.

  • Rrelease-mid
  •  18 Mar 2009 21:10
  • Rrelease-after

    Changes: 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.

    • Rrelease-mid
    •  08 Mar 2009 06:39
    • Rrelease-after

    Changes: 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.

    • Rrelease-mid
    •  05 Mar 2009 21:33
    • Rrelease-after

    Changes: 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.

    • Rrelease-mid
    •  25 Feb 2009 22:02
    • Rrelease-after

    Changes: 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. There are two new dependencies on glibmm (mainly for UTF strings and regular expression support) and libxml++, as well as the removal of 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. Also new are extended unit tests and devhelp support.

    Df7b133e64c1b1440407ae8ed87e06ba_thumb

    Project Spotlight

    Flusspferd

    Javascript bindings for C++.

    No-screenshot

    Project Spotlight

    Snake Steak

    A freshmeat API command line client and Python library.