ViewBase Class Reference

#include <ViewBase.h>

Inheritance diagram for ViewBase:

Inheritance graph
DataViewGroupViewBaseObserverEpsViewQtViewImpOpenGLViewQtGroupViewQtViewQtViewWidgetOpenGLWindow
[legend]
Collaboration diagram for ViewBase:

Collaboration graph
ObserverPlotterBaseObservableSizePointRect
[legend]
List of all members.

Detailed Description

The abstract base class for views.

A view is a rectangle on the graphic device into which drawing is done. Derived classes provide a concrete implementation based on some graphics toolkit. Examples are the QtView and EpsView classes.

A view is an Observer of a PlotterBase object, the base class of plotters. When it receives the Observer::update message, it initiates drawing by calling back the PlotterBase object with a pointer to itself. Drawing can also be initiated by an application by calling the PlotterBase object with view. For example, an EPSF file can be generated by a plotter by calling it with an EpsView.

Views are responsible for the translation from the data coordinate space used by the PlotterBase object to the graphics device coordinate space. They maintain their own coordinate system as float objects to be compatible with scalable graphics tool kits such as Postscript.

Requests:
Also being able to capture these values for input to the range widgets (e.g., set Z High to _this_ bin's value, set Z low to _that_ bin's value) would be nice.
Todo:
Why doesn't getXXXRect() return reference?
Author:
Paul F. Kunz <Paul_Kunz@slac.stanford.edu>

Sanket Biren Malde <sanket@stanford.edu>

Oded Wurman <owurman@stanford.edu>

Xie Fang <xiefang@stanford.edu>

Definition at line 62 of file ViewBase.h.

Public Member Functions

virtual void drawColorLines (const std::vector< double > &x, const std::vector< double > &y, Line::Style style, const std::vector< Color > &color, float size)=0
 Draws multiple line segments, each with a different color - that is, a line between x0,y0 and x1,y1, with color[0] =color[1] another between x2,y2 and x3,y3 with color[2]=color[3] and so on.
virtual void drawImage (const std::string &filename, int position=0)
 Draws a image.
virtual void drawLatex (const std::string &eq, int position=0)
 Draws a Latex equation.
virtual void drawLines (const std::vector< double > &x, const std::vector< double > &y, Line::Style style, const Color &color, float size)=0
 Draws multiple line segments - that is, a line between x0,y0 and x1,y2, another between x2,y2 and x3,y3 and so on.
virtual void drawPoints (const std::vector< double > &x, const std::vector< double > &y, const std::vector< Color > &colors, Symbol::Type type, float sym_size)=0
 Draws symbol points.
virtual void drawPoints (const std::vector< double > &x, const std::vector< double > &y, Symbol::Type type, float sym_size, const Color &color)=0
 Draws symbol points.
virtual void drawPolygon (const std::vector< double > &xpoints, const std::vector< double > &ypoints, const Color &color, const Color &edge)
 Draws a polygon.
virtual void drawPolyLine (const std::vector< double > &xpoints, const std::vector< double > &ypoints, Line::Style style, const Color &color, float size)=0
 Draws a polyline.
virtual void drawSelf ()
 Draws itself.
virtual void drawSquare (double x1, double y1, double x2, double y2, int red, int green, int blue)=0
 Draws a colored square.
virtual void drawText (const std::string &s, float x, float y, float fontsize, float angle=0.0, char xp= 'l', char yp= 't', bool resize=false, const FontBase *font=0, const Color *color=0)=0
 Draws a text string at a point in the view's coordinate system.
virtual void drawViewLines (const std::vector< double > &x, const std::vector< double > &y, Line::Style style, const Color &color, float size)=0
 Draws multiple line segments.
virtual void drawViewLines (const std::vector< double > &x, const std::vector< double > &y, Line::Style style, bool color, float size)=0
 Draws multiple line segments.
virtual void drawViewSquare (float x1, float y1, float x2, float y2, int red, int green, int blue)=0
 Draws a colored square in view space.
virtual double getAspectRatio () const
 Get the aspect ratio.
virtual Rect getDrawRect () const=0
 Returns the drawing Rectangle in the devices coordinate system.
PlotterBasegetPlotter ()
 Returns the plotter used by this view.
PlotterBasegetPlotter () const
 Returns the plotter used by this view.
