Basic Functions Specification
To be able to draw various shapes onto a canvas, the shapes should be viewable by a uniform outline and a possible line colour.
Traditionally the shape are drawn with a smooth contour.
For the purposes of the tool the shapes should be allowed to have complex contours (ie. where a contour line may cross itself).
Shapes can be overlapped and are normally transparent.
To be able to display text on the canvas to label the shapes and also to create notes or label regions.
On occasions straight lines may be used to more clearly associate a lable with a contour.
One configuration of the system should ensure that the associations between contours and labels are automatically maintained as shapes or labels are moved.
The ability to move objects that already exist on the canvas to a new position.
While doing this some inter-object relations may need to be managed.
The ability to resize objects that already exist on the canvas to a new size.
Fill Shape Intersections
The ability to colour in a unique region, either the intersection of two or more shapes or the remainder of a shape after other intersections.
Delete Unwanted Objects
To be able to delete unwanted objects.
To be able to select an object and create a duplicated of it to be placed elsewhere.
Other Core Functions
To support those interested in the use of the tool.
Logging and data capture
The logging of user behaviour with the tool is of importance.
Logs should be maintained so that their data can be easily collected. Internet based logging, or writting to reliable local store.
For the purposes of a studying with the tool, it should have highly flexible configurations. The configuration feature support the replication of the same settings across a number of instances of the tool. The configuration details should be saved as part of the logging facility.
The experimenter should be able to enforce or enable the following:
1) Adherence or otherwise to the well-formedness conditions.
2) Ensure that object types are created in a specified manner/order. For example, the configuration could be given by a regular expression such as:
(This would mean any order of contours and labels, but once once on is filled no more created contours or labels.)
The same could apply for moving objects and system operations:
After each movement of a contour all labels are deleted.