A simple example of using text in cairomm.
#include <cairommconfig.h>
#include <cairomm/cairomm.h>
const int WIDTH = 150;
const int HEIGHT = 150;
const int NUM_TEXT = 20;
const int TEXT_SIZE = 12;
{
int i, x_off, y_off;
cr->set_font_size(TEXT_SIZE);
cr->set_font_options(font_options);
cr->set_source_rgb(0.0, 0.0, 0.0);
cr->translate(width / 2.0, height / 2.0);
cr->get_text_extents(text, extents);
if (NUM_TEXT == 1)
{
x_off = y_off = 0;
}
else
{
y_off = (int) - floor(0.5 + extents.height / 2.0);
x_off = (int) floor(0.5 + (extents.height + 1.0) / (2.0 *
tan (M_PI / NUM_TEXT)));
}
for (i=0; i < NUM_TEXT; i++)
{
cr->save();
cr->rotate(2 * M_PI * i / NUM_TEXT);
cr->set_line_width(1.0);
cr->rectangle(x_off - 0.5, y_off - 0.5, extents.width + 1,
extents.height + 1);
cr->set_source_rgb(1, 0, 0);
cr->stroke();
cr->move_to(x_off - extents.x_bearing, y_off - extents.y_bearing);
cr->set_source_rgb(0, 0, 0);
cr->show_text("cairo");
cr->restore();
}
}
int main (void)
{
draw(cr, WIDTH, HEIGHT);
#ifdef CAIRO_HAS_PNG_FUNCTIONS
const char* filename = "text-rotate.png";
surface->write_to_png(filename);
#else
std::cout <<
"You must compile cairo with PNG support for this example to work" <<
std::endl;
#endif
}
complex< _Tp > tan(const complex< _Tp > &)
basic_ostream< _CharT, _Traits > & endl(basic_ostream< _CharT, _Traits > &__os)
static RefPtr< Context > create(const RefPtr< Surface > &target)
The font options specify how fonts should be rendered.
Definition fontoptions.h:39
@ NONE
Do not hint outlines.
void set_hint_style(HintStyle hint_style)
Sets the hint style for font outlines for the font options object.
void set_antialias(Antialias antialias)
Sets the antialiasing mode for the font options object.
void set_hint_metrics(HintMetrics hint_metrics)
Sets the metrics hinting mode for the font options object.
@ OFF
Do not hint font metrics.
static RefPtr< ImageSurface > create(Format format, int width, int height)
Creates an image surface of the specified format and dimensions.
@ ARGB32
Each pixel is a 32-bit quantity, with alpha in the upper 8 bits, then red, then green,...
@ NORMAL
Upright font style.
@ NORMAL
Normal font weight.
@ ANTIALIAS_GRAY
Perform single-color antialiasing (using shades of gray for black text on white background,...
Definition enums.h:56
cairo_text_extents_t TextExtents
See the cairo_text_extents_t reference in the cairo manual for more information.
Definition types.h:48