HyperGraphics consists of a rich set of logically consistent drawing objects that can be combined to
produce professional engineering-quality graphics. By using a consistent object-orientated approach HyperGraphics bypasses the problems
associated with using esoteric and procedurally orientated operating system procedures and functions.
HyperGraphics has been optimised for speed and flexibility allowing speed critical applications to be created with ease.
Key features include:
||Engineering quality graphs that can show thousands of points. More info ...
|| "Intelligent" axes that can automatically label themselves and
have linear and logarithmic scales. More info ...
|| Interactive manipulation of graphical objects using the mouse. More info ...
||Graphical objects can be positioned and sized in pixels, cm, inches, points, data and
normalised. More info ...
||Excellent diagramming support including objects such as connectors, sockets, shapes,
multi-line textboxes, text-tip tools, and so on. More info ...
||Images can be resized and alpha-blended with the background. More info ...
||Can use double buffered drawing for "flicker-free" displays. More info ...
||Users can create their own graphical objects. More info ...
||Individual graphical objects and whole displays can be serialised making cut and paste and
undo operations easy. More info ...
|| Easily copies graphics to printers and enhanced metafiles, also has extensive print preview abilities built-in.
More info ...
|| Built-in objects include view, axis, Bezier curve, arrow, key, colour bar, table
and more. More info ...
Graphing features [Back to top]
HyperGraphics is excellent at drawing and manipulating engineering/real-time data. It has a myriad of different line-styles and line-markers
and has powerful automatic axis labelling capabilities. There is no limit on the number of points a line can have and all x/y/z data is defined
using double precision.
HyperGraphics also comes with a key object that will automatically react to changes in the line styles of the lines it shows.
In addition to its 2D lines HyperGraphics also comes with two built-in objects for displaying z-data. A pseudo 3D-line and a pseudo 3D-matrixline. These will
draw the z-data using colour to represent the third axis. A colourbar is used to show the mapping of the colours to a z-data value. A 3D-matrixline can
also be drawn alpha-blended with the background using an overall value of alpha-blend or defined on a pixel-by-pixel basis.
A variety of different colourmaps are available as standard providing a spectrum of colours from the minimum to maximum z-value. Alternatively user-defined
colourmaps can be defined easily.
Axes [Back to top]
Logarithmic and linear axes are supported and it can automatically show labels using exponential or standard notation. Rounded increments
are chosen based on ones, twos or fives.
Date and time labels can also be automatically generated using increments ranging from 1 second to 100 years. Labels can also be drawn at a user-specified
angle or parallel to the axis.
Any number of axes can be attached to a graph and they can also
be aligned to the left or right or be positioned a fixed distance away from the graph.
Interactive capabilities [Back to top]
A powerful feature of HyperGraphics is its interactive capabilities. This allows all graphical objects to be selected, moved
and resized with the mouse. The appeareance of selected objects and their interactive behaviour can all be overridden programatically.
Multiple object selection with a rubber-band box is supported as are user-definable right click menus.
HyperGraphics comes with a separate run-time properties dialog for each
graphical object. These dialogs can be accessed through a method call or via the default right-click menu.
Textual content of a graph or figure can be optionally edited in place. This means that, for example, graph titles, axis labels and titles can be
edited quickly and easily.
Units for positioning and sizing objects [Back to top]
All graphical objects can be positioned and sized using various units including cm, pixels, inches, points, data and normalised.
Data units mean the object will be positioned/sized using the co-ordinate frame generated by the object's parent axes.
Normalised units mean the object will be positioned/sized as a proportion of the size of its parent object using the bottom left of the object
as the origin.
Diagramming support [Back to top]
HyperGraphics has excellent diagramming support using its built-in objects such as connectors, sockets, multi-line text boxes and different shapes.
Connectors can have any number of arrows attached (with four different arrow heads) and can be right-angled, or be forked horizontally or vertically.
Table objects are particularly useful as presenting multiple text objects and can have any number of rows and columns. Each cell of the table can
act as a container for any other graphical object. The built-in text tip objects can be used to highlight important areas of the diagram.
System diagrams can be easily drawn and benefit from connectors and the package's ability to attach text to connectors.
UML diagrams can be drawn with ease using the rich set of UML specific objects supplied with HyperGraphics.
Electrical circuit diagrams can also be drawn using the supplied set of electrical objects.
Images [Back to top]
Images can be resized either using a fast delete pixels method or by merging composite pixels using averaging. They can have a transparent colour
assigned to them which will mean any pixel that has this colour will be not be visible. Images can also be alpha-blended with
the image's background. The amount of alpha-blend can be set to one value for the whole image or set on a pixel-by-pixel basis.
Double buffered drawing [Back to top]
HyperGraphics screen output can be drawn double-buffered to produce a flicker-free display. Double buffered drawing means that the image is first
drawn to memory and then the complete image is transfered to the screen.
User-defined graphical objects [Back to top]
HyperGraphics allows the creation of user-defined graphical objects that can have their behaviour overridden to provide any functionality
that is not provided by a standard object. Brand new objects can also be created by combining instances of other existing objects
and modifying their combined behaviour.
The open and flexible way that HyperGraphics has been designed means that the possibilities
of what user-defined objects can do is almost limitless. In an extreme case the user can override the draw event for an object and use direct
Windows API calls to create the object they want.
Object serialisation [Back to top]
All graphical objects can be serialised to a buffer which allows cut, paste and undo operations to be easily implemented. Complete object heirarchies
can also be serialised meaning that completed figures and plots can be saved to file. The open nature of HyperGraphics design means that any user-defined
properties can be easily written to this buffer and all overriden behaviour can be restored when the object is re-created from the buffer.
Printing [Back to top]
Printing support comes built-in with HyperGraphics meaning that a figure or plot can be sent to the printer with a single method call. In
addition it has print preview support allowing the plot to be seen as it would appear on the paper.
Figures and plots can also be exported as bitmaps or enhanced metafiles allowing them to be easily incorporated into word processing packages
such as Word ®.
Built-in objects [Back to top]
HyperGraphics comes with over many built-in objects. This gives a flavour of some of them and groups them by category,
|Basic objects||Window||Parent of all objects in a figure or plot|
| ||Text||Provides textual output - can be multi-lined and wrappable|
| ||Picture||Displays a bitmap or enhanced metafile|
|Plotting/charting||Key||Provides an automatic key for a plot|
| ||Axis||Provides extensive axis scaling and labelling functions for a view object|
| ||Data line||Data line for drawing x/y data|
| ||View||Rectangle to provide frame for graph|
| ||Line bar||Provides a line bar display (including "stacked" bars)|
| ||Linept||A line pointer|
| ||Matrix line||Provides pseudo 3D plot for a regular mesh of x/y/z data|
| ||P3Dline||Provides pseudo 3D plot for x/y/z line data|
| ||Bezier||Multi-segment Bezier spline|
|Diagramming||Connector||General connector line|
| ||Arrow||Displays one or more arrow heads on a line|
| ||HorConnector||Horizontal multi-segment fork connector|
| ||VerConnector||Vertical multi-segment fork connector|
| ||BezConnector||Bezier connector|
| ||RaConnector||General right-angled connector|
| ||Ellipse||General ellipse shape|
| ||Rectangle||General rectangle shape|
| ||BezShape||General Bezier shape|
| ||Polygon||General polygon shape|
| ||Triangle||General triangle shape|
| ||Table||Displays objects in rows and columns|
| ||Cell||Individual cell of a table object|
| ||Text box||Multi-lined text object in a box|
| ||Text ellipse||Multi-lined text object in an ellipse|
| ||Text tip||Multi-lined text object in a pointed-tip box|
|User interaction||Plug||Used to "connect" connectors to other objects|
| ||Socket||Used to "connect" connectors to other objects|
| ||MoveCursorObject||Provides movement functionality for a selected object|
| ||ResizeCursorObject||Provides resizing functionality for a selected object|
| ||RotateCursorObject||Provides rotation functionality for a selected object|
|Misc||ZoomWindow||Provides window zooming functionality|
|PrintPreview||Provides print preview functionality|
|SubType||Provides run-time type information|