TransferFunctionPlot Class Reference

The widget for displaying the transfer function as a piecewise-linear function. More...

#include "TransferFunctionWidget.h"

Collaboration diagram for TransferFunctionPlot:

Collaboration graph
[legend]

List of all members.

Public Types

enum  PlotMode
 Defines the differant modes for working with points in a plot.

Public Member Functions

 TransferFunctionPlot (wxWindow *parent)
 Constructor.
 ~TransferFunctionPlot ()
 De-constructor.
void SetPlotMode (PlotMode m)
 Sets the plot mode to use.
void ResetPlot ()
 Resets the plots to there defualt states.
void DelayRealtimeUpdate (bool v)
 Enables/Disables realtime plot change updates.
void DrawAll (bool b)
 Enable/Disable drawing all of the plots.
void DrawHistogram (bool b)
 Enable/Disable drawing the histogram.
void MakeRedActive ()
 Makes the red plot responsive to user input.
void MakeGreenActive ()
 Makes the green plot responsive to user input.
void MakeBlueActive ()
 Makes the blue plot responsive to user input.
void MakeAlphaActive ()
 Makes the alpha plot responsive to user input.
void OnPaint (wxPaintEvent &e)
 Called when the widget needs to be redrawn.
void MouseMove (wxMouseEvent &m)
 Called when the mouse moves.
void MouseLeftUp (wxMouseEvent &m)
 Called when the left mouse button is released.
void MouseLeftDown (wxMouseEvent &m)
 Called when the left mouse button is pressed.
void MouseWheel (wxMouseEvent &m)
 Called when the mouse wheel is moved.
void MouseLeave (wxMouseEvent &m)
 Called when the mouse leaves the plot area.
void SetListner (TransferPlotChangeListner *l)
 Sets object that listens for plot change events.
void UpdateTexture (TransferTexture *tex)
 Updates the given texture to match the corrent plot.
void Load (const char *file)
 Load a plot from a file.
void Save (const char *file)
 Save the current plot data to a file.
void RefreshListner ()
 Updates the listner with new plot data.
void SetHistogram (const unsigned int *h)
 Sets the histogram.

Protected Member Functions

void DrawPlot (wxPaintDC &dc, const std::vector< PlotPoint > &plot, const Color4f &color) const
 Draws a vector of PlotPoints as a piecwise linear function.
void DrawPlotPoints (wxPaintDC &dc, const std::vector< PlotPoint > &plot, const Color4f &color) const
 Draws PlotPoints as points.
void PlotPointToScreen (const PlotPoint &p, int &x, int &y) const
 Converts a plot point to a point that can be used on the screen.
void ScreenToPlotPoint (int x, int y, PlotPoint &p) const
 Converts a screen point to a plot poin.
int PlotDataValueToXCoord (int dataValue) const
 Converts a plot point data value to a screen x coordinate.
int PlotValueToYCoord (float value) const
 Converts a plot point value to a screen y coordinate.
bool SelectPoint (wxCoord x, wxCoord y)
 Tests if the given point intersects a plot point in the active plot.
int SelectPoint (wxCoord x, wxCoord y, const std::vector< PlotPoint > &plot) const
 Tests if the given point intersects a plot point in the given plot.
void AddPoint (wxCoord x, wxCoord y)
 Adds a point at the given position.
void RemovePoint (wxCoord x, wxCoord y)
 Removes a point at the given position (if one exists).
bool LoadPlot (std::ifstream &file, std::vector< PlotPoint > &plot, int n)
 Reads plot points from a file and places them in a plot.
void SavePlot (std::ofstream &file, const std::vector< PlotPoint > &plot)
 Saves plot points to a file.


Detailed Description

The widget for displaying the transfer function as a piecewise-linear function.

Definition at line 42 of file TransferFunctionWidget.h.


Constructor & Destructor Documentation

TransferFunctionPlot::TransferFunctionPlot ( wxWindow *  parent  ) 

Constructor.

Parameters:
[in] parent the parent window the widget should reside in.

Definition at line 78 of file TransferFunctionWidget.cpp.


Member Function Documentation

void TransferFunctionPlot::SetPlotMode ( PlotMode  m  ) 

Sets the plot mode to use.

Parameters:
[in] m the new plot mode.

Definition at line 293 of file TransferFunctionWidget.cpp.

Referenced by TransferFunctionWidget::OnPlotModeSelection().

void TransferFunctionPlot::DelayRealtimeUpdate ( bool  v  )  [inline]

Enables/Disables realtime plot change updates.

Parameters:
[in] v set to true to delay realtime plot change updates, otherwise set to false.

Definition at line 88 of file TransferFunctionWidget.h.

Referenced by TransferFunctionWidget::DelayRealtimeUpdate().

void TransferFunctionPlot::DrawAll ( bool  b  ) 

