WxArt2D is a library for 2D graphical programming. WxArt2D is built on top of the wxWidgets Graphical primitives and other objects are derived from the base canvas object and managed in a document. The objects in this document are read from a file or created by the source code. The drawing document can be made hierarchical by adding child objects to a parent canvas object. Because a canvas object is reference counted, there can be more the one parent on the same canvas object. A unique part, or level, in the hierarchy can be referenced and drawn at different locations. Views are used to display the contents of a document in a device context. A document traverses itself, starting at a chosen level in the hierarchy and with a given viewport. Everything that it encounters within the viewport will be displayed as a view in the device context. The device context may be a window, a bitmap or even a file. A view is used to display certain parts of a document, but at the same time it has an internal drawing context a2dDrawer2D assigned to it. While traversing a a2dCanvasDocument , for example a2dCanvasView, the drawing context assigned to it is used by the view for the drawing the document. Everything that is drawn from within a document, is achieved by calling drawing methods on a view's drawing context. Drawing context implementations are derived from a2dDrawer2D . One can switch the internal drawing context of a2dCanvasView on the fly. For example to switch between anti aliased rendering and normal wxDc based rendering. A document can have several views open at the same time. Each view can display different parts of the document.
- Highly optimized rendering strategy for drawing and redrawing a hierarchy of 2d objects.
- Updating changes in the document to the views takes place in idle time, with minimum effort for the user.
- Coordinates are in world (doubles or integer), and objects are placed relative to parent object(s) with a matrix.
- The visible part of a drawing and its size as shown on a window or bitmap can be set independently of the data within the document itself.
- The document containing the hierarchy of 2d objects, can be displayed as several views.
- Tool Classes to edit the displayed objects in a view.
- Data can be read from a file and written to a file in SVG or CVG. New graphical file formats can easily be added.
a2dCanvasObject is the base class for all primitives in a document, it can intercept/receive events in the same manner as wxWidgets handles events.
- Complex canvas objects for displaying curves with markers are available.
Objects can be connected via pin objects, this makes graph, diagram display and editing possible. Pins can be added at run time as children of the a2dCanvasObject itself.