本文整理汇总了C++中cairo_identity_matrix函数的典型用法代码示例。如果您正苦于以下问题:C++ cairo_identity_matrix函数的具体用法?C++ cairo_identity_matrix怎么用?C++ cairo_identity_matrix使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cairo_identity_matrix函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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);
}
示例2: dtgtk_cairo_paint_triangle
void dtgtk_cairo_paint_triangle(cairo_t *cr, gint x,int y,gint w,gint h, gint flags)
{
/* initialize rotation and flip matrices */
cairo_matrix_t hflip_matrix;
cairo_matrix_init(&hflip_matrix,-1,0,0,1,1,0);
double C=cos(-(M_PI/2.0)),S=sin(-(M_PI/2.0)); // -90 degrees
C=flags&CPF_DIRECTION_DOWN?cos(-(M_PI*1.5)):C;
S=flags&CPF_DIRECTION_DOWN?sin(-(M_PI*1.5)):S;
cairo_matrix_t rotation_matrix;
cairo_matrix_init(&rotation_matrix,C,S,-S,C,0.5-C*0.5+S*0.5,0.5-S*0.5-C*0.5);
/* scale and transform*/
gint s=w<h?w:h;
cairo_translate(cr, x+(w/2.0)-(s/2.0), y+(h/2.0)-(s/2.0));
cairo_scale(cr,s,s);
cairo_set_line_width(cr,0.1);
cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND);
if( flags&CPF_DIRECTION_UP || flags &CPF_DIRECTION_DOWN)
cairo_transform(cr,&rotation_matrix);
else if(flags&CPF_DIRECTION_LEFT) // Flip x transformation
cairo_transform(cr,&hflip_matrix);
cairo_move_to(cr, 0.2, 0.2);
cairo_line_to(cr, 0.7, 0.5);
cairo_line_to(cr, 0.2, 0.8);
cairo_line_to(cr, 0.2, 0.2);
cairo_stroke(cr);
cairo_identity_matrix(cr);
}
示例3: dtgtk_cairo_paint_empty
void dtgtk_cairo_paint_empty(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags)
{
cairo_translate(cr, x, y);
cairo_scale(cr, w, h);
cairo_stroke(cr);
cairo_identity_matrix(cr);
}
示例4: dtgtk_cairo_paint_masks_eye
void dtgtk_cairo_paint_masks_eye(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags)
{
gint s = w < h ? w : h;
cairo_translate(cr, x + (w / 2.0) - (s / 2.0), y + (h / 2.0) - (s / 2.0));
cairo_scale(cr, s, s);
cairo_set_line_width(cr, 0.15);
cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND);
if((flags & CPF_ACTIVE))
cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0);
else
cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 0.5);
double dashed[] = { 0.2, 0.2 };
int len = sizeof(dashed) / sizeof(dashed[0]);
cairo_set_dash(cr, dashed, len, 0);
cairo_arc(cr, 0.75, 0.75, 0.75, 2.8, 4.7124);
cairo_set_line_width(cr, 0.1);
cairo_stroke(cr);
cairo_move_to(cr, 0.4, 0.1);
cairo_line_to(cr, 0.3, 0.8);
cairo_line_to(cr, 0.55, 0.716667);
cairo_line_to(cr, 0.65, 1.016667);
cairo_line_to(cr, 0.75, 0.983333);
cairo_line_to(cr, 0.65, 0.683333);
cairo_line_to(cr, 0.9, 0.6);
cairo_line_to(cr, 0.4, 0.1);
cairo_fill(cr);
cairo_identity_matrix(cr);
}
示例5: dtgtk_cairo_paint_store
void dtgtk_cairo_paint_store(cairo_t *cr,gint x,gint y,gint w,gint h,gint flags)
{
gint s=w<h?w:h;
cairo_translate(cr, x+(w/2.0)-(s/2.0), y+(h/2.0)-(s/2.0));
cairo_scale(cr,s,s);
cairo_set_line_width(cr,0.15);
cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND);
cairo_move_to(cr,0.275,0.1);
cairo_line_to(cr,0.1,0.1);
cairo_line_to(cr,0.1,0.9);
cairo_line_to(cr,0.9,0.9);
cairo_line_to(cr,0.9,0.175);
cairo_line_to(cr,0.825,0.1);
cairo_line_to(cr,0.825,0.5);
cairo_line_to(cr,0.275,0.5);
cairo_line_to(cr,0.275,0.1);
cairo_stroke(cr);
cairo_set_line_width(cr,0);
cairo_rectangle(cr,0.5,0.025,0.17,0.275);
cairo_fill(cr);
cairo_stroke(cr);
cairo_identity_matrix(cr);
}
示例6: dtgtk_cairo_paint_flip
void dtgtk_cairo_paint_flip(cairo_t *cr,gint x,gint y,gint w,gint h,gint flags)
{
double C=cos(-1.570796327),S=sin(-1.570796327);
cairo_matrix_t rotation_matrix;
cairo_matrix_init(&rotation_matrix,C,S,-S,C,0.5-C*0.5+S*0.5,0.5-S*0.5-C*0.5);
gint s=w<h?w:h;
cairo_translate(cr, x+(w/2.0)-(s/2.0), y+(h/2.0)-(s/2.0));
cairo_scale(cr,s,s);
cairo_set_line_width(cr,0.15);
cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND);
if( (flags&CPF_DIRECTION_UP) ) // Rotate -90 degrees
cairo_transform(cr,&rotation_matrix);
cairo_move_to(cr,0.05,0.50);
cairo_line_to(cr,0.05,0);
cairo_line_to(cr,0.95,0.50);
cairo_line_to(cr,0.2,0.50);
cairo_stroke(cr);
cairo_set_line_width(cr,0.04);
cairo_move_to(cr,0.05,0.62);
cairo_line_to(cr,0.05,1.0);
cairo_line_to(cr,0.95,0.62);
cairo_stroke(cr);
cairo_identity_matrix(cr);
}
示例7: dtgtk_cairo_paint_switch
void dtgtk_cairo_paint_switch(cairo_t *cr,gint x,gint y,gint w,gint h,gint flags)
{
gint s=w<h?w:h;
cairo_translate(cr, x+(w/2.0)-(s/2.0), y+(h/2.0)-(s/2.0));
cairo_scale(cr,s,s);
if( !(flags&CPF_ACTIVE) )
cairo_set_source_rgba(cr, 1,1,1,0.2);
cairo_set_line_width(cr,0.125);
cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND);
cairo_arc (cr, 0.5, 0.5, 0.45, (-50*3.145/180),(230*3.145/180));
cairo_move_to(cr,0.5,0.05);
cairo_line_to(cr,0.5,0.45);
cairo_stroke(cr);
if( (flags&CPF_ACTIVE) ) // If active add some green diffuse light
{
cairo_set_source_rgba(cr, 1,1,1,0.2);
cairo_set_line_width(cr,0.25);
cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND);
cairo_arc (cr, 0.5, 0.5, 0.45, (-50*3.145/180),(230*3.145/180));
cairo_move_to(cr,0.5,0.1);
cairo_line_to(cr,0.5,0.5);
cairo_stroke(cr);
}
cairo_identity_matrix(cr);
}
示例8: dtgtk_cairo_paint_plusminus
void dtgtk_cairo_paint_plusminus(cairo_t *cr,gint x,gint y,gint w,gint h,gint flags)
{
gint s=w<h?w:h;
cairo_translate(cr, x+(w/2.0)-(s/2.0), y+(h/2.0)-(s/2.0));
cairo_scale(cr,s,s);
cairo_set_source_rgba(cr, 0.6,0.6,0.6,1.0);
cairo_set_line_width(cr,0.125);
cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND);
cairo_arc (cr, 0.5, 0.5, 0.45, 0, 2*M_PI);
cairo_stroke(cr);
if( (flags&CPF_ACTIVE) )
{
cairo_move_to(cr,0.5,0.2);
cairo_line_to(cr,0.5,0.8);
cairo_move_to(cr,0.2,0.5);
cairo_line_to(cr,0.8,0.5);
cairo_stroke(cr);
}
else
{
cairo_arc (cr, 0.5, 0.5, 0.45, 0, 2*M_PI);
cairo_fill(cr);
cairo_set_source_rgba(cr, 0.1,0.1,0.1,1.0);
cairo_move_to(cr,0.2,0.5);
cairo_line_to(cr,0.8,0.5);
cairo_stroke(cr);
}
cairo_identity_matrix(cr);
}
示例9: cr_identity_matrix
static VALUE
cr_identity_matrix (VALUE self)
{
cairo_identity_matrix (_SELF);
cr_check_status (_SELF);
return self;
}
示例10: dtgtk_cairo_paint_eye_toggle
void dtgtk_cairo_paint_eye_toggle(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags)
{
gint s = w < h ? w : h;
cairo_translate(cr, x + (w / 2.0) - (s / 2.0), y + (h / 2.0) - (s / 2.0));
cairo_scale(cr, s, s);
cairo_set_line_width(cr, 0.15);
cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND);
cairo_arc(cr, 0.5, 0.5, 0.1, 0, 6.2832);
cairo_stroke(cr);
cairo_translate(cr, 0, 0.20);
cairo_save(cr);
cairo_scale(cr, 1.0, 0.60);
cairo_arc(cr, 0.5, 0.5, 0.45, 0, 6.2832);
cairo_restore(cr);
cairo_stroke(cr);
cairo_translate(cr, 0, -0.20);
if((flags & CPF_ACTIVE))
{
cairo_set_source_rgba(cr, 0.6, 0.1, 0.1, 1.0);
cairo_move_to(cr, 0.1, 0.9);
cairo_line_to(cr, 0.9, 0.1);
cairo_stroke(cr);
}
cairo_identity_matrix(cr);
}
示例11: cairo_image_surface_create
cairo_surface_t* TheStage::Render()
{
this->currentFrame++;
cairo_surface_t* surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, this->width, this->height);
cairo_t* cairo = cairo_create(surface);
// Clear the surface
// cairo_set_source_rgb(cairo, 1.0, 1.0, 1.0);
// cairo_paint(cairo);
for(std::list<ISymbol*>::iterator it = this->symbols.begin(); it != this->symbols.end(); ++it) {
ISymbol* symbol = *it;
Camera* primaryCamera = this->GetPrimaryCamera();
double rx;
double ry;
double rscale = primaryCamera->GetZoom();
symbol->Sync(this->currentFrame);
primaryCamera->Translate(symbol->x, symbol->y, rx, ry);
cairo_surface_t* subsurface = symbol->Render(rscale);
cairo_translate(cairo, rx, ry);
cairo_rotate(cairo, symbol->angle);
cairo_translate(cairo, -symbol->centerX * rscale, -symbol->centerY * rscale);
cairo_set_source_surface(cairo, subsurface, 0, 0);
cairo_paint(cairo);
cairo_surface_destroy(subsurface);
cairo_identity_matrix(cairo);
}
cairo_destroy(cairo);
return surface;
}
示例12: do_composite_checker
static cairo_perf_ticks_t
do_composite_checker (cairo_t *cr,
int width,
int height)
{
/* Compute zoom so that the src_pattern covers the whole output image. */
double xscale = width / (double) SRC_SIZE;
double yscale = height / (double) SRC_SIZE;
cairo_perf_timer_start ();
cairo_identity_matrix (cr);
/* Fill the surface with our background. */
cairo_set_source (cr, checkerboard);
cairo_paint (cr);
/* Draw the scaled image on top. */
cairo_scale (cr, xscale, yscale);
cairo_set_source (cr, src_pattern);
cairo_paint (cr);
cairo_perf_timer_stop ();
return cairo_perf_timer_elapsed ();
}
示例13: cairo_identity_matrix
void VectorGraphics::pop_matrix() {
if(matrix_stack_.empty()) {
cairo_identity_matrix(cr());
} else {
cairo_set_matrix(cr(), &matrix_stack_.front());
matrix_stack_.pop_front();
}
}
示例14: pycairo_identity_matrix
static PyObject *
pycairo_identity_matrix (PycairoContext *o)
{
cairo_identity_matrix (o->ctx);
if (Pycairo_Check_Status (cairo_status (o->ctx)))
return NULL;
Py_RETURN_NONE;
}
示例15: cairo_identity_matrix_l
static int cairo_identity_matrix_l( lua_State* L )
{
lua_cairo_t* lc = lua_cairo_check( L, 1 );
cairo_identity_matrix( lc->cairo );
return( 0 );
}