const RangegetRange (Axes::Type axis) const
 Returns the range of the data space on specified axis.
const RectgetRawRect () const
 Returns the rectangle before transform.
const RectgetUserRect () const
 Is called by the AxisRepBase object (or one of its derived objects), and returns the rectangle where the drawing is made.
virtual void setDrawRect (float x, float y, float w, float h)=0
 Sets the drawing Rectangle in the devices coordinate system.
virtual void setPlotter (PlotterBase *plotter)
 Sets the PlotterBase object to plotter.
virtual void update (const Observable *)=0
 Implements the update method of the Observer pattern.
virtual void updateDrawRect ()
 Update the drawing Rectangle in the devices coordinate system.
virtual float userToDrawColor (double c) const=0
 Converts a coordinate in user space to drawing space along the color (X) axis.
virtual float userToDrawX (double x) const=0
 Converts a coordinate in user space to drawing space along the X axis.
virtual float userToDrawXAutoInv (double x) const=0
virtual float userToDrawY (double y) const=0
 Converts a coordinate in user space to drawing space along the Y axis.
 ViewBase (const ViewBase &)
 The copy constructor.
 ViewBase (PlotterBase *plotter)
 The following constructor takes a plotter as an argument to use with a drawing.
 ViewBase ()
 The default constructor.
virtual void willDelete (const Observable *plotter)
 Responds to notification that the PlotterBase object is being deleted.
virtual ~ViewBase ()
 The virtual destructor.

Protected Attributes

PlotterBasem_plotter
 The plotter object used by this view.


Constructor & Destructor Documentation

ViewBase (  ) 

The default constructor.

Definition at line 27 of file ViewBase.cxx.

ViewBase ( PlotterBase plotter  ) 

The following constructor takes a plotter as an argument to use with a drawing.

Definition at line 32 of file ViewBase.cxx.

ViewBase ( const ViewBase  ) 

The copy constructor.

~ViewBase (  )  [virtual]

The virtual destructor.

Definition at line 37 of file ViewBase.cxx.


Member Function Documentation

virtual void drawColorLines ( const std::vector< double > &  x,
const std::vector< double > &  y,
Line::Style  style,
const std::vector< Color > &  color,
float  size 
) [pure virtual]

Draws multiple line segments, each with a different color - that is, a line between x0,y0 and x1,y1, with color[0] =color[1] another between x2,y2 and x3,y3 with color[2]=color[3] and so on.

x pairs of coordinates in user space on the X axis for the beginning and the end of the line segment.

y pairs of coordinates in user space on the Y axis for the beginning and the end of the line segment.

style the line style.

color The RGB values for the color of the line.

size The thickness of the line.

Implemented in EpsView, and QtViewImp.

Referenced by ContourPointRep::drawValues(), and ContourPointRep::drawValuesWithStyle().

void drawImage ( const std::string &  filename,
int  position = 0 
) [virtual]

Draws a image.

This is called by drawLatex. Meaning of position: 0.Full 1.Top 2.Bottom 3.Left TODO: use enum for position.

Reimplemented in QtViewImp.

Definition at line 112 of file ViewBase.cxx.

void drawLatex ( const std::string &  eq,
int  position = 0 
) [virtual]

Draws a Latex equation.

This function will call drawImage. Meaning of position: 0.Full 1.Top 2.Bottom 3.Left

Reimplemented in QtViewImp.

Definition at line 119 of file ViewBase.cxx.

Referenced by BoxTextRep::drawProjectedValues(), AxisRepBase::drawTitle(), AxisRepBase::drawXLabels(), AxisRepBase::drawYLabels(), and AxisRepColor::drawZLabels().

virtual void drawLines ( const std::vector< double > &  x,
const std::vector< double > &  y,
Line::Style  style,
const Color color,
float  size 
) [pure virtual]

Draws multiple line segments - that is, a line between x0,y0 and x1,y2, another between x2,y2 and x3,y3 and so on.

x pairs of coordinates in user space on the X axis for the beginning and the end of the line segment. y pairs of coordinates in user space on the Y axis for the beginning and the end of the line segment. style the line style. color The color size The thickness of the line.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by AxisRepBase::drawCrossHairs().

virtual void drawPoints ( const std::vector< double > &  x,
const std::vector< double > &  y,
const std::vector< Color > &  colors,
Symbol::Type  type,
float  sym_size 
) [pure virtual]

