WorldCanvasEvent class. It adds
information describing the reason a refresh event has occurred. An
object of this class is generated and distributed to all registered
WCRefreshEvent handlers whenever a refresh is explicitly or
implicitly generated on a WorldCanvas.
The reason field can be used to minimize the computation required
to redraw the screen, or it can be ignored, forcing all elements to
be redrawn. The reason for the refresh can be one of the
following:
Display::UserCommand
The refresh event was caused by the user explicitly calling
the WorldCanvas refresh
function.
Display::ColorTableChange
The refresh event was caused by a change in the distribution
of colors on the PixelCanvas.
Graphical elements that are dependent on colormaps need to be
re-drawn. Cached display lists that include colormap-dependent
graphical elements must be rebuilt.
Display::ColormapChange
This is a less severe version of the above refresh reason
(Display::ColorTableChange), and means that a single Colormap has
been modified, but that the overall distribution of colors remains
unchanged, ie. other Colormaps in this WorldCanvas' ColorTable are
unaffected.
Display::PixelCoordinateChange
The PixelCanvas has changed
size. Usually this means the graphics drawn must be translated to
a new position (recentered) which can be done by translating all
primitives and display lists.
Display::LinearCoordinateChange
The linear coordinate system which is overlaid on the
PixelCanvas (normally by a WorldCanvas has changed.
Display::WorldCoordinateChange
The world coordinate system which is overlaid on the
PixelCanvas (normally by a WorldCanvas has changed.
Display::BackCopiedToFront
The back buffer has been written to the screen. Only
transient graphics drawers should be interested in this refresh
reason. Any graphics which are required to be visible over
everything else on the PixelCanvas (or WorldCanvas) should catch
and respond to this refresh reason. Examples include interactively
constructed regions, eg. a zooming box.
Example
Motivation
A compact way of passing refresh event information around the
display classes was needed, with a functional but tight and
efficient interface.
Thrown Exceptions
To Do
Member Description
Constructor taking a pointer to the WorldCanvas for which the
event is valid, and the reason for the refresh.
Destructor.
virtual Display::RefreshReason reason() const
Why did the refresh occur?
(Required) default constructor.
WCRefreshEvent(const WCRefreshEvent &other)
(Required) copy constructor.
WCRefreshEvent &operator=(const WCRefreshEvent &other)
(Required) copy assignment.