本文整理汇总了C++中cairo_rotate函数的典型用法代码示例。如果您正苦于以下问题:C++ cairo_rotate函数的具体用法?C++ cairo_rotate怎么用?C++ cairo_rotate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cairo_rotate函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: add_label
static void
add_label (struct chart *c,
int test,
const char *label)
{
cairo_text_extents_t extents;
double dx, x;
cairo_save (c->cr);
dx = c->width / (double) c->num_tests;
if (dx / 2 - PAD < 4)
return;
cairo_set_font_size (c->cr, dx / 2 - PAD);
cairo_text_extents (c->cr, label, &extents);
cairo_set_source_rgb (c->cr, .5, .5, .5);
x = (test + .5) * dx;
cairo_save (c->cr);
cairo_translate (c->cr, x, c->height - PAD / 2);
cairo_rotate (c->cr, -M_PI/2);
cairo_move_to (c->cr, 0, -extents.y_bearing/2);
cairo_show_text (c->cr, label);
cairo_restore (c->cr);
cairo_save (c->cr);
cairo_translate (c->cr, x, PAD / 2);
cairo_rotate (c->cr, -M_PI/2);
cairo_move_to (c->cr, -extents.width, -extents.y_bearing/2);
cairo_show_text (c->cr, label);
cairo_restore (c->cr);
cairo_restore (c->cr);
}
示例2: add_rectangle
static void
add_rectangle (cairo_t *cr, double size)
{
double x, y;
if (size < 1)
return;
cairo_get_current_point (cr, &x, &y);
cairo_rel_move_to (cr, -size/2., -size/2.);
cairo_rel_line_to (cr, size, 0);
cairo_rel_line_to (cr, 0, size);
cairo_rel_line_to (cr, -size, 0);
cairo_close_path (cr);
cairo_save (cr);
cairo_translate (cr, -size/2., size);
cairo_move_to (cr, x, y);
cairo_rotate (cr, M_PI/4);
add_rectangle (cr, size / M_SQRT2);
cairo_restore (cr);
cairo_save (cr);
cairo_translate (cr, size/2., size);
cairo_move_to (cr, x, y);
cairo_rotate (cr, -M_PI/4);
add_rectangle (cr, size / M_SQRT2);
cairo_restore (cr);
}
示例3: match
void match(unsigned int position)
{
// cairo_set_line_cap(cairoOut, CAIRO_LINE_CAP_ROUND);
m_sensorReference.seek(position);
cairo_matrix_t m1;
cairo_get_matrix(cairoOut, &m1);
cairo_identity_matrix(cairoOut);
cairo_set_source_surface(cairoOut, cairo_get_target(cairoMap), 0., 0.);
cairo_paint(cairoOut);
cairo_set_matrix(cairoOut, &m1);
// cairo_set_line_width(cairoOut, 1./(2.*scaleFactor));
std::vector<InterestPoint *> pointsLocal(m_pointsReference[position].size());
const LaserReading* lreadReference = dynamic_cast<const LaserReading*>(m_sensorReference.current());
for(unsigned int j = 0; j < m_pointsReference[position].size(); j++){
InterestPoint * point = new InterestPoint(*m_pointsReference[position][j]);
point->setPosition(lreadReference->getLaserPose().ominus(point->getPosition()));
pointsLocal[j] = point;
}
for(unsigned int i = 0; i < m_pointsReference.size(); i++){
if(i == position) {
continue;
}
OrientedPoint2D transform;
std::vector< std::pair<InterestPoint*, InterestPoint* > > correspondences;
double result = m_ransac->matchSets(m_pointsReference[i], pointsLocal, transform, correspondences);
if(correspondences.size() >= corresp) {
cairo_matrix_t m;
cairo_get_matrix(cairoOut, &m);
cairo_translate(cairoOut, transform.x, transform.y);
cairo_rotate(cairoOut, transform.theta);
cairo_set_source_rgba(cairoOut, 1., 0., 0., 1. - result/(acceptanceSigma * acceptanceSigma * 5.99 * double(pointsLocal.size())));
cairo_move_to(cairoOut, 0., -0.3);
cairo_line_to(cairoOut, 0.6, 0.);
cairo_line_to(cairoOut, 0., 0.3);
cairo_close_path(cairoOut);
cairo_fill(cairoOut);
cairo_set_matrix(cairoOut, &m);
}
}
cairo_matrix_t m;
cairo_get_matrix(cairoOut, &m);
cairo_translate(cairoOut, lreadReference->getLaserPose().x, lreadReference->getLaserPose().y);
cairo_rotate(cairoOut, lreadReference->getLaserPose().theta);
cairo_set_source_rgba(cairoOut, 0., 0., 1., 1.);
cairo_move_to(cairoOut, 0., -0.3);
cairo_line_to(cairoOut, 0.6, 0.);
cairo_line_to(cairoOut, 0., 0.3);
cairo_close_path(cairoOut);
cairo_stroke(cairoOut);
cairo_set_matrix(cairoOut, &m);
// cairo_show_page(cairoOut);
}
示例4: cairo_create
void BenchCairo::runFillRectRotate(BenchOutput& output, const BenchParams& params)
{
cairo_t* cr = cairo_create(screenCairo);
configureContext(cr, params);
BenchRandom rRect(app);
BenchRandom rArgb(app);
float cx = (float)params.screenSize.w * 0.5f;
float cy = (float)params.screenSize.h * 0.5f;
float angle = 0.0f;
if (params.source == BENCH_SOURCE_SOLID)
{
uint32_t i, quantity = params.quantity;
for (i = 0; i < quantity; i++, angle += 0.01f)
{
Fog::RectF r(rRect.getRectF(params.screenSize, params.shapeSize, params.shapeSize));
Fog::Argb32 c0(rArgb.getArgb32());
cairo_translate(cr, cx, cy);
cairo_rotate(cr, angle);
cairo_translate(cr, -cx, -cy);
cairo_set_source_rgba(cr, double(c0.r) * sc, double(c0.g) * sc, double(c0.b) * sc, double(c0.a) * sc);
cairo_rectangle(cr, r.x, r.y, r.w, r.h);
cairo_fill(cr);
cairo_identity_matrix(cr);
}
}
else
{
uint32_t i, quantity = params.quantity;
for (i = 0; i < quantity; i++, angle += 0.01f)
{
Fog::RectF r(rRect.getRectF(params.screenSize, params.shapeSize, params.shapeSize));
Fog::Argb32 c0(rArgb.getArgb32());
Fog::Argb32 c1(rArgb.getArgb32());
Fog::Argb32 c2(rArgb.getArgb32());
cairo_translate(cr, cx, cy);
cairo_rotate(cr, angle);
cairo_translate(cr, -cx, -cy);
cairo_pattern_t* pattern = createLinearGradient(r.x, r.y, r.x + r.w, r.y + r.h, c0, c1, c2);
cairo_set_source(cr, pattern);
cairo_rectangle(cr, r.x, r.y, r.w, r.h);
cairo_fill(cr);
cairo_identity_matrix(cr);
cairo_pattern_destroy(pattern);
}
}
cairo_destroy(cr);
}
示例5: handle_apply
void handle_apply(render_context& ctx) override {
if(std::abs(cx_) < DBL_EPSILON && std::abs(cy_) < DBL_EPSILON) {
cairo_rotate(ctx.cairo(), angle_);
} else {
cairo_translate(ctx.cairo(), cx_, cy_);
cairo_rotate(ctx.cairo(), angle_);
cairo_translate(ctx.cairo(), -cx_, -cy_);
}
}
示例6: cairo_image_surface_create
void TriangleMarkerImpl::DrawSymbol()
{
m_icon = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, m_size*2, m_size*2);
m_cairo = cairo_create(m_icon);
size_t count = sizeof(g_auge_marker_triangle_points) / sizeof(double) / 2;
double offset_x=0, offset_y=0;
double cx=m_size;
double cy=m_size;
double x, y;
double size_2 = m_size / 2.0f;
cairo_new_path(m_cairo);
cairo_translate (m_cairo, cx, cy);
//cairo_scale(m_cairo,10,10);
cairo_rotate (m_cairo, m_rotation*PI/180.0f);
x = g_auge_marker_triangle_points[0][0];
y = g_auge_marker_triangle_points[0][1];
cairo_move_to(m_cairo, x*size_2, y*size_2);
for(size_t i=1; i<count; i++)
{
x = g_auge_marker_triangle_points[i][0];
y = g_auge_marker_triangle_points[i][1];
cairo_line_to(m_cairo, x*size_2, y*size_2);
}
cairo_close_path(m_cairo);
cairo_rotate (m_cairo, m_rotation*PI/180.0f);
if(m_pFill!=NULL)
{
GColor& color = m_pFill->GetColor();
cairo_set_source_rgba(m_cairo, color.GetRedF(), color.GetGreenF(), color.GetBlueF(), color.GetAlphaF());
if(m_pStroke==NULL)
{
cairo_fill(m_cairo);
}
else
{
cairo_fill_preserve(m_cairo);
}
}
if(m_pStroke!=NULL)
{
set_stroke_style(m_cairo, m_pStroke);
cairo_stroke(m_cairo);
}
//cairo_surface_write_to_png(m_icon, "G:\\temp\\map\\icon.png");
}
示例7: gtk_css_image_builtin_draw_arrow
static void
gtk_css_image_builtin_draw_arrow (GtkCssImage *image,
cairo_t *cr,
double width,
double height,
GtkCssImageBuiltinType image_type)
{
GtkCssImageBuiltin *builtin = GTK_CSS_IMAGE_BUILTIN (image);
double line_width;
double size;
size = MIN (width, height);
cairo_translate (cr, width / 2.0, height / 2.0);
switch (image_type)
{
case GTK_CSS_IMAGE_BUILTIN_ARROW_UP:
break;
case GTK_CSS_IMAGE_BUILTIN_ARROW_DOWN:
cairo_rotate (cr, G_PI);
break;
case GTK_CSS_IMAGE_BUILTIN_ARROW_LEFT:
cairo_rotate (cr, 3 * G_PI / 2);
break;
case GTK_CSS_IMAGE_BUILTIN_ARROW_RIGHT:
cairo_rotate (cr, G_PI / 2);
break;
default:
g_assert_not_reached ();
break;
}
line_width = size / 3.0 / sqrt (2);
cairo_set_line_width (cr, line_width);
cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
cairo_scale (cr,
(size / (size + line_width)),
(size / (size + line_width)));
cairo_move_to (cr, -size / 2.0, size / 4.0);
cairo_rel_line_to (cr, size / 2.0, -size / 2.0);
cairo_rel_line_to (cr, size / 2.0, size / 2.0);
gdk_cairo_set_source_rgba (cr, &builtin->fg_color);
cairo_stroke (cr);
}
示例8: draw
static void
draw (TboObjectBase *self, Frame *frame, cairo_t *cr)
{
TboObjectPixmap *pixmap = TBO_OBJECT_PIXMAP (self);
int w, h;
cairo_surface_t *image;
GdkPixbuf *pixbuf;
GError *error = NULL;
char path[255];
tbo_files_expand_path (pixmap->path->str, path);
pixbuf = gdk_pixbuf_new_from_file (path, &error);
if (!pixbuf) {
g_warning ("There's a problem here: %s", error->message);
return;
}
w = gdk_pixbuf_get_width (pixbuf);
h = gdk_pixbuf_get_height (pixbuf);
if (!self->width) self->width = w;
if (!self->height) self->height = h;
float factorw = (float)self->width / (float)w;
float factorh = (float)self->height / (float)h;
cairo_matrix_t mx = {1, 0, 0, 1, 0, 0};
tbo_object_base_get_flip_matrix (self, &mx);
cairo_rectangle(cr, frame->x+2, frame->y+2, frame->width-4, frame->height-4);
cairo_clip (cr);
cairo_translate (cr, frame->x+self->x, frame->y+self->y);
cairo_rotate (cr, self->angle);
cairo_transform (cr, &mx);
cairo_scale (cr, factorw, factorh);
gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
cairo_paint (cr);
cairo_scale (cr, 1/factorw, 1/factorh);
cairo_transform (cr, &mx);
cairo_rotate (cr, -self->angle);
cairo_translate (cr, -(frame->x+self->x), -(frame->y+self->y));
cairo_reset_clip (cr);
cairo_surface_destroy (image);
}
示例9: draw_arrow
static void
draw_arrow (GOArrow const *arrow, cairo_t *cr, GOStyle *style,
double *endx, double *endy, double phi)
{
double l, w;
if (arrow->typ == GO_ARROW_NONE)
return;
l = hypot (*endx, *endy);
w = style->line.width ? style->line.width / 2.0 : 0.5;
switch (arrow->typ) {
case GO_ARROW_KITE:
cairo_save (cr);
cairo_translate (cr, (int) *endx, (int) *endy);
cairo_rotate (cr, phi);
cairo_move_to (cr, -arrow->a, w);
cairo_line_to (cr, -arrow->b, w + arrow->c);
cairo_line_to (cr, 0., 0.);
cairo_line_to (cr, -arrow->b, -w - arrow->c);
cairo_line_to (cr, -arrow->a, -w);
cairo_close_path (cr);
cairo_set_source_rgba (cr, GO_COLOR_TO_CAIRO (style->line.color));
cairo_fill (cr);
cairo_restore (cr);
if (l > 0.) {
(*endx) -= arrow->a * *endx / l;
(*endy) -= arrow->a * *endy / l;
} else
*endx = *endy = 0.;
break;
case GO_ARROW_OVAL:
cairo_save (cr);
cairo_translate (cr, *endx, *endy);
cairo_rotate (cr, phi);
cairo_scale (cr, arrow->a, arrow->b);
cairo_arc (cr, 0., 0., 1., 0., 2 * M_PI);
cairo_set_source_rgba (cr, GO_COLOR_TO_CAIRO (style->line.color));
cairo_fill (cr);
cairo_restore (cr);
break;
default:
g_assert_not_reached ();
}
}
示例10: cr_rotate
static VALUE
cr_rotate (VALUE self, VALUE radians)
{
cairo_rotate (_SELF, NUM2DBL (radians));
cr_check_status (_SELF);
return self;
}
示例11: do_wide_fills
static cairo_time_t
do_wide_fills (cairo_t *cr, int width, int height, int loops)
{
int count;
/* lots and lots of overlapping stroke-like fills */
state = 0xc0ffee;
for (count = 0; count < 1000; count++) {
cairo_save (cr);
cairo_translate (cr,
uniform_random (0, width),
uniform_random (0, height));
cairo_rotate (cr, uniform_random (-M_PI,M_PI));
cairo_rectangle (cr, 0, 0, uniform_random (0, width), 5);
cairo_restore (cr);
}
cairo_perf_timer_start ();
while (loops--)
cairo_fill_preserve (cr);
cairo_perf_timer_stop ();
cairo_new_path (cr);
return cairo_perf_timer_elapsed ();
}
示例12: goc_component_draw
static void
goc_component_draw (GocItem const *item, cairo_t *cr)
{
GocComponent *component = GOC_COMPONENT (item);
GocCanvas *canvas = item->canvas;
double x0, y0 = component->y;
if (goc_canvas_get_direction (item->canvas) == GOC_DIRECTION_RTL) {
x0 = component->x + component->w;
goc_group_adjust_coords (item->parent, &x0, &y0);
x0 = canvas->width - (int) (x0 - canvas->scroll_x1);
} else {
x0 = component->x;
goc_group_adjust_coords (item->parent, &x0, &y0);
x0 = (int) (x0 - canvas->scroll_x1);
}
cairo_save (cr);
_goc_item_transform (item, cr, TRUE);
if (component->rotation == 0.)
cairo_translate (cr, x0,
(int) (y0 - canvas->scroll_y1));
else {
cairo_translate (cr, x0 + component->w / 2,
(int) (y0 - canvas->scroll_y1 + component->h / 2));
cairo_rotate (cr, -component->rotation);
cairo_translate (cr, -component->w / 2, -component->h / 2);
}
cairo_rectangle (cr, 0., 0., component->w,
component->h);
cairo_clip (cr);
go_component_render (component->component, cr,
component->w,
component->h);
cairo_restore (cr);
}
示例13: renderSVGSymbolCairo
int renderSVGSymbolCairo(imageObj *img, double x, double y, symbolObj *symbol,
symbolStyleObj *style)
{
#ifdef USE_SVG_CAIRO
cairo_renderer *r = CAIRO_RENDERER(img);
//double ox=symbol->sizex*0.5,oy=symbol->sizey*0.5;
svg_cairo_status_t status;
struct svg_symbol_cache *cache;
msPreloadSVGSymbol(symbol);
assert(symbol->renderer_cache);
cache = symbol->renderer_cache;
cairo_save(r->cr);
cairo_translate(r->cr,x,y);
cairo_scale(r->cr,style->scale,style->scale);
if (style->rotation != 0) {
cairo_rotate(r->cr, -style->rotation);
cairo_translate (r->cr, -(int)(symbol->sizex/2), -(int)(symbol->sizey/2));
} else
cairo_translate (r->cr, -(int)(symbol->sizex/2), -(int)(symbol->sizey/2));
status = svg_cairo_render(cache->svgc, r->cr);
cairo_restore(r->cr);
return MS_SUCCESS;
#else
msSetError(MS_MISCERR, "SVG Symbols requested but is not built with libsvgcairo",
"renderSVGSymbolCairo()");
return MS_FAILURE;
#endif
}
示例14: draw
static cairo_test_status_t
draw (cairo_t *cr, int width, int height)
{
cairo_pattern_t *source;
int surface_size = sqrt ((SIZE - 2*PAD)*(SIZE - 2*PAD)/2);
/* Use a gray (neutral) background, so we can spot if the backend pads
* with any other colour.
*/
cairo_set_source_rgb (cr, .5, .5, .5);
cairo_paint (cr);
cairo_translate(cr, SIZE/2, SIZE/2);
cairo_rotate (cr, M_PI / 4.0);
cairo_translate (cr, -surface_size/2, -surface_size/2);
source = create_image_source (surface_size);
cairo_pattern_set_filter (source, CAIRO_FILTER_NEAREST);
cairo_set_source(cr, source);
cairo_pattern_destroy (source);
cairo_paint (cr);
return CAIRO_TEST_SUCCESS;
}
示例15: cairo_rotate
void GraphicsContext::rotate(float radians)
{
if (paintingDisabled())
return;
cairo_rotate(m_data->cr, radians);
}