Draws symbol points.

x and y are the coordinates, type is the type of symbol, and sym_size is the size. hue is the hue parameters for each point. The saturation and brightness are set to 1.0.

Implemented in EpsView, and QtViewImp.

virtual void drawPoints ( const std::vector< double > &  x,
const std::vector< double > &  y,
Symbol::Type  type,
float  sym_size,
const Color color 
) [pure virtual]

Draws symbol points.

x and y are the coordinates, type is the type of symbol, and sym_size is the size. All symbols are draw in the same color.

Implemented in EpsView, OpenGLView, and QtViewImp.

void drawPolygon ( const std::vector< double > &  xpoints,
const std::vector< double > &  ypoints,
const Color color,
const Color edge 
) [virtual]

Draws a polygon.

xpoints points along the X axis. ypoints points along the Y axis. color The color.

Reimplemented in QtViewImp.

Definition at line 126 of file ViewBase.cxx.

virtual void drawPolyLine ( const std::vector< double > &  xpoints,
const std::vector< double > &  ypoints,
Line::Style  style,
const Color color,
float  size 
) [pure virtual]

Draws a polyline.

xpoints points along the X axis. ypoints points along the Y axis. style the line style. color The color. size The thickness of the line.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by AxisRepBase::drawAxesLines(), AxisRepBase::drawGridLines(), ColorBoxPointRep::drawProjectedValues(), ContourPointRep::drawValues(), and ContourPointRep::drawValuesWithStyle().

void drawSelf (  )  [virtual]

Draws itself.

Definition at line 60 of file ViewBase.cxx.

References PlotterBase::drawIn(), and ViewBase::m_plotter.

Referenced by QtViewWidget::draw(), QtView::draw(), QtView::drawWithPixmap(), OpenGLWindow::paint(), and QtViewWidget::paintEvent().

virtual void drawSquare ( double  x1,
double  y1,
double  x2,
double  y2,
int  red,
int  green,
int  blue 
) [pure virtual]

Draws a colored square.

Used for shading on the cuts and the gray plot.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by CutRangeRep::drawInvertedRange1D(), CutRangeRep::drawInvertedRange2D(), and CutRangeRep::drawNormalRange().

virtual void drawText ( const std::string &  s,
float  x,
float  y,
float  fontsize,
float  angle = 0.0,
char  xp = 'l',
char  yp = 't',
bool  resize = false,
const FontBase font = 0,
const Color color = 0 
) [pure virtual]

Draws a text string at a point in the view's coordinate system.

Parameters:
s The string to be drawn.
x The x coordinate in the view's coordinate system.
y The y coordinate in the view's coordinate system.
fontsize The font size. If zero, then taken from the font object.
angle The angle to draw. 90 degrees is vertical with the beginning of the text towards the bottom.
xp The horizontal alignment with respect to the coordinate. 'r' means the coordinate is on the right side of the text, 'c' means centered, and 'l' for the left side.
yp The vertical alignment with respect to the coordinate. 't' means toward the top, 'c' means centered, and 'b' means bottom.
resize If true, the bounding rectangle of the view should be re-sized to fit the text string.
font If not a null pointer, then the font object to be used, otherwise the default font will be used.
color If not given as argument, the default color is that of the default Color constructor which is black.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by RepBase::displayError(), UnderflowTextRep::drawProjectedValues(), TotalTextRep::drawProjectedValues(), OverflowTextRep::drawProjectedValues(), FuncParmRep::drawProjectedValues(), FuncChiRep::drawProjectedValues(), BoxTextRep::drawProjectedValues(), AverageTextRep::drawProjectedValues(), AxisRepBase::drawTitle(), AxisRepBase::drawXLabels(), AxisRepBase::drawXMag(), AxisRepBase::drawXTickLabel(), AxisRepBase::drawYLabels(), AxisRepBase::drawYMag(), AxisRepBase::drawYTickLabel(), AxisRepBase::drawYTickLabels(), AxisRepColor::drawZLabels(), and AxisRepColor::drawZTickLabels().

virtual void drawViewLines ( const std::vector< double > &  x,
const std::vector< double > &  y,
Line::Style  style,
const Color color,
float  size 
) [pure virtual]

Draws multiple line segments.