Enable/Disable drawing all of the plots.

Parameters:
[in] b set to true to draw the plots, set to false to not draw all the plots.

Definition at line 299 of file TransferFunctionWidget.cpp.

Referenced by TransferFunctionWidget::OnDrawAllClick().

void TransferFunctionPlot::DrawHistogram ( bool  b  ) 

Enable/Disable drawing the histogram.

Parameters:
[in] b set to true to draw the histogram, set to false to not draw the histogram.

Definition at line 306 of file TransferFunctionWidget.cpp.

Referenced by TransferFunctionWidget::OnDrawHistogramClick().

void TransferFunctionPlot::OnPaint ( wxPaintEvent &  e  ) 

Called when the widget needs to be redrawn.

Parameters:
[in,out] e the event.

Definition at line 161 of file TransferFunctionWidget.cpp.

References DrawPlot(), and DrawPlotPoints().

void TransferFunctionPlot::MouseMove ( wxMouseEvent &  m  ) 

Called when the mouse moves.

Parameters:
[in,out] m the mouse event.

Definition at line 198 of file TransferFunctionWidget.cpp.

References Clamp(), PlotPoint::dataValue, PlotDataValueToXCoord(), RefreshListner(), ScreenToPlotPoint(), and PlotPoint::value.

void TransferFunctionPlot::MouseLeftUp ( wxMouseEvent &  m  ) 

Called when the left mouse button is released.

Parameters:
[in,out] m the mouse event.

Definition at line 271 of file TransferFunctionWidget.cpp.

void TransferFunctionPlot::MouseLeftDown ( wxMouseEvent &  m  ) 

Called when the left mouse button is pressed.

Parameters:
[in,out] m the mouse event.

Definition at line 243 of file TransferFunctionWidget.cpp.

References AddPoint(), PlotPoint::dataValue, RemovePoint(), ScreenToPlotPoint(), SelectPoint(), and PlotPoint::value.

void TransferFunctionPlot::MouseWheel ( wxMouseEvent &  m  ) 

Called when the mouse wheel is moved.

Parameters:
[in,out] m the mouse event.

Definition at line 278 of file TransferFunctionWidget.cpp.

void TransferFunctionPlot::MouseLeave ( wxMouseEvent &  m  ) 

Called when the mouse leaves the plot area.

Parameters:
[in,out] m the mouse event.

Definition at line 283 of file TransferFunctionWidget.cpp.

References RefreshListner().

void TransferFunctionPlot::SetListner ( TransferPlotChangeListner l  ) 

Sets object that listens for plot change events.

Parameters:
[in] l pointer to the listner.

Definition at line 349 of file TransferFunctionWidget.cpp.

References RefreshListner().

Referenced by TransferFunctionWidget::SetListner().

void TransferFunctionPlot::UpdateTexture ( TransferTexture tex  ) 

Updates the given texture to match the corrent plot.

Parameters:
[out] tex pointer to the texture.

Definition at line 356 of file TransferFunctionWidget.cpp.

References TransferTexture::CreateFunction().

Referenced by RTVolumeRenderer::TransferPlotChanged().

void TransferFunctionPlot::Load ( const char *  file  ) 

Load a plot from a file.

Parameters:
[in] file the file to load.

Definition at line 522 of file TransferFunctionWidget.cpp.

References ErrorMessage(), LoadPlot(), and RefreshListner().

Referenced by TransferFunctionWidget::OnLoadClick().

void TransferFunctionPlot::Save ( const char *  file  ) 

Save the current plot data to a file.

Parameters:
[in] file the name of the file.

Definition at line 624 of file TransferFunctionWidget.cpp.

References ErrorMessage(), and SavePlot().

Referenced by TransferFunctionWidget::OnSaveClick().

void TransferFunctionPlot::SetHistogram ( const unsigned int *  h  ) 

Sets the histogram.

Parameters:
[in] h the histogram, assumed to have at least 256 elements.

Definition at line 694 of file TransferFunctionWidget.cpp.

Referenced by TransferFunctionWidget::SetHistogram().

void TransferFunctionPlot::DrawPlot ( wxPaintDC &  dc,
const std::vector< PlotPoint > &  plot,
const Color4f color 
) const [protected]

Draws a vector of PlotPoints as a piecwise linear function.

Parameters:
[in] dc the rendering context.
[in] plot the plot points.
[in] color the color to draw the plot.

Definition at line 389 of file TransferFunctionWidget.cpp.

References Color4f::Get(), and PlotPointToScreen().

Referenced by OnPaint().

void TransferFunctionPlot::DrawPlotPoints ( wxPaintDC &  dc,
const std::vector< PlotPoint > &  plot,
const Color4f color 
) const [protected]

Draws PlotPoints as points.

