About Commands and Tools

API functions are available for logging instantaneous and noninstantaneous tools and command waypoints, recording appropriate data for each. Both tools and commands appear in the Commands timeline track.

An instantaneous tool causes an effect that happens immediately and the waypoint has no duration. A noninstantaneous tool is typically interactive and the waypoint has a duration.

In general, an icon, menu item, or command on the command line activates a tool.

Tools and commands waypoints should include primary functions, tools, and commands that the user explicitly executes. Internal commands, automatically executed commands, or commands that are executed as part of a script, should not be included.

Tools and Commands waypoints can include the following data:
Example of reporting a command event:
#include <Chronicle/Chronicle.h>

// create the waypoint through the facade; it is automatically timestamped
Chronicle::Waypoint *waypoint = Chronicle::Facade::Waypoints::commandEntered(L"LINE");

// for command waypoints, optionally add parameters
Chronicle::Facade::Waypoints::commandParameterEntered(waypoint, L"From point", L"#-2,1");
Chronicle::Facade::Waypoints::commandParameterEntered(waypoint, L"To point", L"@5,0");
Chronicle::Facade::Waypoints::commandParameterEntered(waypoint, L"To point", L"@0,3");
Chronicle::Facade::Waypoints::commandParameterEntered(waypoint, L"To point", L"@-5,3");

// to automatically set the duration, indicate when the command is completed
Chronicle::Facade::Waypoints::commandCompleted(waypoint);

// if the command is provided by a plug-in, specify the plug-in name
Chronicle::Facade::Waypoints::commandFromPlugin(waypoint, L"SamplePluginName");

// report the waypoint (this is always the last step)
Chronicle::Error err = Chronicle::Facade::waypointReached(waypoint);

// after reporting the waypoint, it is automatically deleted!
waypoint = NULL;
Example of reporting a noninstantaneous tool event:
#include <Chronicle/Chronicle.h>

// create the waypoint through the facade; it is automatically timestamped
Chronicle::Waypoint *waypoint = Chronicle::Facade::Waypoints::toolStarted(L"Circle", 1234);

// for tool waypoints, optionally add parameters
Chronicle::Facade::Waypoints::toolParameter(waypoint, L"Origin", Chronicle::PointF(127.5, -64.0));
Chronicle::Facade::Waypoints::toolParameter(waypoint, L"Radius", 97.0);
Chronicle::Facade::Waypoints::toolParameter(waypoint, L"Line Width", 3.0);
Chronicle::Facade::Waypoints::toolParameter(waypoint, L"Filled", true);
Chronicle::Facade::Waypoints::toolParameter(waypoint, L"Fill Color", Chronicle::Color(255, 0, 128, 192));
Chronicle::Facade::Waypoints::toolParameter(waypoint, L"Line Color", Chronicle::Color(255, 255, 255));

// to automatically set the duration, indicate when the tool is finished
Chronicle::Facade::Waypoints::toolFinished(waypoint);

// if the tool is provided by a plug-in, specify the plug-in name
Chronicle::Facade::Waypoints::toolFromPlugin(waypoint, L"SamplePluginName");

// report the waypoint (this is always the last step)
Chronicle::Error err = Chronicle::Facade::waypointReached(waypoint);

// after reporting the waypoint, it is automatically deleted!
waypoint = NULL;
Example of reporting an instantaneous tool event:
#include <Chronicle/Chronicle.h>

// create the waypoint through the facade; it is automatically timestamped
Chronicle::Waypoint *waypoint = Chronicle::Facade::Waypoints::toolUsed(L"Text", 1234);

// for tool waypoints, optionally add parameters
Chronicle::Facade::Waypoints::toolParameter(waypoint, L"Bounds", Chronicle::RectangleF(0, 0, 240, 64));
Chronicle::Facade::Waypoints::toolParameter(waypoint, L"Text", "Hello, world!");

// if the tool is provided by a plug-in, specify the plug-in name
Chronicle::Facade::Waypoints::toolFromPlugin(waypoint, L"SamplePluginName");

// report the waypoint (this is always the last step)
Chronicle::Error err = Chronicle::Facade::waypointReached(waypoint);

// after reporting the waypoint, it is automatically deleted!
waypoint = NULL;