Image Component Library (ICL)
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Private Member Functions | List of all members
icl::qt::ICLDrawWidget Class Reference

Extended Image visualization widget, with a drawing state machine interface. More...

#include <DrawWidget.h>

Inheritance diagram for icl::qt::ICLDrawWidget:
icl::qt::ICLWidget icl::qt::ICLDrawWidget3D icl::geom::PlotWidget3D

Public Types

enum  Sym {
  symRect, symCross, symPlus, symTriangle,
  symCircle
}
 enum used for specification of predefined symbols More...
 
- Public Types inherited from icl::qt::ICLWidget
enum  fitmode { fmNoScale =0, fmHoldAR =1, fmFit =2, fmZoom =3 }
 determines how the image is fit into the widget geometry More...
 
enum  rangemode { rmOn = 1, rmOff = 2, rmAuto }
 determines intensity adaption mode More...
 
typedef utils::Function< core::ColorBGColorSource
 generic background color creator plugin More...
 

Public Member Functions

 ICLDrawWidget (QWidget *parent=0)
 creates a new ICLDrawWidget embedded into the parent component More...
 
 ~ICLDrawWidget ()
 destructor2 More...
 
void setAutoResetQueue (bool on)
 sets whether the draw commands are accumulative (default is on=true) More...
 
void resetQueue ()
 clears the current draw queue More...
 
void abs ()
 sets up the state machine to treat coordinates in the image pixel coordinate system More...
 
void rel ()
 sets up the state machine to receive relative coordinates in range [0,1] More...
 
void image (core::ImgBase *image, float x, float y, float w, float h)
 draws an image into the given rectangle More...
 
void image (core::ImgBase *image, const utils::Rect &r)
 convenience function for image using an image rect More...
 
void image (const core::ImgBase *image, const float a[2], const float b[2], const float c[2], const float d[2])
 draws an image into given quadrangle More...
 
void text (std::string text, float x, float y, float w, float h, float fontsize=10)
 draws a string into the given rect More...
 
void text (const std::string &text, float x, float y, float fontsize=10)
 draws text at given x, y location with given fontsize More...
 
void text (const std::string &text, const utils::Point32f &p, float fontsize=10)
 draws the text at given position p More...
 
void point (float x, float y)
 draws a point at the given location More...
 
void point (const utils::Point &p)
 convenience wrapper for utils::Point types More...
 
void point (const utils::Point32f &p)
 convenience wrapper for utils::Point32f types More...
 
template<class VectorType >
void point (const VectorType &p)
 convenience wrapper for arbitrary types, that provide an index operator [int] More...
 
void points (const std::vector< utils::Point > &pts, int xfac=1, int yfac=1)
 draws a set of points More...
 
void points (const std::vector< utils::Point32f > &pts)
 draws a set of points More...
 
template<class VectorType >
void point (const std::vector< VectorType > &points)
 convenience wrapper for arbitrary types, that provide an index operator [int] More...
 
void linestrip (const std::vector< utils::Point > &pts, bool closeLoop=true, int xfac=1, int yfac=1)
 draws a set of connected points More...
 
void linestrip (const std::vector< utils::Point32f > &pts, bool closeLoop=true)
 draws a set of connected points More...
 
void line (float x1, float y1, float x2, float y2)
 draws a line from point (x1,y1) to point (x2,y2) More...
 
void line (const utils::Point32f &a, const utils::Point32f &b)
 convenience function for drawing lines between two points More...
 
template<class VectorTypeA , class VectorTypeB >
void line (const VectorTypeA &a, const VectorTypeB &b)
 convenience wrapper for arbitrary types, that provide an index operator [int] More...
 
void arrow (float ax, float ay, float bx, float by, float capsize=10)
 draws an arrow from a to b (arrow cap is at b) More...
 
void arrow (const utils::Point32f &a, const utils::Point32f &b, float capsize=10)
 draws an arrow from a to b (arrow cap is at b) More...
 
void rect (float x, float y, float w, float h)
 draws a rect with given parameters More...
 