Parameters:
[in] dc the rendering context.
[in] plot the plot points.
[in] color the color to draw the points.

Definition at line 410 of file TransferFunctionWidget.cpp.

References Color4f::Get(), and PlotPointToScreen().

Referenced by OnPaint().

void TransferFunctionPlot::PlotPointToScreen ( const PlotPoint p,
int &  x,
int &  y 
) const [protected]

Converts a plot point to a point that can be used on the screen.

Parameters:
[in] p the plot point.
[out] x the x value of the screen point.
[out] y the y value of the screen point.

Definition at line 363 of file TransferFunctionWidget.cpp.

References PlotPoint::dataValue, PlotDataValueToXCoord(), PlotValueToYCoord(), and PlotPoint::value.

Referenced by DrawPlot(), DrawPlotPoints(), and SelectPoint().

void TransferFunctionPlot::ScreenToPlotPoint ( int  x,
int  y,
PlotPoint p 
) const [protected]

Converts a screen point to a plot poin.

Parameters:
[in] x the x value of the screen point.
[in] y the y value of the screen point.
[out] p the plot point.

Definition at line 382 of file TransferFunctionWidget.cpp.

References PlotPoint::dataValue, and PlotPoint::value.

Referenced by AddPoint(), MouseLeftDown(), and MouseMove().

int TransferFunctionPlot::PlotDataValueToXCoord ( int  dataValue  )  const [protected]

Converts a plot point data value to a screen x coordinate.

Parameters:
[in] dataValue the plot point data value.
Returns:
the screen x coordinate.

Definition at line 370 of file TransferFunctionWidget.cpp.

Referenced by AddPoint(), MouseMove(), and PlotPointToScreen().

int TransferFunctionPlot::PlotValueToYCoord ( float  value  )  const [protected]

Converts a plot point value to a screen y coordinate.

Parameters:
[in] value the plot point value.
Returns:
the screen y coordinate.

Definition at line 376 of file TransferFunctionWidget.cpp.

Referenced by PlotPointToScreen().

bool TransferFunctionPlot::SelectPoint ( wxCoord  x,
wxCoord  y 
) [protected]

Tests if the given point intersects a plot point in the active plot.

Parameters:
[in] x the x position.
[in] y the y position.
Returns:
true if the point intersects a plot point and sets 'selectedPoint' to the index of the selected points, false is returned otherwise.

Definition at line 438 of file TransferFunctionWidget.cpp.

Referenced by MouseLeftDown(), and RemovePoint().

int TransferFunctionPlot::SelectPoint ( wxCoord  x,
wxCoord  y,
const std::vector< PlotPoint > &  plot 
) const [protected]

Tests if the given point intersects a plot point in the given plot.

Parameters:
[in] x the x position.
[in] y the y position.
[in] plot the plot.
Returns:
the index of the selected plot point or -1 if no point is selected.

Definition at line 451 of file TransferFunctionWidget.cpp.

References Inside(), PlotPointToScreen(), ScreenRect::x1, ScreenRect::x2, ScreenRect::y1, and ScreenRect::y2.

void TransferFunctionPlot::AddPoint ( wxCoord  x,
wxCoord  y 
) [protected]

Adds a point at the given position.

Parameters:
[in] x the x position.
[in] y the y position.

Definition at line 473 of file TransferFunctionWidget.cpp.

References PlotDataValueToXCoord(), RefreshListner(), and ScreenToPlotPoint().

Referenced by MouseLeftDown().

void TransferFunctionPlot::RemovePoint ( wxCoord  x,
wxCoord  y 
) [protected]

Removes a point at the given position (if one exists).

Parameters:
[in] x the x position.
[in] y the y position.

Definition at line 505 of file TransferFunctionWidget.cpp.

References RefreshListner(), and SelectPoint().

Referenced by MouseLeftDown().

bool TransferFunctionPlot::LoadPlot ( std::ifstream &  file,
std::vector< PlotPoint > &  plot,
int  n 
) [protected]

Reads plot points from a file and places them in a plot.

Parameters:
[in] file the file to read from.
[out] plot the plot where read data will be stored.
[in] n the number of plot points to read from the file.
Returns:
True if the plot was loaded, false if the plot data is malformed.

Definition at line 658 of file TransferFunctionWidget.cpp.

References PlotPoint::dataValue, and PlotPoint::value.

Referenced by Load().

void TransferFunctionPlot::SavePlot ( std::ofstream &  file,
const std::vector< PlotPoint > &  plot 
) [protected]

Saves plot points to a file.

Parameters:
[in] file the file to write to.
[in] plot the plot to save.

Definition at line 681 of file TransferFunctionWidget.cpp.

Referenced by Save().


The documentation for this class was generated from the following files:

Generated on Thu Jan 15 00:58:04 2009 for RTVolumeRendering by  doxygen 1.5.6