x pairs of coordinates in view space on the X axis for the beginning and the end of the line segment. y pairs of coordinates in view space on the Y axis for the beginning and the end of the line segment. style the line style. color The color size The thickness of the line.

Implemented in EpsView, OpenGLView, and QtViewImp.

virtual void drawViewLines ( const std::vector< double > &  x,
const std::vector< double > &  y,
Line::Style  style,
bool  color,
float  size 
) [pure virtual]

Draws multiple line segments.

x pairs of coordinates in view space on the X axis for the beginning and the end of the line segment. y pairs of coordinates in view space on the Y axis for the beginning and the end of the line segment. style the line style. color if true, use the display's point color; otherwise, use the default color. size The thickness of the line.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by DrawBorder::draw(), ContourPointRep::drawContourTicks(), DrawBorder::drawKnob(), AxisRepBase::drawXTickLines(), AxisRepBase::drawYTickLines(), and AxisRepColor::drawZTickLines().

virtual void drawViewSquare ( float  x1,
float  y1,
float  x2,
float  y2,
int  red,
int  green,
int  blue 
) [pure virtual]

Draws a colored square in view space.

Used for shading on the cuts and the gray plot.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by AxisRepColor::drawColorScale().

double getAspectRatio (  )  const [virtual]

Get the aspect ratio.

Definition at line 88 of file ViewBase.cxx.

References ViewBase::m_plotter.

Referenced by CanvasView::contentsMouseMoveEvent(), DataView::prepareMarginRect(), QtViewWidget::update(), and QtView::updateDrawRect().

virtual Rect getDrawRect (  )  const [pure virtual]

Returns the drawing Rectangle in the devices coordinate system.

Must be implemented in derived class.

Implemented in EpsView, OpenGLView, QtGroupView, QtView, and QtViewWidget.

Referenced by ViewBaseXML::createElement(), DrawBorder::draw(), QtViewImp::draw_Text(), QtViewImp::drawImage(), QtViewImp::drawText(), AxisRepBase::drawTitle(), AxisRepBase::drawXLabels(), AxisRepBase::drawXMag(), AxisRepBase::drawYLabels(), AxisRepColor::drawZLabels(), DataView::prepareMarginRect(), AxisRepBase::setFontSize(), AxisRepBase::setXFontSize(), AxisRepBase::setYFontSize(), AxisRepBase::setZFontSize(), XPADDING(), YPADDING(), and ZPADDING().

PlotterBase * getPlotter (  ) 

Returns the plotter used by this view.

Definition at line 55 of file ViewBase.cxx.

References ViewBase::m_plotter.

PlotterBase * getPlotter (  )  const

Returns the plotter used by this view.

Reimplemented in OpenGLView.

Definition at line 50 of file ViewBase.cxx.

References ViewBase::m_plotter.

Referenced by ViewBaseXML::areDataSourcesSaved(), CanvasView::contentsMouseMoveEvent(), CanvasView::controlMousePressEvent(), ViewBaseXML::createChild(), DisplayController::createTextView(), AxisRepColor::drawColorScale(), GroupViewBase::getPlotters(), FigureEditor::movePlotterWithText(), DataView::prepareMarginRect(), PyCanvas::saveAsImage(), CanvasView::saveSelectedAsEps(), and CanvasView::viewShowPickTable().

const Range & getRange ( Axes::Type  axis  )  const

Returns the range of the data space on specified axis.

Definition at line 69 of file ViewBase.cxx.

References ViewBase::m_plotter.

Referenced by ContourPointRep::drawContourTicks().

const Rect & getRawRect (  )  const

Returns the rectangle before transform.

Definition at line 83 of file ViewBase.cxx.

References PlotterBase::getRawRect(), and ViewBase::m_plotter.

const Rect & getUserRect (  )  const

Is called by the AxisRepBase object (or one of its derived objects), and returns the rectangle where the drawing is made.

Definition at line 76 of file ViewBase.cxx.

References PlotterBase::getUserRect(), and ViewBase::m_plotter.

Referenced by ContourPointRep::drawValues(), ContourPointRep::drawValuesWithStyle(), AxisRepBase::initAxisRect(), DataView::marginToInvertedUserX(), DataView::marginToInvertedUserY(), DataView::marginToUserX(), DataView::marginToUserY(), DataView::userToInvertedMarginX(), DataView::userToInvertedMarginY(), DataView::userToMarginColor(), DataView::userToMarginX(), and DataView::userToMarginY().

