Main MRPT website > C++ reference for MRPT 1.9.9
List of all members | Public Types | Public Member Functions | Protected Attributes
mrpt::utils::CCanvas Class Referenceabstract

Detailed Description

This virtual class defines the interface of any object accepting drawing primitives on it.

A number of text fonts can be selected with CCanvas::selectTextFont(). These are the implemented font names:

For an example of each font check the corresponding wiki page.

See also
CImage

Definition at line 43 of file CCanvas.h.

#include <mrpt/utils/CCanvas.h>

Inheritance diagram for mrpt::utils::CCanvas:
Inheritance graph

Public Types

enum  TPenStyle {
  psSolid = 0, psDash, psDot, psDashDot,
  psDashDotDot
}
 Definition of pen styles. More...
 

Public Member Functions

 CCanvas ()
 
virtual ~CCanvas ()
 Dummy virtual destructor: More...
 
virtual void setPixel (int x, int y, size_t color)=0
 Changes the value of the pixel (x,y). More...
 
virtual size_t getWidth () const =0
 Returns the width of the image in pixels. More...
 
virtual size_t getHeight () const =0
 Returns the height of the image in pixels. More...
 
virtual void line (int x0, int y0, int x1, int y1, const mrpt::utils::TColor color, unsigned int width=1, TPenStyle penStyle=psSolid)
 Draws a line. More...
 
void rectangle (int x0, int y0, int x1, int y1, const mrpt::utils::TColor color, unsigned int width=1)
 Draws a rectangle (an empty rectangle, without filling) More...
 
void triangle (int x0, int y0, int size, const mrpt::utils::TColor color, bool inferior=true, unsigned int width=1)
 Draws a triangle. More...
 
virtual void filledRectangle (int x0, int y0, int x1, int y1, const mrpt::utils::TColor color)
 Draws a filled rectangle. More...
 
virtual void textOut (int x0, int y0, const std::string &str, const mrpt::utils::TColor color)
 Renders 2D text using bitmap fonts. More...
 
virtual void selectTextFont (const std::string &fontName)
 Select the current font used when drawing text. More...
 
virtual void drawImage (int x, int y, const utils::CImage &img)
 Draws an image as a bitmap at a given position. More...
 
void cross (int x0, int y0, const mrpt::utils::TColor color, char type, unsigned int size=5, unsigned int width=1)
 Draw a cross. More...
 
virtual void drawImage (int x, int y, const utils::CImage &img, float rotation, float scale)
 Draws an image as a bitmap at a given position, with some custom scale and rotation changes. More...
 
virtual void drawCircle (int x, int y, int radius, const mrpt::utils::TColor &color=mrpt::utils::TColor(255, 255, 255), unsigned int width=1)
 Draws a circle of a given radius. More...
 
template<class MATRIX2X2 >
void ellipseGaussian (const MATRIX2X2 *cov2D, const double mean_x, const double mean_y, double confIntervalStds=2, const mrpt::utils::TColor &color=mrpt::utils::TColor(255, 255, 255), unsigned int width=1, int nEllipsePoints=20)
 Draws an ellipse representing a given confidence interval of a 2D Gaussian distribution. More...
 
template<class FEATURELIST >
void drawFeaturesSimple (const FEATURELIST &list, const TColor &color=TColor::red(), const int cross_size=5)
 Draws a set of marks onto the image, given a generic container of entities having just "x" and "y" fields. More...
 
template<class FEATURELIST >
void drawFeatures (const FEATURELIST &list, const TColor &color=TColor::red(), const bool showIDs=false, const bool showResponse=false)
 Draws a set of marks (or scaled circles for features with scale) onto the image, given a generic container of features. More...
 

Protected Attributes

std::string m_selectedFont
 The selected font name. More...
 
const uint32_tm_selectedFontBitmaps
 Direct access to character bitmaps. More...
 

Member Enumeration Documentation

◆ TPenStyle

Definition of pen styles.

Enumerator
psSolid 
psDash 
psDot 
psDashDot 
psDashDotDot 

Definition at line 57 of file CCanvas.h.

Constructor & Destructor Documentation

