class mrpt::img::CCanvas
Overview
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:
“6x13”
“6x13B” (bold)
“6x13O” (italic)
“9x15”
“9x15B” (bold)
“10x20”
“18x18ja” (Japanese, UNICODE character values)
For an example of each font check the corresponding wiki page.
See also:
#include <mrpt/img/CCanvas.h> class CCanvas { public: // enums enum TPenStyle; // construction CCanvas(); // methods virtual void setPixel(int x, int y, size_t color) = 0; virtual size_t getWidth() const = 0; virtual size_t getHeight() const = 0; virtual void line( int x0, int y0, int x1, int y1, const mrpt::img::TColor color, unsigned int width = 1, TPenStyle penStyle = psSolid ); void rectangle(int x0, int y0, int x1, int y1, const mrpt::img::TColor color, unsigned int width = 1); void triangle( int x0, int y0, int size, const mrpt::img::TColor color, bool inferior = true, unsigned int width = 1 ); virtual void filledRectangle(int x0, int y0, int x1, int y1, const mrpt::img::TColor color); virtual void textOut(int x0, int y0, const std::string& str, const mrpt::img::TColor color); virtual void selectTextFont(const std::string& fontName); virtual void drawImage(int x, int y, const mrpt::img::CImage& img); void drawMark( int x0, int y0, const mrpt::img::TColor color, char type, int size = 5, unsigned int width = 1 ); virtual void drawImage(int x, int y, const mrpt::img::CImage& img, float rotation, float scale); virtual void drawCircle( int x, int y, int radius, const mrpt::img::TColor& color = mrpt::img::TColor(255, 255, 255), unsigned int width = 1 ); void ellipseGaussian( const mrpt::math::CMatrixFixed<double, 2, 2>& cov2D, const double mean_x, const double mean_y, double confIntervalStds = 2, const mrpt::img::TColor& color = mrpt::img::TColor(255, 255, 255), unsigned int width = 1, int nEllipsePoints = 20 ); template <class FEATURELIST> void drawFeaturesSimple( const FEATURELIST& list, const TColor& color = TColor::red(), const int cross_size = 5 ); template <class FEATURELIST> void drawFeatures( const FEATURELIST& list, const TColor& color = TColor::red(), const bool showIDs = false, const bool showResponse = false, const bool showScale = false, const char marker = '+' ); }; // direct descendants class CEnhancedMetaFile; class CImage;
Methods
virtual void setPixel(int x, int y, size_t color) = 0
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.
virtual size_t getWidth() const = 0
Returns the width of the image in pixels.
virtual size_t getHeight() const = 0
Returns the height of the image in pixels.
virtual void line( int x0, int y0, int x1, int y1, const mrpt::img::TColor color, unsigned int width = 1, TPenStyle penStyle = psSolid )
Draws a line.
Parameters:
x0 |
The starting point x coordinate |
y0 |
The starting point y coordinate |
x1 |
The end point x coordinate |
y1 |
The end point y coordinate |
color |
The color of the line |
width |
The 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 appropriate manner. |
void rectangle( int x0, int y0, int x1, int y1, const mrpt::img::TColor color, unsigned int width = 1 )
Draws a rectangle (an empty rectangle, without filling)
Parameters:
x0 |
The top-left x coordinate |
y0 |
The top-left y coordinate |
x1 |
The right-bottom x coordinate |
y1 |
The right-bottom y coordinate |
color |
The color of the line |
width |
The desired width of the line. |
See also:
void triangle( int x0, int y0, int size, const mrpt::img::TColor color, bool inferior = true, unsigned int width = 1 )
Draws a triangle.
Parameters:
x0 |
The triangle center x coordinate |
y0 |
The triangle center y coordinate |
size |
The size of the triangle |
color |
The color of the line |
inferior |
The position of the triangle |
width |
The desired width of the line. |
See also:
virtual void filledRectangle(int x0, int y0, int x1, int y1, const mrpt::img::TColor color)
Draws a filled rectangle.
Parameters:
x0 |
The top-left x coordinate |
y0 |
The top-left y coordinate |
x1 |
The right-bottom x coordinate |
y1 |
The right-bottom y coordinate |
color |
The color of the rectangle fill This method may be redefined in some classes implementing this interface in a more appropriate manner. |
See also:
virtual void textOut(int x0, int y0, const std::string& str, const mrpt::img::TColor color)
Renders 2D text using bitmap fonts.
Parameters:
x0 |
The x coordinates |
y0 |
The y coordinates |
str |
The string to put. If using UNICODE characters, use UTF-8 encoding. |
color |
The text color |
See also:
virtual void selectTextFont(const std::string& fontName)
Select the current font used when drawing text.
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)
Parameters:
fontName |
The name of the font |
See also:
textOut, The example in this page.
virtual void drawImage(int x, int y, const mrpt::img::CImage& img)
Draws an image as a bitmap at a given position.
Parameters:
x0 |
The top-left corner x coordinates on this canvas where the image is to be drawn |
y0 |
The top-left corner y coordinates on this canvas where the image is to be drawn |
img |
The image to be drawn in this canvas This method may be redefined in some classes implementing this interface in a more appropriate manner. |
void drawMark( int x0, int y0, const mrpt::img::TColor color, char type, int size = 5, unsigned int width = 1 )
Draw a mark.
Parameters:
x0 |
The point x coordinate |
y0 |
The point y coordinate |
color |
The color of the cross |
size |
The size of the cross |
type |
The cross type. It could be: ‘x’, ‘+’, ‘:’(like ‘+’ but clear at the center dot), or ‘s’ (square) |
width |
The desired width of the cross (this is IGNORED yet) |
virtual void drawImage(int x, int y, const mrpt::img::CImage& img, float rotation, float scale)
Draws an image as a bitmap at a given position, with some custom scale and rotation changes.
Parameters:
x0 |
The top-left corner x coordinates on this canvas where the image is to be drawn |
y0 |
The top-left corner y coordinates on this canvas where the image is to be drawn |
rotation |
The rotation in radians, positive values being anti-clockwise direction, 0 is the normal position. |
scale |
The scale factor, e.g. 2 means twice the original size. |
img |
The image to be drawn in this canvas This method may be redefined in some classes implementing this interface in a more appropriate manner. |
virtual void drawCircle( int x, int y, int radius, const mrpt::img::TColor& color = mrpt::img::TColor(255, 255, 255), unsigned int width = 1 )
Draws a circle of a given radius.
Parameters:
x |
The center - x coordinate in pixels. |
y |
The center - y coordinate in pixels. |
radius |
The radius - in pixels. |
color |
The color of the circle. |
width |
The desired width of the line (this is IGNORED in this virtual class) |
void ellipseGaussian( const mrpt::math::CMatrixFixed<double, 2, 2>& cov2D, const double mean_x, const double mean_y, double confIntervalStds = 2, const mrpt::img::TColor& color = mrpt::img::TColor(255, 255, 255), unsigned int width = 1, int nEllipsePoints = 20 )
Draws an ellipse representing a given confidence interval of a 2D Gaussian distribution.
Parameters:
mean_x |
The x coordinate of the center point of the ellipse. |
mean_y |
The y coordinate of the center point of the ellipse. |
cov2D |
A 2x2 covariance matrix. |
confIntervalStds |
How many “sigmas” for the confidence level (i.e. 2->95%, 3=99.97%,…) |
color |
The color of the ellipse |
width |
The desired width of the line (this is IGNORED in this virtual class) |
nEllipsePoints |
The number of points to generate to approximate the ellipse shape. |
std::exception |
On an invalid matrix. |
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.
The class of FEATURELIST can be, for example, std::vector<mrpt::math::TPoint2D>, std::vector<TPixelCoordsf> or mrpt::vision::CFeatureList
See also:
template <class FEATURELIST> void drawFeatures( const FEATURELIST& list, const TColor& color = TColor::red(), const bool showIDs = false, const bool showResponse = false, const bool showScale = false, const char marker = '+' )
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: