Project

General

Profile

BitmapToolkit Scol plugin
cv::freetype::FreeTypeFont Class Referenceabstract

#include <freetypeFont.h>

Inheritance diagram for cv::freetype::FreeTypeFont:

Public Member Functions

virtual bool loadFontData (String fontFileName, int idx)=0
 Load font data.
 
virtual bool loadFontData (const FT_Byte *fontData, FT_Long fontDataSize, int idx)=0
 
virtual void setSplitNumber (int num)=0
 Set Split Number from Bezier-curve to line.
 
virtual void putText (InputOutputArray img, const String &text, Point org, int fontHeight, Scalar color, int thickness, int line_type, bool bottomLeftOrigin)=0
 Draws a text string.
 
virtual Size getTextSize (const String &text, int fontHeight, int thickness, CV_OUT int *baseLine)=0
 Calculates the width and height of a text string.
 

Detailed Description

Definition at line 54 of file freetypeFont.h.

Member Function Documentation

◆ getTextSize()

virtual Size cv::freetype::FreeTypeFont::getTextSize ( const String &  text,
int  fontHeight,
int  thickness,
CV_OUT int *  baseLine 
)
pure virtual

Calculates the width and height of a text string.

The function getTextSize calculates and returns the approximate size of a box that contains the specified text. That is, the following code renders some text, the tight box surrounding it, and the baseline: :

String text = "Funny text inside the box";
int fontHeight = 60;
int thickness = -1;
int linestyle = 8;
Mat img(600, 800, CV_8UC3, Scalar::all(0));
int baseline=0;
cv::Ptr<cv::freetype::FreeType2> ft2;
ft2 = cv::freetype::createFreeType2();
ft2->loadFontData( "./mplus-1p-regular.ttf", 0 );
Size textSize = ft2->getTextSize(text,
fontHeight,
thickness,
&baseline);
if(thickness > 0){
baseline += thickness;
}
// center the text
Point textOrg((img.cols - textSize.width) / 2,
(img.rows + textSize.height) / 2);
// draw the box
rectangle(img, textOrg + Point(0, baseline),
textOrg + Point(textSize.width, -textSize.height),
Scalar(0,255,0),1,8);
// ... and the baseline first
line(img, textOrg + Point(0, thickness),
textOrg + Point(textSize.width, thickness),
Scalar(0, 0, 255),1,8);
// then put the text itself
ft2->putText(img, text, textOrg, fontHeight,
Scalar::all(255), thickness, linestyle, true );
Parameters
textInput text string.
fontHeightDrawing font size by pixel unit.
thicknessThickness of lines used to render the text. See putText for details.
[out]baseLiney-coordinate of the baseline relative to the bottom-most text point.
Returns
The size of a box that contains the specified text.
See also
cv::putText

◆ loadFontData() [1/2]

virtual bool cv::freetype::FreeTypeFont::loadFontData ( const FT_Byte *  fontData,
FT_Long  fontDataSize,
int  idx 
)
pure virtual

◆ loadFontData() [2/2]

virtual bool cv::freetype::FreeTypeFont::loadFontData ( String  fontFileName,
int  idx 
)
pure virtual

Load font data.

The function loadFontData loads font data.

Parameters
fontFileNameFontFile Name
idface_index to select a font faces in a single file.

◆ putText()

virtual void cv::freetype::FreeTypeFont::putText ( InputOutputArray  img,
const String &  text,
Point  org,
int  fontHeight,
Scalar  color,
int  thickness,
int  line_type,
bool  bottomLeftOrigin 
)
pure virtual

Draws a text string.

The function putText renders the specified text string in the image. Symbols that cannot be rendered using the specified font are replaced by "Tofu" or non-drawn.

Parameters
imgImage.
textText string to be drawn.
orgBottom-left/Top-left corner of the text string in the image.
fontHeightDrawing font size by pixel unit.
colorText color.
thicknessThickness of the lines used to draw a text when negative, the glyph is filled. Otherwise, the glyph is drawn with this thickness.
line_typeLine type. See the line for details.
bottomLeftOriginWhen true, the image data origin is at the bottom-left corner. Otherwise, it is at the top-left corner.

◆ setSplitNumber()

virtual void cv::freetype::FreeTypeFont::setSplitNumber ( int  num)
pure virtual

Set Split Number from Bezier-curve to line.

The function setSplitNumber set the number of split points from bezier-curve to line. If you want to draw large glyph, large is better. If you want to draw small glyph, small is better.

Parameters
numnumber of split points from bezier-curve to line

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