◆ CCanvas()

CCanvas::CCanvas ( )

Definition at line 120 of file CCanvas.cpp.

◆ ~CCanvas()

virtual mrpt::utils::CCanvas::~CCanvas ( )
inlinevirtual

Dummy virtual destructor:

Definition at line 68 of file CCanvas.h.

Member Function Documentation

◆ cross()

void CCanvas::cross ( int  x0,
int  y0,
const mrpt::utils::TColor  color,
char  type,
unsigned int  size = 5,
unsigned int  width = 1 
)

Draw a cross.

Parameters
x0The point x coordinate
y0The point y coordinate
colorThe color of the cross
sizeThe size of the cross
typeThe cross type. It could be: 'x', '+' or ':'(like '+' but clear at the center dot)
widthThe desired width of the cross (this is IGNORED yet)

Definition at line 307 of file CCanvas.cpp.

References line(), and THROW_EXCEPTION.

Referenced by drawFeatures(), drawFeaturesSimple(), find_chessboard_corners_multiple(), and mrpt::gui::CDisplayWindow::plot().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawCircle()

void CCanvas::drawCircle ( int  x,
int  y,
int  radius,
const mrpt::utils::TColor color = mrpt::utils::TColor(255, 255, 255),
unsigned int  width = 1 
)
virtual

Draws a circle of a given radius.

Parameters
xThe center - x coordinate in pixels.
yThe center - y coordinate in pixels.
radiusThe radius - in pixels.
colorThe color of the circle.
widthThe desired width of the line (this is IGNORED in this virtual class)

Reimplemented in mrpt::utils::CImage.

Definition at line 335 of file CCanvas.cpp.

References line(), M_2PI, and mrpt::utils::round().

Referenced by drawFeatures().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawFeatures()

template<class FEATURELIST >
void mrpt::utils::CCanvas::drawFeatures ( const FEATURELIST &  list,
const TColor color = TColor::red(),
const bool  showIDs = false,
const bool  showResponse = false 
)
inline

Draws a set of marks (or scaled circles for features with scale) onto the image, given a generic container of features.

The class of FEATURELIST can be:

See also
drawFeaturesSimple

Definition at line 324 of file CCanvas.h.

References cross(), drawCircle(), mrpt::format(), mrpt::utils::TColor::red(), mrpt::utils::round(), and textOut().

Here is the call graph for this function:

◆ drawFeaturesSimple()

template<class FEATURELIST >
void mrpt::utils::CCanvas::drawFeaturesSimple ( const FEATURELIST &  list,
const TColor color = TColor::red(),
const int  cross_size = 5 
)
inline

Draws a set of marks onto the image, given a generic container of entities having just "x" and "y" fields.

The class of FEATURELIST can be, for example, std::vector<mrpt::math::TPoint2D>, std::vector<TPixelCoordsf> or mrpt::vision::CFeatureList

See also
drawFeatures

Definition at line 303 of file CCanvas.h.

References cross(), and mrpt::utils::round().

Here is the call graph for this function:

◆ drawImage() [1/2]

void CCanvas::drawImage ( int  x,
int  y,
const utils::CImage img 
)
virtual

Draws an image as a bitmap at a given position.

Parameters
x0The top-left corner x coordinates on this canvas where the image is to be drawn
y0The top-left corner y coordinates on this canvas where the image is to be drawn
imgThe image to be drawn in this canvas This method may be redefined in some classes implementing this interface in a more appropiate manner.

Reimplemented in mrpt::utils::CEnhancedMetaFile.

Definition at line 256 of file CCanvas.cpp.

References MRPT_END, MRPT_START, and setPixel().

Referenced by mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::slam::CMetricMapBuilderRBPF::drawCurrentEstimationToImage(), and mrpt::utils::CEnhancedMetaFile::drawImage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawImage() [2/2]

void CCanvas::drawImage ( int  x,
int  y,
const utils::CImage img,
float  rotation,
float  scale 
)
virtual

Draws an image as a bitmap at a given position, with some custom scale and rotation changes.

