本文整理汇总了C++中cairo_transform函数的典型用法代码示例。如果您正苦于以下问题:C++ cairo_transform函数的具体用法?C++ cairo_transform怎么用?C++ cairo_transform使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cairo_transform函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: 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);
}
开发者ID:ksyz,项目名称:darktable,代码行数:32,代码来源:paint.c
示例2: cairo_save
void wxCairoSVGRadialGradient::Op(cairo_t* cairo_image, bool preserve, wxCairoSVGPaintServerOp op) {
cairo_pattern_t *pat;
bool saved = false;
if (m_gradientUnits == _T("objectBoundingBox")) {
cairo_save(cairo_image);
saved = true;
double minx;
double miny;
double maxx;
double maxy;
cairo_path_extents(cairo_image, &minx, &miny, &maxx, &maxy);
cairo_matrix_t mat;
cairo_matrix_init(&mat, maxx-minx, 0, 0, maxy-miny, minx, miny);
cairo_transform(cairo_image, &mat);
wxLogTrace(_T("svg"), _T("wxCairoSVGRadialGradient::Op transformed to objectBoundingBox minx %f miny %f maxx %f maxy %f"),
minx, miny, maxx, maxy);
} else if (m_gradientTransform.Contains(_T("matrix"))) {
double m[6];
wxArrayString params = wxStringTokenize(m_gradientTransform.Mid(m_gradientTransform.Find(_T("matrix(")) + 7), _T(" "));
if (params.Count() == 6) {
for (int i = 0; i < 6; i++) {
params[i].Strip().ToDouble(&m[i]);
}
cairo_save(cairo_image);
saved = true;
cairo_matrix_t mat;
cairo_matrix_init(&mat, m[0], m[1], m[2], m[3], m[4], m[5]);
cairo_transform(cairo_image, &mat);
wxLogTrace(_T("svg"), _T("wxCairoSVGRadialGradient::Op matrix transform %f %f %f %f %f %f"),
m[0], m[1], m[2], m[3], m[4], m[5]);
}
}
pat = cairo_pattern_create_radial(m_cx, m_cy, 0, m_cx, m_cy, m_r);
wxLogTrace(_T("svg"), _T("wxCairoSVGRadialGradient::Op cairo_pattern_create_radial cx %f cy %f r %f"),
m_cx, m_cy, m_r);
for (wxCairoSVGGradientStopList::iterator i = m_stopList.begin(); i != m_stopList.end(); ++i) {
wxCairoSVGGradientStop* stop = *i;
if (stop->m_opacity == 1) {
cairo_pattern_add_color_stop_rgb(pat, stop->m_offset, (double) stop->m_r / 255.0, (double) stop->m_g / 255.0, (double) stop->m_b / 255.0);
} else {
cairo_pattern_add_color_stop_rgba(pat, stop->m_offset, (double) stop->m_r / 255.0, (double) stop->m_g / 255.0, (double) stop->m_b / 255.0, stop->m_opacity);
}
}
cairo_set_source(cairo_image, pat);
wxCairoSVGPaintServer::Op(cairo_image, preserve, op);
if (saved) cairo_restore(cairo_image);
cairo_pattern_destroy(pat);
wxLogTrace(_T("svg"), _T("wxCairoSVGRadialGradient::Op done"));
}
开发者ID:johanvdb,项目名称:wxCairoSVG,代码行数:58,代码来源:radialgradient.cpp
示例3: draw
static cairo_test_status_t
draw (cairo_t *cr, int width, int height)
{
/* We draw in the default black, so paint white first. */
cairo_save (cr);
cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */
cairo_paint (cr);
cairo_restore (cr);
cairo_translate (cr, PAD, PAD);
cairo_set_line_width (cr, LINE_WIDTH);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT);
cairo_save (cr);
{
cairo_matrix_t skew_x = {
1.0, 0.0,
SKEW_FACTOR, 1.0,
0.0, 0.0
};
cairo_translate (cr, LINE_WIDTH / 2.0, 0.0);
cairo_transform (cr, &skew_x);
cairo_move_to (cr, 0.0, 0.0);
cairo_line_to (cr, 0.0, LINE_LENGTH);
cairo_stroke (cr);
}
cairo_restore (cr);
cairo_translate (cr, 0.0, LINE_WIDTH);
cairo_save (cr);
{
cairo_matrix_t skew_y = {
1.0, SKEW_FACTOR,
0.0, 1.0,
0.0, 0.0
};
cairo_translate (cr, 0.0, LINE_WIDTH / 2.0);
cairo_transform (cr, &skew_y);
cairo_move_to (cr, 0.0, 0.0);
cairo_line_to (cr, LINE_LENGTH, 0.0);
cairo_stroke (cr);
}
cairo_restore (cr);
return CAIRO_TEST_SUCCESS;
}
开发者ID:499940913,项目名称:moon,代码行数:54,代码来源:skew-extreme.c
示例4: ml_cairo_transform
CAMLprim value
ml_cairo_transform (value v_cr, value v_matrix)
{
#ifndef ARCH_ALIGN_DOUBLE
cairo_transform (cairo_t_val (v_cr), cairo_matrix_t_val (v_matrix));
#else
cairo_matrix_t mat;
ml_convert_cairo_matrix_in (v_matrix, &mat);
cairo_transform (cairo_t_val (v_cr), &mat);
#endif
check_cairo_status (v_cr);
return Val_unit;
}
开发者ID:DMClambo,项目名称:pfff,代码行数:13,代码来源:ml_cairo.c
示例5: gtk_css_style_render_icon
void
gtk_css_style_render_icon (GtkCssStyle *style,
cairo_t *cr,
double x,
double y,
double width,
double height,
GtkCssImageBuiltinType builtin_type)
{
const GtkCssValue *shadows;
cairo_matrix_t matrix, transform_matrix, saved_matrix;
GtkCssImage *image;
g_return_if_fail (GTK_IS_CSS_STYLE (style));
g_return_if_fail (cr != NULL);
image = _gtk_css_image_value_get_image (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SOURCE));
if (image == NULL)
return;
cairo_get_matrix (cr, &saved_matrix);
shadows = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SHADOW);
cairo_translate (cr, x, y);
if (_gtk_css_transform_value_get_matrix (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_TRANSFORM), &transform_matrix))
{
/* XXX: Implement -gtk-icon-transform-origin instead of hardcoding "50% 50%" here */
cairo_matrix_init_translate (&matrix, width / 2, height / 2);
cairo_matrix_multiply (&matrix, &transform_matrix, &matrix);
cairo_matrix_translate (&matrix, - width / 2, - height / 2);
if (_gtk_css_shadows_value_is_none (shadows))
{
cairo_transform (cr, &matrix);
gtk_css_image_builtin_draw (image, cr, width, height, builtin_type);
}
else
{
cairo_push_group (cr);
cairo_transform (cr, &matrix);
gtk_css_image_builtin_draw (image, cr, width, height, builtin_type);
cairo_pop_group_to_source (cr);
_gtk_css_shadows_value_paint_icon (shadows, cr);
cairo_paint (cr);
}
}
cairo_set_matrix (cr, &saved_matrix);
}
开发者ID:GYGit,项目名称:gtk,代码行数:51,代码来源:gtkrendericon.c
示例6: _adg_render
static void
_adg_render(AdgEntity *entity, cairo_t *cr)
{
AdgLogoClassPrivate *data_class = ADG_LOGO_GET_CLASS(entity)->data_class;
AdgLogoPrivate *data = adg_logo_get_instance_private((AdgLogo *) entity);
const cairo_path_t *cairo_path;
cairo_transform(cr, adg_entity_get_global_matrix(entity));
cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND);
cairo_path = adg_trail_get_cairo_path((AdgTrail *) data_class->symbol);
if (cairo_path != NULL) {
cairo_save(cr);
cairo_transform(cr, adg_entity_get_local_matrix(entity));
cairo_append_path(cr, cairo_path);
cairo_restore(cr);
cairo_set_line_width(cr, 3);
adg_entity_apply_dress(entity, data->symbol_dress, cr);
cairo_stroke(cr);
}
cairo_path = adg_trail_get_cairo_path((AdgTrail *) data_class->screen);
if (cairo_path != NULL) {
cairo_save(cr);
cairo_transform(cr, adg_entity_get_local_matrix(entity));
cairo_append_path(cr, cairo_path);
cairo_restore(cr);
cairo_set_line_width(cr, 2);
adg_entity_apply_dress(entity, data->screen_dress, cr);
cairo_stroke(cr);
}
cairo_path = adg_trail_get_cairo_path((AdgTrail *) data_class->frame);
if (cairo_path != NULL) {
cairo_save(cr);
cairo_transform(cr, adg_entity_get_local_matrix(entity));
cairo_append_path(cr, cairo_path);
cairo_restore(cr);
cairo_set_line_width(cr, 2);
cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
adg_entity_apply_dress(entity, data->frame_dress, cr);
cairo_stroke(cr);
}
}
开发者ID:ntd,项目名称:adg,代码行数:50,代码来源:adg-logo.c
示例7: 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);
}
开发者ID:FranciscoJRA,项目名称:TBO,代码行数:48,代码来源:tbo-object-pixmap.c
示例8: platformPath
void Path::transform(const AffineTransform& trans)
{
cairo_t* m_cr = platformPath()->m_cr;
cairo_matrix_t c_matrix = cairo_matrix_t(trans);
cairo_matrix_invert(&c_matrix);
cairo_transform(m_cr, &c_matrix);
}
开发者ID:acss,项目名称:owb-mirror,代码行数:7,代码来源:PathCairo.cpp
示例9: cairo_save
void cairo_container::draw_txdib( cairo_t* cr, CTxDIB* bmp, int x, int y, int cx, int cy )
{
cairo_save(cr);
cairo_matrix_t flib_m;
cairo_matrix_init(&flib_m, 1, 0, 0, -1, 0, 0);
cairo_surface_t* img = NULL;
CTxDIB rbmp;
if(cx != bmp->getWidth() || cy != bmp->getHeight())
{
bmp->resample(cx, cy, &rbmp);
img = cairo_image_surface_create_for_data((unsigned char*) rbmp.getBits(), CAIRO_FORMAT_ARGB32, rbmp.getWidth(), rbmp.getHeight(), rbmp.getWidth() * 4);
cairo_matrix_translate(&flib_m, 0, -rbmp.getHeight());
cairo_matrix_translate(&flib_m, x, -y);
} else
{
img = cairo_image_surface_create_for_data((unsigned char*) bmp->getBits(), CAIRO_FORMAT_ARGB32, bmp->getWidth(), bmp->getHeight(), bmp->getWidth() * 4);
cairo_matrix_translate(&flib_m, 0, -bmp->getHeight());
cairo_matrix_translate(&flib_m, x, -y);
}
cairo_transform(cr, &flib_m);
cairo_set_source_surface(cr, img, 0, 0);
cairo_paint(cr);
cairo_restore(cr);
cairo_surface_destroy(img);
}
开发者ID:bigfatbrowncat,项目名称:litehtml,代码行数:31,代码来源:cairo_container.cpp
示例10: uiDrawTransform
void uiDrawTransform(uiDrawContext *c, uiDrawMatrix *m)
{
cairo_matrix_t cm;
m2c(m, &cm);
cairo_transform(c->cr, &cm);
}
开发者ID:08opt,项目名称:libui,代码行数:7,代码来源:draw.c
示例11: draw_quadrant
/* Draw the word cairo at NUM_TEXT different angles.
* We separate the circle into quadrants to reduce
* numerical errors i.e. so each quarter is pixel-aligned.
*/
static void
draw_quadrant (cairo_t *cr,
const char *text,
const cairo_text_extents_t *extents,
const cairo_matrix_t *transform,
int x_off, int y_off)
{
int i;
for (i = 0; i < NUM_TEXT/4; i++) {
cairo_save (cr);
cairo_rotate (cr, 2*M_PI*i/NUM_TEXT);
cairo_transform (cr, transform);
cairo_set_line_width (cr, 1.0);
cairo_rectangle (cr, x_off - 0.5, y_off - 0.5, extents->width + 1, extents->height + 1);
cairo_set_source_rgb (cr, 1, 0, 0);
cairo_stroke (cr);
cairo_move_to (cr, x_off - extents->x_bearing, y_off - extents->y_bearing);
cairo_set_source_rgb (cr, 0, 0, 0);
#if CAIRO_TEST_GENERATE_REFERENCE_IMAGE
cairo_text_path (cr, text);
cairo_fill (cr);
#else
cairo_show_text (cr, text);
#endif
cairo_restore (cr);
}
}
开发者ID:ghub,项目名称:NVprSDK,代码行数:32,代码来源:text-rotate.c
示例12: selection_render_mask
static void
selection_render_mask (Selection *selection)
{
GdkWindow *window;
cairo_surface_t *surface;
cairo_t *cr;
window = gtk_widget_get_window (selection->shell->canvas);
surface = gdk_window_create_similar_surface (window, CAIRO_CONTENT_ALPHA,
gdk_window_get_width (window),
gdk_window_get_height (window));
cr = cairo_create (surface);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
cairo_set_line_width (cr, 1.0);
if (selection->shell->rotate_transform)
cairo_transform (cr, selection->shell->rotate_transform);
gimp_cairo_add_segments (cr,
selection->segs_in,
selection->n_segs_in);
cairo_stroke (cr);
selection->segs_in_mask = cairo_pattern_create_for_surface (surface);
cairo_destroy (cr);
cairo_surface_destroy (surface);
}
开发者ID:AnonPower,项目名称:picman,代码行数:29,代码来源:gimpdisplayshell-selection.c
示例13: cr_transform
static VALUE
cr_transform (VALUE self, VALUE matrix)
{
cairo_transform (_SELF, RVAL2CRMATRIX (matrix));
cr_check_status (_SELF);
return self;
}
开发者ID:exvayn,项目名称:cairo-1.8.1-i386,代码行数:7,代码来源:rb_cairo_context.c
示例14: ge_cairo_mirror
void
ge_cairo_mirror (cairo_t *cr,
CairoMirror mirror,
gint *x,
gint *y,
gint *width,
gint *height)
{
cairo_matrix_t matrix;
cairo_matrix_init_identity (&matrix);
cairo_translate (cr, *x, *y);
*x = 0;
*y = 0;
if (mirror & CR_MIRROR_HORIZONTAL)
{
cairo_matrix_scale (&matrix, -1, 1);
*x = -*width;
}
if (mirror & CR_MIRROR_VERTICAL)
{
cairo_matrix_scale (&matrix, 1, -1);
*y = -*height;
}
cairo_transform (cr, &matrix);
}
开发者ID:Distrotech,项目名称:gtk-engines,代码行数:29,代码来源:cairo-support.c
示例15: cairo_get_current_point
void Drawer::Rotation(double aAngle)
{
mAngle = aAngle * M_PI / 180;
double CentreX = 0.0;
double CentreY = 0.0;
cairo_matrix_t MatriceTranslate;
cairo_matrix_t MatriceRotate;
cairo_get_current_point(mCairoDC, &CentreX, &CentreY);
cairo_matrix_init_translate(&MatriceTranslate,CentreX,CentreY);
cairo_transform (mCairoDC, &MatriceTranslate);
cairo_matrix_init_rotate(&MatriceRotate, mAngle);
cairo_transform (mCairoDC, &MatriceRotate);
}
开发者ID:GMercat,项目名称:TestCairo,代码行数:16,代码来源:Drawer.cpp
示例16: 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);
}
开发者ID:ksyz,项目名称:darktable,代码行数:26,代码来源:paint.c
示例17: ink_cairo_transform
void
ink_cairo_transform(cairo_t *ct, Geom::Affine const &m)
{
cairo_matrix_t cm;
ink_matrix_to_cairo(cm, m);
cairo_transform(ct, &cm);
}
开发者ID:Spin0za,项目名称:inkscape,代码行数:7,代码来源:cairo-utils.cpp
示例18: GetTransform
void
GeometryGroup::Draw (cairo_t *cr)
{
Transform *transform = GetTransform ();
cairo_matrix_t saved;
cairo_get_matrix (cr, &saved);
if (transform) {
cairo_matrix_t matrix;
transform->GetTransform (&matrix);
cairo_transform (cr, &matrix);
}
GeometryCollection *children = GetChildren ();
Geometry *geometry;
// GeometryGroup is used for Clip (as a Geometry) so Fill (normally setting the fill rule) is never called
cairo_set_fill_rule (cr, convert_fill_rule (GetFillRule ()));
int children_count = children->GetCount ();
for (int i = 0; i < children_count; i++) {
geometry = children->GetValueAt (i)->AsGeometry ();
geometry->Draw (cr);
}
cairo_set_matrix (cr, &saved);
}
开发者ID:kangaroo,项目名称:moon,代码行数:28,代码来源:geometry.cpp
示例19: cr_transform
static int
cr_transform (lua_State *L) {
cairo_t **obj = luaL_checkudata(L, 1, OOCAIRO_MT_NAME_CONTEXT);
cairo_matrix_t mat;
from_lua_matrix(L, &mat, 2);
cairo_transform(*obj, &mat);
return 0;
}
开发者ID:awesomeWM,项目名称:oocairo,代码行数:8,代码来源:obj_context.c
示例20: cairo_transform
void GraphicsContext::concatCTM(const AffineTransform& transform)
{
if (paintingDisabled())
return;
cairo_t* cr = m_data->cr;
const cairo_matrix_t* matrix = reinterpret_cast<const cairo_matrix_t*>(&transform);
cairo_transform(cr, matrix);
}
开发者ID:jackiekaon,项目名称:owb-mirror,代码行数:9,代码来源:GraphicsContextCairo.cpp
注:本文中的cairo_transform函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论