CEDRIC  Revision_backup-2009-02
Public Types | Public Slots | Public Member Functions | Protected Member Functions | List of all members
RulerWidget Class Reference

Simple ruler widget. More...

#include <RulerWidget.h>

Inheritance diagram for RulerWidget:

Public Types

enum  Orientation { Horizontal, Vertical }
 

Public Slots

void setCurrentMarkerEnabled (bool enable)
 
void setCurrentValue (float val)
 

Public Member Functions

 RulerWidget (QWidget *parent=0, Orientation orient=Horizontal)
 
virtual ~RulerWidget ()
 
void setOrientation (Orientation orient)
 Set orientation of ruler, either Ruler::Horizontal or Ruler::Vertical. More...
 
void setRange (float min, float max, bool keepAutoRange=false)
 Set current visible range of ruler. More...
 
void setLimits (float floor, float ceil)
 Set absolute minimum and maximum value of ruler (disables dynamicLimits) More...
 
void setDynamicLimits (bool enable)
 Enable/Disable dynamicLimits calculation. More...
 
void setDivisions (int divisions)
 Set number of markers between floorRange and ceilRange. More...
 
void enableAutoRange (bool enable=true)
 Enable to map ruler 1:1 to pixelsize. More...
 
QSize minimumSizeHint () const
 

Static Public Member Functions

Arithmetic Helpers

Returns sign of value

static float signum (float value)
 
static int digits (float value)
 Returns number of decimal digits. More...
 
static float ceilDecimal (float value)
 Returns upper "whole" decimal value (e.g. ceilDecimal(157)=200) More...
 
static float floorDecimal (float value)
 Returns lower "whole" decimal value (e.g. ceilDecimal(157)=100) More...
 
static int multiple (float value)
 Returns signed highest digit of value (e.g. ceilDecimal(-751)=-7) More...
 

Protected Member Functions

void paintEvent (QPaintEvent *event)
 

Detailed Description

Simple ruler widget.

Author
Max Hermann <mhermann[at]mail.cern.ch>

Member Enumeration Documentation

Enumerator
Horizontal 
Vertical 

Constructor & Destructor Documentation

RulerWidget::RulerWidget ( QWidget *  parent = 0,
Orientation  orient = Horizontal 
)

References setOrientation().

RulerWidget::~RulerWidget ( )
virtual

Member Function Documentation

float RulerWidget::ceilDecimal ( float  value)
static

Returns upper "whole" decimal value (e.g. ceilDecimal(157)=200)

References digits(), multiple(), and signum().

Referenced by paintEvent(), setRange(), and EventViewerWidget::setScenegraph().

int RulerWidget::digits ( float  value)
static

Returns number of decimal digits.

Referenced by ceilDecimal(), floorDecimal(), and multiple().

void RulerWidget::enableAutoRange ( bool  enable = true)
inline

Enable to map ruler 1:1 to pixelsize.

float RulerWidget::floorDecimal ( float  value)
static

Returns lower "whole" decimal value (e.g. ceilDecimal(157)=100)

References digits(), multiple(), and signum().

Referenced by setRange().

QSize RulerWidget::minimumSizeHint ( ) const
inline
int RulerWidget::multiple ( float  value)
static

Returns signed highest digit of value (e.g. ceilDecimal(-751)=-7)

References digits().

Referenced by ceilDecimal(), floorDecimal(), and EventViewerWidget::setScenegraph().

void RulerWidget::paintEvent ( QPaintEvent *  event)
protected
Todo:

Could painter.setWindow(minRange,0,maxRange,1) simplify the calculations here?

Remove while() loop for subdivision (plus make usage more coherent, its musguiding that subdivision is only done when fixedDivision is active!)

Only draw visible part of ruler

References ceilDecimal(), Horizontal, and setRange().

void RulerWidget::setCurrentMarkerEnabled ( bool  enable)
inlineslot
void RulerWidget::setCurrentValue ( float  val)
inlineslot
void RulerWidget::setDivisions ( int  divisions)
inline

Set number of markers between floorRange and ceilRange.

Should be used together with setRange() to achieve a nice placement of the ruler markers (0...100...200...).

Referenced by EventViewerWidget::setScenegraph().

void RulerWidget::setDynamicLimits ( bool  enable)
inline

Enable/Disable dynamicLimits calculation.

See Also
setLimits()
void RulerWidget::setLimits ( float  floor,
float  ceil 
)
inline

Set absolute minimum and maximum value of ruler (disables dynamicLimits)

Should be used together with setDivisions() to achieve a nice placement of the ruler markers (0...100...200...).

Call setDynamicLimits(true) to enable dynamicLimits again.

Referenced by EventViewerWidget::setScenegraph().

void RulerWidget::setOrientation ( Orientation  orient)

Set orientation of ruler, either Ruler::Horizontal or Ruler::Vertical.

References Horizontal.

Referenced by EventViewerWidget::EventViewerWidget(), and RulerWidget().

void RulerWidget::setRange ( float  min,
float  max,
bool  keepAutoRange = false 
)

Set current visible range of ruler.

References ceilDecimal(), and floorDecimal().

Referenced by paintEvent(), and EventViewerWidget::updateRuler().

float RulerWidget::signum ( float  value)
static

Referenced by ceilDecimal(), and floorDecimal().