Parameters
x0The top-left corner x coordinates on this canvas where the image is to be drawn
y0The top-left corner y coordinates on this canvas where the image is to be drawn
rotationThe rotation in radians, positive values being anti-clockwise direction, 0 is the normal position.
scaleThe scale factor, e.g. 2 means twice the original size.
imgThe image to be drawn in this canvas This method may be redefined in some classes implementing this interface in a more appropiate manner.

Reimplemented in mrpt::utils::CEnhancedMetaFile.

Definition at line 288 of file CCanvas.cpp.

References MRPT_END, MRPT_START, MRPT_UNUSED_PARAM, and THROW_EXCEPTION.

◆ ellipseGaussian()

template<class MATRIX2X2 >
void mrpt::utils::CCanvas::ellipseGaussian ( const MATRIX2X2 *  cov2D,
const double  mean_x,
const double  mean_y,
double  confIntervalStds = 2,
const mrpt::utils::TColor color = mrpt::utils::TColor(255, 255, 255),
unsigned int  width = 1,
int  nEllipsePoints = 20 
)
inline

Draws an ellipse representing a given confidence interval of a 2D Gaussian distribution.

Parameters
mean_xThe x coordinate of the center point of the ellipse.
mean_yThe y coordinate of the center point of the ellipse.
cov2DA 2x2 covariance matrix.
confIntervalStdsHow many "sigmas" for the confidence level (i.e. 2->95%, 3=99.97%,...)
colorThe color of the ellipse
widthThe desired width of the line (this is IGNORED in this virtual class)
nEllipsePointsThe number of points to generate to approximate the ellipse shape.
Exceptions
std::exceptionOn an invalid matrix.

Definition at line 253 of file CCanvas.h.

References line(), M_2PI, MRPT_END_WITH_CLEAN_UP, MRPT_START, and mrpt::utils::round().

Here is the call graph for this function:

◆ filledRectangle()

void CCanvas::filledRectangle ( int  x0,
int  y0,
int  x1,
int  y1,
const mrpt::utils::TColor  color 
)
virtual

Draws a filled rectangle.

Parameters
x0The top-left x coordinate
y0The top-left y coordinate
x1The right-bottom x coordinate
y1The right-bottom y coordinate
colorThe color of the rectangle fill This method may be redefined in some classes implementing this interface in a more appropiate manner.
See also
rectangle

Definition at line 216 of file CCanvas.cpp.

References getHeight(), getWidth(), min, and setPixel().

Referenced by mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::utils::CEnhancedMetaFile::CEnhancedMetaFile(), and mrpt::gui::CDisplayWindow::plot().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getHeight()

virtual size_t mrpt::utils::CCanvas::getHeight ( ) const
pure virtual

Returns the height of the image in pixels.

Implemented in mrpt::utils::CImage, and mrpt::utils::CEnhancedMetaFile.

Referenced by filledRectangle(), and line().

Here is the caller graph for this function:

◆ getWidth()

virtual size_t mrpt::utils::CCanvas::getWidth ( ) const
pure virtual

Returns the width of the image in pixels.

Implemented in mrpt::utils::CImage, and mrpt::utils::CEnhancedMetaFile.

Referenced by filledRectangle(), and line().

Here is the caller graph for this function:

◆ line()

void CCanvas::line ( int  x0,
int  y0,
int  x1,
int  y1,
const mrpt::utils::TColor  color,
unsigned int  width = 1,
TPenStyle  penStyle = psSolid 
)
virtual

Draws a line.

Parameters
x0The starting point x coordinate
y0The starting point y coordinate
x1The end point x coordinate
y1The end point y coordinate
colorThe color of the line
widthThe desired width of the line (this is IGNORED in this virtual class) This method may be redefined in some classes implementing this interface in a more appropiate manner.

Reimplemented in mrpt::utils::CImage, and mrpt::utils::CEnhancedMetaFile.

Definition at line 124 of file CCanvas.cpp.

References getHeight(), getWidth(), MRPT_UNUSED_PARAM, setPixel(), and mrpt::math::square().

Referenced by cross(), drawCircle(), ellipseGaussian(), rectangle(), and triangle().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rectangle()

