Carnac

Fast C++ Toolkit for 2D Graphics


Carnac provides software developers with a library of software tools that promote rapid development of sophisticated graphical applications under Qt, Windows MFC, or Unix Motif. Carnac offers fully interactive data display, as well as the ability to share views across the web.

Carnac now includes a comprehensive and powerful Chart Library, offering a selection of widely used chart types including Bar, Column, Histogram, Line, Area, Pie, Doughnut, & Scatter plots. 

Cross-platform Tools and Outstanding Performance

Carnac has been designed with performance as its primary goal, with every component tailored to optimally drive the native graphics pipeline. Most Carnac-written applications will be faster than applications written using native graphics directly.  Carnac's outstanding performance and cross-platform support make it the leading product in its target market.

Carnac's Distributed Architecture

Carnac's distributed architecture is ideal for developing Web applications, including enabling technologies such as ActiveX controls and Netscape plug-ins.

Carnac's components are connected using a proxy interface, which can be easily distributed. For example, Carnac's Web scene is used to distribute graphic objects across the Web.

Benefits

  • Full cross-platform support 
  • Extensible, portable, integratable
  • Scalable graphics
  • Built-in view management

Features

cross-plot
  • CGM - support extended to 3.0 standard
  • Shapes - Primitive shapes include bezier curves, ellipses, images, polygons, polylines, polymarkers, rectangles, restricted text and scalable text. 
  • Flavors - Flavors are used to augment the primitive shapes, provide application specific symbols, lines symbology, animation sprites, etc. 
  • Attributes - Attributes encapsulate visual properties of shapes, including line color, line style, line pattern, fill color, fill style, fill pattern, font attributes and marker styles. Different attributes can be set per target device (hardcopy, for example). 
  • Scenes - Memory scenes: optimized for very fast shape creation. Suitable to handle tens of thousands of objects. Paged scenes: shapes are spatially stored in a file. Application has control over the size of the memory cache. Optimized to handle up to millions of objects. Dynamic scenes: provides a mechanism to generate shapes on the fly from a database, an algorithm or over the web. Data compression techniques and filtering can be implemented to minimize network traffic. 
  • Views - Support View laying, filtering and buffering. Extensive View composition support, including embedded views. Scenes can be visualized using multiple views, with automatic propagation of updates. 
  • Interaction - Extensive support for interaction is available, including selection, scaling, reshaping and rotation. Interaction primitives can be applied to single or multiple shapes. 
  • Thread safe - Systems that support multithreading can implement the rendering part of Carnac, as a separate thread. Methods are provided to enforce internal locking and preserve data integrity.
  • Persistence - Built-in support for binary and ASCII serialization of scenes and palettes. 
  • Drivers - Drivers are available for Qt3. Qt4. Win32, X-Window, OpenGL, PostScript and CGM. 
  • Online documentation - All documentation (Getting Started, Users Guide, and Reference) is available in HTML format for easy access on-line
  • Hardcopy output - PostScript is provided, and CGM is optional.

Plot Toolkit

The integrated Plot components can be used for general plotting purpose, to display XY-plots for example, or for more domain specific applications, including contour, seismic or log displays. Some of the main features provided in the Plot Framework are described below:

  • Flexible Design - The Carnac Plot Framework provides two levels of functionality. The first level consists of the plotting infrastructure. In order to be able to display high performance and somewhat complex scientific visual displays, the plotting infrastructure was designed to support the most demanding requirements of low-level application framework programmers. The components of the plotting infrastructure provide great flexibility and full functionality at the expense of a somewhat more complex API. The second level consists of higher-level components built on top of the plotting infrastructure. These components were designed for those who wish to quickly display standard looking plots with a minimum of effort. The layers aren't opaque, allowing the programmers the ability to use the higher-level components, while still providing access to the plotting infrastructure when needed.

  • Axes and Grids - The Carnac Plot Framework provides extensive axis support, including linear and logarithmic axes, axes with fixed increments or adaptive axes. Instead of being a single object with a multitude of properties however, axes and grids are described by multiple objects that can be used as building blocks. The flexibility of the design is further enhanced by the fact that the user is allowed to add his own components by implementing the documented interfaces.

  • Plot Layout - A set of objects with simple API's is provided to facilitate the construction and modification of single or composite plots. A plot is usually a combination of single or multiple data frames, each surrounded by a number of axes and/or annotation such as titles, headers or footers. The Plot Layout controls the alignment of the plots, the behavior during resize operations, and the dynamic addition and removal of plots.

  • Overlays - Thanks to Carnac sophisticated view layer management, the Plot Framework allows plot views to be stacked on top of each other to create powerful overlays. Cache layers can be inserted between plot views to minimize redrawing when editing a layer.

  • Plot Spaces  - Plot spaces (or coordinate spaces) are used to synchronize the mapping transformations between individual plot scenes and their corresponding axes. Changes in a plot space are propagated automatically to all the attached view. Plot spaces are designed to simplify all viewing transformations, including synchronized scrolling and zooming operations. GUI specific components such as scrollbars can be tied directly to plot spaces.

  • Plot Scenes and Visuals - Plot scenes are the primary component in the Carnac Plot Framework. They encapsulate a generic interface that can be used to model any specific input data type using Carnac primitives. Plot scenes provide the data from which plot visuals are built. Since the visual layout is independent of the nature of the data displayed in the plot, no requirements are imposed on the types of scenes constituting the plot. Thanks to Carnac advanced layering capabilities, it is possible to build all sorts of composite plots. For example, in the case of the GeoToolkit, a Contour plot scene can easily be overlaid on top of a map, or even on top of a seismic plot scene.

Chart Library

Bring powerful charting into your Qt applications with minimum programming effort. A comprehensive set of tutorials is available to assist you and chart customization is available through a comprehensive set of editors and templates. Chart Overview

CGMOutput

CGMOutput is an add-on module that can be used to output a display to a CGM file. CGM (Computer Graphic Metafile) is particularly well-suited for describing large plots and is a standard graphics file format used by many industries such as Oil & Gas, Aerospace and Automotive.

Availability

Carnac is available on Linux, Windows, and Solaris for 32bit and 64bit architectures.