void rect (const utils::Rect32f &r)
 convenience function for drawing float rects More...
 
void rect (const utils::Rect &r)
 draws a rect from a icl utils::Rect structure More...
 
void triangle (float x1, float y1, float x2, float y2, float x3, float y3)
 draws a triangle defined by 3 points More...
 
void triangle (const utils::Point32f &a, const utils::Point32f &b, const utils::Point32f &c)
 draws a triangle defined by 3 points More...
 
void quad (float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
 draws a quad with given 4 points More...
 
void quad (const utils::Point32f &a, const utils::Point32f &b, const utils::Point32f &c, const utils::Point32f &d)
 draws a quad with given 4 points More...
 
void ellipse (float x, float y, float w, float h)
 draws an ellipse with given parameters (w==H --> circle) More...
 
void ellipse (const utils::Rect &r)
 draws an ellipse into given rectangle More...
 
void ellipse (const utils::Rect32f &r)
 draws an ellipse into given rectangle More...
 
void circle (float cx, float cy, float r)
 draws a circle with given center and radius More...
 
void circle (const utils::Point32f &center, float radius)
 draws a circle with given center and radius More...
 
void polygon (const std::vector< utils::Point32f > &ps)
 draws a convex polygon More...
 
void polygon (const std::vector< utils::Point > &ps)
 draws a convex polygon (int-points) More...
 
void grid (const utils::Point32f *points, int nx, int ny, bool rowMajor=true)
 draws a regular grid between given points More...
 
void sym (float x, float y, Sym s)
 draws a predefined symbol at the given location More...
 
void sym (const utils::Point32f &p, Sym s)
 convenience wrapper for sym(float,float,Sym) More...
 
void sym (float x, float y, char sym)
 this is a convenience function for sym(float,float,Sym) More...
 
void sym (const utils::Point32f &p, char sym)
 convenicence wrapper for sym(float,flota,char) More...
 
void symsize (float w, float h=-1)
 sets the size for following "sym" draw commands More...
 
void linewidth (float w)
 sets current linewidth (default is 1); More...
 
void pointsize (float s)
 sets current pointsize (default is 1) More...
 
void textangle (float angleDeg)
 sets an angle for text that is rendered More...
 
void fontsize (float size)
 sets the internal default font size More...
 
void color (float r, float g, float b, float alpha=255)
 sets the draw state machines "edge"-color buffer to a given value More...
 
void fill (float r, float g, float b, float alpha=255)
 set the draw state machines "fill"-color buffer to a given value More...
 
template<class T , unsigned int COLS>
void color (const math::FixedMatrix< T, COLS, 3/COLS > &v)
 utility template method that allows to pass 3D vectors as colors More...
 
template<class T , unsigned int COLS>
void color (const math::FixedMatrix< T, COLS, 4/COLS > &v)
 utility template method that allows to pass 4D vectors as colors More...
 
template<class T , unsigned int COLS>
void fill (const math::FixedMatrix< T, COLS, 3/COLS > &v)
 utility template method that allows to pass 3D vectors as fill color More...
 
template<class T , unsigned int COLS>
void fill (const math::FixedMatrix< T, COLS, 4/COLS > &v)
 utility template method that allows to pass 4D vectors as fill color More...
 
void nocolor ()
 disables drawing edges More...
 
void nofill ()
 disables filling primitives More...
 
void draw (const utils::VisualizationDescription &d)
 draws a VisualizationDescription instance More...
 
virtual void customPaintEvent (PaintEngine *e)
 this function can be reimplemented in derived classes to perform some custom drawing operations More...
 
virtual void initializeCustomPaintEvent (PaintEngine *e)
 this function can be reimplemented perform some custom initialization before the actual draw call More...
 
virtual void finishCustomPaintEvent (PaintEngine *e)
 this function can be reimplemented perform some custom initialization after the actual draw call More...
 
- Public Member Functions inherited from icl::qt::ICLWidget
 ICLWidget (QWidget *parent=0)
 creates a new ICLWidget within the parent widget More...
 
virtual ~ICLWidget ()
 destructor More...
 
virtual void initializeGL ()
 GLContext initialization. More...
 
virtual void resizeGL (int w, int h)
 called by resizeEvent to adapt the current GL-Viewport More...
 
virtual void paintGL ()
 draw function More...
 
virtual void paintEvent (QPaintEvent *e)
 drawing function for NO-GL fallback More...
 
virtual void setVisible (bool visible)
 
void setFitMode (fitmode fm)
 sets the current fitmode More...
 
void setRangeMode (rangemode rm)
 sets the current rangemode More...
 
void setBCI (int brightness, int contrast, int intensity)
 set up current brightness, contrast and intensity adaption values More...
 
utils::Size getSize ()
 returns the widgets size as icl::Size More...
 
utils::Size getImageSize (bool fromGUIThread=false)
 returns the current images size More...
 
utils::Rect getImageRect (bool fromGUIThread=false)
 returns the rect, that is currently used to draw the image into More...
 
fitmode getFitMode ()
 returns current fit-mode More...
 
rangemode getRangeMode ()
 returns current range mode More...
 
std::vector< std::string > getImageInfo ()
 returns a list of image specification string (used by the OSD) More...
 
void install (MouseHandler *h)
 adds a new mouse handler via signal-slot connection More...
 
void uninstall (MouseHandler *h)
 deletes mouse handler connection More...
 
void registerCallback (const GUI::Callback &cb, const std::string &eventList="drag,press")
 registers a simple callback More...
 
void removeCallbacks ()
 removes all callbacks registered using registerCallback More...
 
void render ()
 re-renders the widget (thread-safe) More...
 
virtual bool event (QEvent *event)
 overloaded event function processing special thread save update events More...
 
const ImageStatisticsgetImageStatistics ()
 returns current ImageStatistics struct (used by OSD) More...
 
void setMenuEnabled (bool enabled)
 if the menu is disabled, there will be no menu button at the top left of the widget More...
 
void setImageInfoIndicatorEnabled (bool enabled)
 This can be used in order to hide to label at the lower right image rect. More...
 
void setShowNoImageWarnings (bool showWarnings)
 sets wheather to notify, that no image was set More...
 
void setViewPort (const utils::Size &size)
 Sets a viewport size that is used if no image was set. More...
 
void setFullScreenMode (bool on, int screen=-1)
 show the widget on fullscreen on the (or returns to the original embedded state) More...
 
void addSpecialToggleButton (const std::string &id, const core::ImgBase *untoggledIcon=0, const core::ImgBase *toggledIcon=0, bool initiallyToggled=0, const utils::Function< void, bool > &cb=(utils::FunctionImpl< void, bool > *) 0, const std::string &toolTipText="")
 Adds a new toggle-button to the OSD-button bar on the upper widget edge. More...
 
void addSpecialButton (const std::string &id, const core::ImgBase *icon=0, const utils::Function< void > &cb=(utils::FunctionImpl< void > *) 0, const std::string &toolTipText="")
 Adds a new toggle-button to the OSD-button bar on the upper widget edge. More...
 
void setInfoText (const std::string &text)
 sets an info text, is shown as a dialog when pressing an extra info button More...
 
void removeSpecialButton (const std::string &id)
 removes special button with given ID More...
 
void setAutoRenderOnSetImage (bool on)
 sets whether the widget will automatically call render when setImage is called More...
 
void setBackgroundColorSource (BGColorSource src)
 can be used to replace the default OSD-GUI based background color source More...
 
void startRecording (const std::string &outputDevice, const std::string &outputInfo, bool framebuffer=true, int frameskip=0, bool setParamsOnlyButDoNotStartRecording=false)
 sets up the capturing GUI and immediately initialized the internal capturer More...
 
void registerRecordingCallback (utils::Function< void, const core::ImgBase * > cb, const std::string &handle="default")
 adds a callback function that is executed each time an image is recorded! More...
 
void unregisterRecordingCallback (const std::string &handle="default")
 removes a recording callback function More...
 
virtual void mousePressEvent (QMouseEvent *e)
 
virtual void mouseReleaseEvent (QMouseEvent *e)
 
virtual void mouseMoveEvent (QMouseEvent *e)
 
virtual void enterEvent (QEvent *e)
 
virtual void leaveEvent (QEvent *e)
 
virtual void resizeEvent (QResizeEvent *e)
 
virtual void wheelEvent (QWheelEvent *e)
 
virtual void hideEvent (QHideEvent *e)
 
virtual void keyPressEvent (QKeyEvent *event)
 listens for F11 which enables the fullscreen mode More...
 

Protected Member Functions

virtual void swapQueues ()
 swaps the draw queues More...
 
- Protected Member Functions inherited from icl::qt::ICLWidget
void showInfoDialog ()
 shows a help dialog More...
 

Protected Attributes

std::vector< DrawCommand * > * m_queues [2]
 two lists of draw commands More...
 
Statem_poState
 Data of the "State Machine". More...
 
QMutex m_oCommandMutex
 utils::Mutex for a thread save event queue More...
 
bool m_autoResetQueue
 internal flag More...
 

Static Private Member Functions

template<class T >
static void icl_given_type_has_no_int_index_operator (const T &t)
 

Additional Inherited Members

- Public Slots inherited from icl::qt::ICLWidget
void setImage (const core::ImgBase *image)
 sets up the current image More...
 
void showHideMenu ()
 
void setMenuEmbedded (bool embedded)
 
void bciModeChanged (int modeIdx)
 
void brightnessChanged (int val)
 
void contrastChanged (int val)
 
void intensityChanged (int val)
 
void scaleModeChanged (int modeIdx)
 
void currentChannelChanged (int modeIdx)
 
void captureCurrentImage ()
 
void captureCurrentFrameBuffer ()
 
void recordButtonToggled (bool checked)
 
void pauseButtonToggled (bool checked)
 
void stopButtonClicked ()
 
void skipFramesChanged (int frameSkip)
 
void menuTabChanged (int index)
 
void histoPanelParamChanged ()
 
void setEmbeddedZoomModeEnabled (bool enabled)
 
void setLinInterpolationEnabled (bool enabled)
 
void setShowPixelGridEnabled (bool enabled)
 
void setRangeModeNormalOrScaled (bool enabled)
 
void showBackgroundColorDialog ()
 
void showGridColorDialog ()
 
void setGridAlpha (int alpha)
 
void setBackgroundBlack ()
 
void setBackgroundWhite ()
 
void setBackgroundGray ()
 
void setGridBlack ()
 
void setGridWhite ()
 
void setGridGray ()
 
- Signals inherited from icl::qt::ICLWidget
void mouseEvent (const MouseEvent &event)
 invoked when any mouse interaction was performed More...
 
void specialButtonClicked (const std::string &id)
 synchronizes special button clicks with GUI thread More...
 
void specialButtonToggled (const std::string &id, bool down)
 synchronizes special toggle button clicks with GUI thread More...
 

Detailed Description

Extended Image visualization widget, with a drawing state machine interface.

The ICLDrawWidget can be used to draw annotation on images in real time. It provides the ability for translating draw command given in image coordinations with respect to the currently used image scaling type (hold-ar, no-scaling or fit to widget) and to the currently used widget size.

Drawing-State machine

Like other drawing state machines, like the QPainter or OpenGL, the ICLDrawWidget can be used for drawing 2D-primitives step by step into the frame-buffer using OpenGL hardware acceleration. Each implementation of drawing function should contain the following steps.

drawWidget->setImage(..);
drawWidget.lock();
drawWidget.reset();
... draw commands ...
drawWidget->unlock(); /// (is deprecated) enable the widget to be drawed

Sample Application for Image Segmentation

\#include <ICLQt/Common.h>
\#include <ICLQt/Quick.h>
std::vector<double> c(3,255); // ref color
void click(const MouseEvent &e){
if(e.isLeft() && !gui["vis"].as<int>()){
c = e.getColor();
}
}
void init(){
gui << Draw().handle("draw").minSize(32,24)
<< (HBox().maxSize(100,3)
<< Combo("image,levelmap").handle("vis")
<< Slider(2,10,5).out("levels").label("levels"));
gui.show();
gui["draw"].install(new MouseHandler(click));
}
void run(){
static GenericGrabber g(pa("-input"));
g.setDesiredSizeInternal(utils::Size::VGA);
// DrawHandle object draw provides direct access to the underlying
// ICLDrawWidget by the 'operator->' i.e., it behaves like
// an ICLDrawWidget-pointer
DrawHandle draw = gui["draw"];
// do some image processing (pretty slow here)
ImgQ im = cvt(g.grab());
// re-quantize grabbed image to reduce levels
ImgQ lm = levels(im,gui["levels"].as<int>());
vector<vector<utils::Point> > pxs;
pxs.push_back(vector<utils::Point>(1, Point(lm.getWidth()/2, lm.getHeight()/2)));
// visualize selected image
ImgQ *ims[2] = {&im, &lm};
draw = ims[gui["vis"].as<int>()];
// use drawing state-machine to post draw commands
draw->pointsize(2);
draw->color(255,0,0,60);
draw->points(pxs[0]);
}
int main(int n, char **ppc){
return ICLApplication(n,ppc,"-input(2)",init,run).exec();
}

drawing-example.png
Screenshot of sample application

Member Enumeration Documentation

◆ Sym

enum used for specification of predefined symbols

Enumerator
symRect 
symCross 
symPlus 
symTriangle 
symCircle 

Constructor & Destructor Documentation

◆ ICLDrawWidget()

icl::qt::ICLDrawWidget::ICLDrawWidget ( QWidget *  parent = 0)

creates a new ICLDrawWidget embedded into the parent component

◆ ~ICLDrawWidget()

icl::qt::ICLDrawWidget::~ICLDrawWidget ( )

destructor2

Member Function Documentation

◆ abs()

void icl::qt::ICLDrawWidget::abs ( )

sets up the state machine to treat coordinates in the image pixel coordinate system

the visualization space is x={0..w-1} and y={0..h-1}

◆ arrow() [1/2]

void icl::qt::ICLDrawWidget::arrow ( float  ax,
float  ay,
float  bx,
float  by,
float  capsize = 10 
)

draws an arrow from a to b (arrow cap is at b)

◆ arrow() [2/2]

void icl::qt::ICLDrawWidget::arrow ( const utils::Point32f a,
const utils::Point32f b,
float  capsize = 10 
)

draws an arrow from a to b (arrow cap is at b)

◆ circle() [1/2]

void icl::qt::ICLDrawWidget::circle ( float  cx,
float  cy,
float  r 
)

draws a circle with given center and radius

◆ circle() [2/2]

void icl::qt::ICLDrawWidget::circle ( const utils::Point32f center,
float  radius 
)

draws a circle with given center and radius

◆ color() [1/3]

void icl::qt::ICLDrawWidget::color ( float  r,
float  g,
float  b,
float  alpha = 255 
)

sets the draw state machines "edge"-color buffer to a given value

Primitives except images are drawn with the currently set "color" and filled with the currently set "fill" alpha values of 0 disables the edge drawing at all

◆ color() [2/3]

template<class T , unsigned int COLS>
void icl::qt::ICLDrawWidget::color ( const math::FixedMatrix< T, COLS, 3/COLS > &  v)
inline

utility template method that allows to pass 3D vectors as colors

◆ color() [3/3]

template<class T , unsigned int COLS>
void icl::qt::ICLDrawWidget::color ( const math::FixedMatrix< T, COLS, 4/COLS > &  v)
inline

utility template method that allows to pass 4D vectors as colors

◆ customPaintEvent()

virtual void icl::qt::ICLDrawWidget::customPaintEvent ( PaintEngine e)
virtual

this function can be reimplemented in derived classes to perform some custom drawing operations

Reimplemented from icl::qt::ICLWidget.

Reimplemented in icl::qt::ICLDrawWidget3D.

◆ draw()

void icl::qt::ICLDrawWidget::draw ( const utils::VisualizationDescription d)

draws a VisualizationDescription instance

Internally, the description is decomposed to normal function calls

◆ ellipse() [1/3]

void icl::qt::ICLDrawWidget::ellipse ( float  x,
float  y,
float  w,
float  h 
)

draws an ellipse with given parameters (w==H --> circle)

◆ ellipse() [2/3]

void icl::qt::ICLDrawWidget::ellipse ( const utils::Rect r)

draws an ellipse into given rectangle

◆ ellipse() [3/3]

void icl::qt::ICLDrawWidget::ellipse ( const utils::Rect32f r)

draws an ellipse into given rectangle

◆ fill() [1/3]

void icl::qt::ICLDrawWidget::fill ( float  r,
float  g,
float  b,
float  alpha = 255 
)

set the draw state machines "fill"-color buffer to a given value

Primitives except images are drawn with the currently set "color" and filled with the currently set "fill" alpha values of 0 disables the edge drawing at all

◆ fill() [2/3]

template<class T , unsigned int COLS>
void icl::qt::ICLDrawWidget::fill ( const math::FixedMatrix< T, COLS, 3/COLS > &  v)
inline

utility template method that allows to pass 3D vectors as fill color

◆ fill() [3/3]

template<class T , unsigned int COLS>
void icl::qt::ICLDrawWidget::fill ( const math::FixedMatrix< T, COLS, 4/COLS > &  v)
inline

utility template method that allows to pass 4D vectors as fill color

◆ finishCustomPaintEvent()

virtual void icl::qt::ICLDrawWidget::finishCustomPaintEvent ( PaintEngine e)
virtual

this function can be reimplemented perform some custom initialization after the actual draw call

◆ fontsize()

void icl::qt::ICLDrawWidget::fontsize ( float  size)

sets the internal default font size

The default font size is used if the font-size given to text is set to 0 the 'default'-default size is 10

◆ grid()

void icl::qt::ICLDrawWidget::grid ( const utils::Point32f points,
int  nx,
int  ny,
bool  rowMajor = true 
)

draws a regular grid between given points

◆ icl_given_type_has_no_int_index_operator()

template<class T >
static void icl::qt::ICLDrawWidget::icl_given_type_has_no_int_index_operator ( const T &  t)
inlinestaticprivate

◆ image() [1/3]

void icl::qt::ICLDrawWidget::image ( core::ImgBase image,
float  x,
float  y,
float  w,
float  h 
)

draws an image into the given rectangle

The image is copied by the state machine to ensure, that the data is persistent when the draw command is passed to the underlying PaintEngine. Otherwise, it would not be possible to ensure, that the set image data that is drawn is not changed elsewhere note: If image has four channels, the last channel is used as alpha channel where a pixel value of 0 means invisible=100transparent and 255 means no transparency

◆ image() [2/3]

void icl::qt::ICLDrawWidget::image ( core::ImgBase image,
const utils::Rect r 
)
inline

convenience function for image using an image rect

◆ image() [3/3]

void icl::qt::ICLDrawWidget::image ( const core::ImgBase image,
const float  a[2],
const float  b[2],
const float  c[2],
const float  d[2] 
)

draws an image into given quadrangle

node order is

a--------b
|         \
|          \
d---___     \
---___c

◆ initializeCustomPaintEvent()

virtual void icl::qt::ICLDrawWidget::initializeCustomPaintEvent ( PaintEngine e)
virtual

this function can be reimplemented perform some custom initialization before the actual draw call

◆ line() [1/3]

void icl::qt::ICLDrawWidget::line ( float  x1,
float  y1,
float  x2,
float  y2 
)

draws a line from point (x1,y1) to point (x2,y2)

◆ line() [2/3]

void icl::qt::ICLDrawWidget::line ( const utils::Point32f a,
const utils::Point32f b 
)

convenience function for drawing lines between two points

◆ line() [3/3]

template<class VectorTypeA , class VectorTypeB >
void icl::qt::ICLDrawWidget::line ( const VectorTypeA &  a,
const VectorTypeB &  b 
)
inline

convenience wrapper for arbitrary types, that provide an index operator [int]

◆ linestrip() [1/2]

void icl::qt::ICLDrawWidget::linestrip ( const std::vector< utils::Point > &  pts,
bool  closeLoop = true,
int  xfac = 1,
int  yfac = 1 
)

draws a set of connected points

for relative utils::Point coordinates the factors can be set point i is drawn at pts[i].x/xfac and pts[i].y/yfac

◆ linestrip() [2/2]

void icl::qt::ICLDrawWidget::linestrip ( const std::vector< utils::Point32f > &  pts,
bool  closeLoop = true 
)

draws a set of connected points

◆ linewidth()

void icl::qt::ICLDrawWidget::linewidth ( float  w)

sets current linewidth (default is 1);

◆ nocolor()

void icl::qt::ICLDrawWidget::nocolor ( )

disables drawing edges

◆ nofill()

void icl::qt::ICLDrawWidget::nofill ( )

disables filling primitives

◆ point() [1/5]

void icl::qt::ICLDrawWidget::point ( float  x,
float  y 
)

draws a point at the given location

◆ point() [2/5]

void icl::qt::ICLDrawWidget::point ( const utils::Point p)
inline

convenience wrapper for utils::Point types

◆ point() [3/5]

void icl::qt::ICLDrawWidget::point ( const utils::Point32f p)
inline

convenience wrapper for utils::Point32f types

◆ point() [4/5]

template<class VectorType >
void icl::qt::ICLDrawWidget::point ( const VectorType &  p)
inline

convenience wrapper for arbitrary types, that provide an index operator [int]

◆ point() [5/5]

template<class VectorType >
void icl::qt::ICLDrawWidget::point ( const std::vector< VectorType > &  points)
inline

convenience wrapper for arbitrary types, that provide an index operator [int]

◆ points() [1/2]

void icl::qt::ICLDrawWidget::points ( const std::vector< utils::Point > &  pts,
int  xfac = 1,
int  yfac = 1 
)

draws a set of points

for relative utils::Point coordinates the factors can be set point i is drawn at pts[i].x/xfac and pts[i].y/yfac

◆ points() [2/2]

void icl::qt::ICLDrawWidget::points ( const std::vector< utils::Point32f > &  pts)

draws a set of points

◆ pointsize()

void icl::qt::ICLDrawWidget::pointsize ( float  s)

sets current pointsize (default is 1)

◆ polygon() [1/2]

void icl::qt::ICLDrawWidget::polygon ( const std::vector< utils::Point32f > &  ps)

draws a convex polygon

◆ polygon() [2/2]

void icl::qt::ICLDrawWidget::polygon ( const std::vector< utils::Point > &  ps)

draws a convex polygon (int-points)

◆ quad() [1/2]

void icl::qt::ICLDrawWidget::quad ( float  x1,
float  y1,
float  x2,
float  y2,
float  x3,
float  y3,
float  x4,
float  y4 
)

draws a quad with given 4 points

◆ quad() [2/2]

void icl::qt::ICLDrawWidget::quad ( const utils::Point32f a,
const utils::Point32f b,
const utils::Point32f c,
const utils::Point32f d 
)

draws a quad with given 4 points

◆ rect() [1/3]

void icl::qt::ICLDrawWidget::rect ( float  x,
float  y,
float  w,
float  h 
)

draws a rect with given parameters

◆ rect() [2/3]

void icl::qt::ICLDrawWidget::rect ( const utils::Rect32f r)

convenience function for drawing float rects

◆ rect() [3/3]

void icl::qt::ICLDrawWidget::rect ( const utils::Rect r)

draws a rect from a icl utils::Rect structure

◆ rel()

void icl::qt::ICLDrawWidget::rel ( )

sets up the state machine to receive relative coordinates in range [0,1]

◆ resetQueue()

void icl::qt::ICLDrawWidget::resetQueue ( )

clears the current draw queue

This is done automatically by default. Only if the user wants accumulative draw commands, resetQueue can be called manually to clear the queues

◆ setAutoResetQueue()

void icl::qt::ICLDrawWidget::setAutoResetQueue ( bool  on)

sets whether the draw commands are accumulative (default is on=true)

If the "auto reset queue" flag is set to false, the internal draw command queues are not cleared when ICLWidget::render() is called. In this case, ICLDrawWidget::resetQueue can be called manually.

◆ swapQueues()

virtual void icl::qt::ICLDrawWidget::swapQueues ( )
protectedvirtual

swaps the draw queues

Reimplemented from icl::qt::ICLWidget.

◆ sym() [1/4]

void icl::qt::ICLDrawWidget::sym ( float  x,
float  y,
Sym  s 
)

draws a predefined symbol at the given location

The symbols size can be set using symsize

◆ sym() [2/4]

void icl::qt::ICLDrawWidget::sym ( const utils::Point32f p,
Sym  s 
)
inline

convenience wrapper for sym(float,float,Sym)

◆ sym() [3/4]

void icl::qt::ICLDrawWidget::sym ( float  x,
float  y,
char  sym 
)
inline

this is a convenience function for sym(float,float,Sym)

possible values for sym are:

  • 'r' for rectangle
  • '+' for plus
  • 'x' for cross
  • 't' for triangle
  • 'o' for circle

instead of writing

you can simply write

draw->sym(x,y,'+')

for all invalid chars, 'x' is used

◆ sym() [4/4]

void icl::qt::ICLDrawWidget::sym ( const utils::Point32f p,
char  sym 
)
inline

convenicence wrapper for sym(float,flota,char)

◆ symsize()

void icl::qt::ICLDrawWidget::symsize ( float  w,
float  h = -1 
)

sets the size for following "sym" draw commands

◆ text() [1/3]

void icl::qt::ICLDrawWidget::text ( std::string  text,
float  x,
float  y,
float  w,
float  h,
float  fontsize = 10 
)

draws a string into the given rect

if w=-1 and h=-1, fontsize is used to determine the bitmap size. The given fontsize paramter defines the font-size in screen pixels. Important: if the given fontsize is negative, its absolute value is used but the font size unit is image pixels instead of screen-pixels

◆ text() [2/3]

void icl::qt::ICLDrawWidget::text ( const std::string &  text,
float  x,
float  y,
float  fontsize = 10 
)
inline

draws text at given x, y location with given fontsize

◆ text() [3/3]

void icl::qt::ICLDrawWidget::text ( const std::string &  text,
const utils::Point32f p,
float  fontsize = 10 
)
inline

draws the text at given position p

◆ textangle()

void icl::qt::ICLDrawWidget::textangle ( float  angleDeg)

sets an angle for text that is rendered

The angle is specified in degrees and in clock-wise direction

◆ triangle() [1/2]

void icl::qt::ICLDrawWidget::triangle ( float  x1,
float  y1,
float  x2,
float  y2,
float  x3,
float  y3 
)

draws a triangle defined by 3 points

◆ triangle() [2/2]

void icl::qt::ICLDrawWidget::triangle ( const utils::Point32f a,
const utils::Point32f b,
const utils::Point32f c 
)

draws a triangle defined by 3 points

Member Data Documentation

◆ m_autoResetQueue

bool icl::qt::ICLDrawWidget::m_autoResetQueue
protected

internal flag

◆ m_oCommandMutex

QMutex icl::qt::ICLDrawWidget::m_oCommandMutex
protected

utils::Mutex for a thread save event queue

◆ m_poState

State* icl::qt::ICLDrawWidget::m_poState
protected

Data of the "State Machine".

◆ m_queues

std::vector<DrawCommand*>* icl::qt::ICLDrawWidget::m_queues[2]
protected

two lists of draw commands

queues[0] is filled, queues[1] is drawn


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