virtual void setDrawRect ( float  x,
float  y,
float  w,
float  h 
) [pure virtual]

Sets the drawing Rectangle in the devices coordinate system.

Implemented in EpsView, OpenGLView, QtGroupView, QtView, and QtViewWidget.

Referenced by QtViewImp::draw_Text(), QtViewImp::drawImage(), and ViewBaseXML::getObjects().

void setPlotter ( PlotterBase plotter  )  [virtual]

Sets the PlotterBase object to plotter.

The ViewBase object does not own the plotter. If the plotter is being changed, it is up to client code to decide to destroy the previous plotter or not.

Reimplemented in OpenGLView, and QtViewWidget.

Definition at line 45 of file ViewBase.cxx.

References ViewBase::m_plotter.

Referenced by QtViewWidget::setPlotter().

virtual void update ( const Observable  )  [pure virtual]

Implements the update method of the Observer pattern.

Derived classes should send a message to what ever object is the parent of this ViewBase object.

Implements Observer.

Implemented in EpsView, OpenGLView, QtView, QtViewImp, and QtViewWidget.

void updateDrawRect (  )  [virtual]

Update the drawing Rectangle in the devices coordinate system.

Reimplemented in QtView.

Definition at line 105 of file ViewBase.cxx.

Referenced by XyPlotter::drawIn().

virtual float userToDrawColor ( double  c  )  const [pure virtual]

Converts a coordinate in user space to drawing space along the color (X) axis.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by ContourPointRep::drawContourTicks(), AxisRepColor::drawZTickLabels(), and AxisRepColor::drawZTickLines().

virtual float userToDrawX ( double  x  )  const [pure virtual]

Converts a coordinate in user space to drawing space along the X axis.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by AxisRepBase::drawYTickLabels(), and AxisRepBase::drawYTickLines().

virtual float userToDrawXAutoInv ( double  x  )  const [pure virtual]

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by AxisRepBase::drawXTickLabels(), and AxisRepBase::drawXTickLines().

virtual float userToDrawY ( double  y  )  const [pure virtual]

Converts a coordinate in user space to drawing space along the Y axis.

Implemented in EpsView, OpenGLView, and QtViewImp.

Referenced by AxisRepBase::drawXTickLabels(), AxisRepBase::drawXTickLines(), AxisRepBase::drawYTickLabels(), and AxisRepBase::drawYTickLines().

void willDelete ( const Observable plotter  )  [virtual]

Responds to notification that the PlotterBase object is being deleted.

Reimplemented from Observer.

Definition at line 96 of file ViewBase.cxx.

References ViewBase::m_plotter.


Member Data Documentation

PlotterBase* m_plotter [protected]

The plotter object used by this view.

Although the plotter object was created externally, the view owns the plotter object.

Definition at line 69 of file ViewBase.h.

Referenced by DataView::DataView(), QtView::draw(), ViewBase::drawSelf(), QtViewImp::drawSquare(), QtViewWidget::fillPickedPoint(), QtView::fillPickedPoint(), ViewBase::getAspectRatio(), ViewBase::getPlotter(), ViewBase::getRange(), ViewBase::getRawRect(), ViewBase::getUserRect(), QtView::isTextView(), DataView::marginToInvertedUserX(), DataView::marginToInvertedUserY(), DataView::marginToUserX(), DataView::marginToUserY(), QtViewWidget::mousePressEvent(), QtViewWidget::paintEvent(), DataView::prepareMarginRect(), QtView::QtView(), QtViewWidget::resizeEvent(), QtViewImp::setCrossX(), QtViewImp::setCrossY(), QtViewWidget::setGeometry(), ViewBase::setPlotter(), QtView::toViewX(), QtViewWidget::update(), QtViewImp::userToDrawXAutoInv(), EpsView::userToDrawXAutoInv(), DataView::userToInvertedMarginX(), DataView::userToInvertedMarginY(), DataView::userToMarginColor(), DataView::userToMarginX(), DataView::userToMarginY(), ViewBase::willDelete(), and QtView::~QtView().


The documentation for this class was generated from the following files:
Generated for HippoDraw Class Library by doxygen