void CCanvas::rectangle ( int  x0,
int  y0,
int  x1,
int  y1,
const mrpt::utils::TColor  color,
unsigned int  width = 1 
)

Draws a rectangle (an empty rectangle, without filling)

Parameters
x0The top-left x coordinate
y0The top-left y coordinate
x1The right-bottom x coordinate
y1The right-bottom y coordinate
colorThe color of the line
widthThe desired width of the line.
See also
filledRectangle

Definition at line 172 of file CCanvas.cpp.

References line().

Referenced by mrpt::vision::addFeaturesToImage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ selectTextFont()

void CCanvas::selectTextFont ( const std::string fontName)
virtual

Select the current font used when drawing text.

Parameters
fontNameThe name of the font

Valid font names:

  • 5x7
  • 6x13
  • 6x13B
  • 6x13O
  • 9x15 (Default at start-up)
  • 9x15B
  • 10x20
  • 18x18ja (Asian characters for UTF-8 strings - Only available if MRPT is built with MRPT_HAS_ASIAN_FONTS = true)

See also
textOut, The example in this page.

Definition at line 231 of file CCanvas.cpp.

References init_fonts_list(), list_registered_fonts, m_selectedFont, and m_selectedFontBitmaps.

Referenced by mrpt::utils::CImage::drawChessboardCorners(), mrpt::utils::CEnhancedMetaFile::selectVectorTextFont(), and textOut().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setPixel()

virtual void mrpt::utils::CCanvas::setPixel ( int  x,
int  y,
size_t  color 
)
pure virtual

Changes the value of the pixel (x,y).

Pixel coordinates starts at the left-top corner of the image, and start in (0,0). The meaning of the parameter "color" depends on the implementation: it will usually be a 24bit RGB value (0x00RRGGBB), but it can also be just a 8bit gray level.

You can also use a TColor() type as input and it will be automatically converted to size_t.

This method must support (x,y) values OUT of the actual image size without neither raising exceptions, nor leading to memory access errors.

Implemented in mrpt::utils::CImage, and mrpt::utils::CEnhancedMetaFile.

Referenced by drawImage(), filledRectangle(), line(), and textOut().

Here is the caller graph for this function:

◆ textOut()

void CCanvas::textOut ( int  x0,
int  y0,
const std::string str,
const mrpt::utils::TColor  color 
)
virtual

Renders 2D text using bitmap fonts.

Parameters
x0The x coordinates
y0The y coordinates
strThe string to put. If using UNICODE characters, use UTF-8 encoding.
colorThe text color
See also
selectTextFont

Reimplemented in mrpt::utils::CEnhancedMetaFile.

Definition at line 371 of file CCanvas.cpp.

References mrpt::system::decodeUTF8(), mrpt::utils::CImage::isOriginTopLeft(), m_selectedFontBitmaps, MRPT_END, MRPT_START, selectTextFont(), and setPixel().

Referenced by mrpt::utils::CImage::drawChessboardCorners(), drawFeatures(), and mrpt::gui::CDisplayWindow::plot().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ triangle()

void CCanvas::triangle ( int  x0,
int  y0,
int  size,
const mrpt::utils::TColor  color,
bool  inferior = true,
unsigned int  width = 1 
)

Draws a triangle.

Parameters
x0The triangle center x coordinate
y0The triangle center y coordinate
sizeThe size of the triangle
colorThe color of the line
inferiorThe position of the triangle
widthThe desired width of the line.
See also
triangle

Definition at line 192 of file CCanvas.cpp.

References line(), and mrpt::utils::round().

Here is the call graph for this function:

Member Data Documentation

◆ m_selectedFont

std::string mrpt::utils::CCanvas::m_selectedFont
protected

The selected font name.

Definition at line 47 of file CCanvas.h.

Referenced by selectTextFont().

◆ m_selectedFontBitmaps

const uint32_t* mrpt::utils::CCanvas::m_selectedFontBitmaps
protected

Direct access to character bitmaps.

Definition at line 50 of file CCanvas.h.

Referenced by selectTextFont(), and textOut().




Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019