Programming Reference:GraphDisplay Class

From BCI2000 Wiki
Jump to: navigation, search




An object of type GraphDisplay refers to a graphical output rectangle, and a set of graphical objects that are displayed within that rectangle.

GraphDisplay does not make assumptions on output device (screen, printer) or whether it refers to an entire window, or a rectangle within a larger window.

The GraphDisplay class is contained within the GUI namespace. To use it, either qualify its name: GUI::GraphDisplay (recommended for header files); or put a using statement on top of the file (recommended for cpp files):

using namespace GUI;



Initializes a GraphDisplay object such that it is not bound to any device or window.


The GraphDisplay destructor deletes all GraphObjects within the display.


Removes and deletes all GraphObject instances contained in the GraphDisplay.


Marks the entire GraphDisplay area for repainting.


Marks a rectangle within the GraphDisplay for repainting. The rectangle is given in screen pixel coordinates.

NOTE: The use of pixel coordinates has been introduced in rev 3599 to avoid artifacts from converting forth and back between normalized and pixel coordinates. Originally, the rectangle was specified in normalized coordinates.


Forces an immediate repaint of all invalidated areas in the GraphDisplay, making sure that changes in GraphObject state are reflected in the device's frame buffer. In BCI2000 application modules, this function should be called immediately before setting the StimulusTime time stamp.

GUI::Rect NormalizedToPixelCoordinates(GUI::Rect)

GUI::Rect PixelToNormalizedCoordinates(GUI::Rect)

These functions are used to convert between pixel/device coordinates, and normalized coordinates. Note that, from application code, GraphObjects are positioned and sized using normalized coordinates relative to the GraphDisplay's screen rectangle; in their OnPaint handlers, they are provided with pixel coordinates.


Triggers a repaint of the GraphDisplay's contents. When a region handle is specified, it is used as a clip during the paint operation, saving redraw of the entire GraphDisplay area when only a subregion has become invalid.


Triggers a Change event for all GraphObjects that are part of the display. For modifications in size or draw context, this function is called automatically.

Click(int x, int y)

Triggers a Click event for all GraphObjects that are part of the display. Unlike GraphObject::OnClick(), coordinates are pixel coordinates.

QueueOfGraphObjects ObjectsClicked()

When the user clicks inside a GraphDisplay, all objects' Click events are called to determine which of them were below the mouse pointer when clicking. Objects that consider themselves clicked are added to a queue, which is of type std::queue<GraphObject*>. This queue is accessible from the ObjectsClicked function; from the queue, clicked objects may be retrieved using its pop() member function.


Empties the queue of clicked objects.

BitmapImage BitmapData(width=0, height=0)

Returns the display's content, resampled to the specified target resolution, as a BitmapImage. When both width and height are 0 (the default), the image is returned in its original size, and no resampling takes place.


GUI::DrawContext Context (rw)

The draw context into which a GraphDisplay is supposed to render the GraphObjects it contains. A draw context consists of a handle to an output device context (HDC in Windows), and a rectangle within that device context's area.

RGBColor Color (rw)

The GraphDisplay's background color.

See also

Programming Reference:GraphObject Class, Programming Reference:DisplayWindow Class