当前位置: 首页>>代码示例>>C++>>正文


C++ cairo_surface_reference函数代码示例

本文整理汇总了C++中cairo_surface_reference函数的典型用法代码示例。如果您正苦于以下问题:C++ cairo_surface_reference函数的具体用法?C++ cairo_surface_reference怎么用?C++ cairo_surface_reference使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了cairo_surface_reference函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: draw_thread

static void *
draw_thread (void *arg)
{
    const char *text = "Hello world. ";
    thread_data_t *thread_data = arg;
    cairo_surface_t *surface;
    cairo_font_extents_t extents;
    cairo_t *cr;
    int i;

    cr = cairo_create (thread_data->target);
    cairo_surface_destroy (thread_data->target);

    cairo_set_source_rgb (cr, 1, 1, 1);
    cairo_paint (cr);
    cairo_set_source_rgb (cr, 0, 0, 0);

    cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif",
			    CAIRO_FONT_SLANT_NORMAL,
			    CAIRO_FONT_WEIGHT_NORMAL);
    cairo_set_font_size (cr, NUM_ITERATIONS);
    cairo_font_extents (cr, &extents);

    cairo_move_to (cr, 1, HEIGHT - extents.descent - 1);

    for (i = 0; i < NUM_ITERATIONS; i++) {
	char buf[2];

	cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif",
				CAIRO_FONT_SLANT_NORMAL,
				CAIRO_FONT_WEIGHT_NORMAL);
	cairo_set_font_size (cr, i);

	buf[0] = text[i%strlen(text)];
	buf[1] = '\0';
	cairo_show_text (cr, buf);
    }

    surface = cairo_surface_reference (cairo_get_target (cr));
    cairo_destroy (cr);

    return surface;
}
开发者ID:Distrotech,项目名称:cairo,代码行数:43,代码来源:pthread-show-text.c

示例2: _cairo_qt_surface_acquire_source_image

static cairo_status_t
_cairo_qt_surface_acquire_source_image (void *abstract_surface,
					cairo_image_surface_t **image_out,
					void **image_extra)
{
    cairo_qt_surface_t *qs = (cairo_qt_surface_t *) abstract_surface;

    D(fprintf(stderr, "q[%p] acquire_source_image\n", abstract_surface));

    *image_extra = NULL;

    if (qs->image_equiv) {
        *image_out = (cairo_image_surface_t*)
                     cairo_surface_reference (qs->image_equiv);

        return CAIRO_STATUS_SUCCESS;
    }

    if (qs->pixmap) {
        QImage *qimg = new QImage(qs->pixmap->toImage());
	cairo_surface_t *image;
	cairo_status_t status;

        image = cairo_image_surface_create_for_data (qimg->bits(),
						     _cairo_format_from_qimage_format (qimg->format()),
						     qimg->width(), qimg->height(),
						     qimg->bytesPerLine());

	status = _cairo_user_data_array_set_data (&image->user_data,
						  (const cairo_user_data_key_t *)&_qimg_destroy,
						  qimg,
						  _qimg_destroy);
	if (status) {
	    cairo_surface_destroy (image);
	    return status;
	}

	*image_out = (cairo_image_surface_t *) image;
        return CAIRO_STATUS_SUCCESS;
    }

    return _cairo_error (CAIRO_STATUS_NO_MEMORY);
}
开发者ID:AZed,项目名称:cairo,代码行数:43,代码来源:cairo-qt-surface.cpp

示例3: _cairo_clip_init_copy

void
_cairo_clip_init_copy (cairo_clip_t *clip, cairo_clip_t *other)
{
    clip->mode = other->mode;

    clip->surface = cairo_surface_reference (other->surface);
    clip->surface_rect = other->surface_rect;

    clip->serial = other->serial;

    if (other->region == NULL) {
	clip->region = other->region;
    } else {
	clip->region = pixman_region_create ();
	pixman_region_copy (clip->region, other->region);
    }

    clip->path = _cairo_clip_path_reference (other->path);
}
开发者ID:jackiekaon,项目名称:owb-mirror,代码行数:19,代码来源:cairo-clip.c

示例4: _cairo_surface_create_for_rectangle_int

cairo_surface_t *
_cairo_surface_create_for_rectangle_int (cairo_surface_t *target,
					 const cairo_rectangle_int_t *extents)
{
    cairo_surface_subsurface_t *surface;

    if (unlikely (target->status))
	return _cairo_surface_create_in_error (target->status);
    if (unlikely (target->finished))
	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_FINISHED));

    assert (target->backend->type != CAIRO_SURFACE_TYPE_SUBSURFACE);

    surface = malloc (sizeof (cairo_surface_subsurface_t));
    if (unlikely (surface == NULL))
	return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));

    _cairo_surface_init (&surface->base,
			 &_cairo_surface_subsurface_backend,
			 NULL, /* device */
			 target->content,
			 target->is_vector);

    surface->extents = *extents;
    surface->extents.x *= target->device_transform.xx;
    surface->extents.y *= target->device_transform.yy;
    surface->extents.width *= target->device_transform.xx;
    surface->extents.height *= target->device_transform.yy;
    surface->extents.x += target->device_transform.x0;
    surface->extents.y += target->device_transform.y0;

    surface->target = cairo_surface_reference (target);
    surface->base.type = surface->target->type;

    surface->snapshot = NULL;

    cairo_surface_set_device_scale (&surface->base,
                                    target->device_transform.xx,
                                    target->device_transform.yy);

    return &surface->base;
}
开发者ID:zwcloud,项目名称:CairoSharp,代码行数:42,代码来源:cairo-surface-subsurface.c

示例5: _cairo_default_context_pop_group

static cairo_pattern_t *
_cairo_default_context_pop_group (void *abstract_cr)
{
    cairo_default_context_t *cr = abstract_cr;
    cairo_surface_t *group_surface;
    cairo_pattern_t *group_pattern;
    cairo_surface_t *parent_surface;
    cairo_matrix_t group_matrix;
    cairo_status_t status;

    /* Verify that we are at the right nesting level */
    if (unlikely (! _cairo_gstate_is_group (cr->gstate)))
	return _cairo_pattern_create_in_error (CAIRO_STATUS_INVALID_POP_GROUP);

    /* Get a reference to the active surface before restoring */
    group_surface = _cairo_gstate_get_target (cr->gstate);
    group_surface = cairo_surface_reference (group_surface);

    status = _cairo_gstate_restore (&cr->gstate, &cr->gstate_freelist);
    assert (status == CAIRO_STATUS_SUCCESS);

    parent_surface = _cairo_gstate_get_target (cr->gstate);

    group_pattern = cairo_pattern_create_for_surface (group_surface);
    status = group_pattern->status;
    if (unlikely (status))
        goto done;

    _cairo_gstate_get_matrix (cr->gstate, &group_matrix);
    cairo_pattern_set_matrix (group_pattern, &group_matrix);

    /* If we have a current path, we need to adjust it to compensate for
     * the device offset just removed. */
    _cairo_path_fixed_translate (cr->path,
				 _cairo_fixed_from_int (parent_surface->device_transform.x0 - group_surface->device_transform.x0),
				 _cairo_fixed_from_int (parent_surface->device_transform.y0 - group_surface->device_transform.y0));

done:
    cairo_surface_destroy (group_surface);

    return group_pattern;
}
开发者ID:MiKTeX,项目名称:miktex,代码行数:42,代码来源:cairo-default-context.c

示例6: set_surface

static void
set_surface(HippoCanvasImage *image,
            cairo_surface_t  *surface)
{
    if (surface != image->surface) {
        int old_width, old_height;
        gboolean request_changed = FALSE;
        
#if 0
        /* The FC5 version of Cairo doesn't have this API */
        if (cairo_surface_get_type(surface) != CAIRO_SURFACE_TYPE_IMAGE) {
            g_warning("Image canvas item only supports image surfaces");
            return;
        }
#endif
        old_width = image->surface ? cairo_image_surface_get_width(image->surface) : 0;
        old_height = image->surface ? cairo_image_surface_get_height(image->surface) : 0;
        
        if (surface)
            cairo_surface_reference(surface);
        if (image->surface)
            cairo_surface_destroy(image->surface);
        image->surface = surface;

        if (image->scale_width < 0) {
            int width = image->surface ? cairo_image_surface_get_width(image->surface) : 0;
            if (width != old_width)
                request_changed = TRUE;
        }
        if (image->scale_height < 0) {
            int height = image->surface ? cairo_image_surface_get_height(image->surface) : 0;
            if (height != old_height)
                request_changed = TRUE;
        }

        if (request_changed)
            hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(image));
        hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(image), 0, 0, -1, -1);

        g_object_notify(G_OBJECT(image), "image");
    }
}
开发者ID:nihed,项目名称:magnetism,代码行数:42,代码来源:hippo-canvas-image.c

示例7: generate_reference

static void
generate_reference (double ppi_x, double ppi_y, const char *filename)
{
    cairo_surface_t *surface, *target;
    cairo_t *cr;
    cairo_status_t status;

    surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
	                                  SIZE*ppi_x/72, SIZE*ppi_y/72);
    cr = cairo_create (surface);
    cairo_surface_destroy (surface);

#if SET_TOLERANCE
    cairo_set_tolerance (cr, 3.0);
#endif

    cairo_save (cr); {
	cairo_set_source_rgb (cr, 1, 1, 1);
	cairo_paint (cr);
    } cairo_restore (cr);

    cairo_scale (cr, ppi_x/72., ppi_y/72.);
    draw (cr, SIZE, SIZE);

    surface = cairo_surface_reference (cairo_get_target (cr));
    cairo_destroy (cr);

    target = cairo_image_surface_create (CAIRO_FORMAT_RGB24, SIZE, SIZE);
    cr = cairo_create (target);
    cairo_scale (cr, 72./ppi_x, 72./ppi_y);
    cairo_set_source_surface (cr, surface, 0, 0);
    cairo_paint (cr);

    status = cairo_surface_write_to_png (cairo_get_target (cr), filename);
    cairo_destroy (cr);

    if (status) {
	fprintf (stderr, "Failed to generate reference image '%s': %s\n",
		 filename, cairo_status_to_string (status));
	exit (1);
    }
}
开发者ID:jaglass,项目名称:WinCairoRequirements,代码行数:42,代码来源:fallback-resolution.c

示例8: surface_create

/* For each of circle and fallback_circle we draw:
 *  - two overlapping
 *  - one isolated
 *  - one off the page
 *  - one overlapping the edge of the page.
 *
 * We also draw a circle and fallback_circle overlapping each other.
 *
 * Circles are drawn in green. An opaque color and CAIRO_OPERATOR_OVER
 * is used to ensure they will be emitted as a vectors in PS/PDF.
 *
 * Fallback circles are drawn in red. CAIRO_OPERATOR_ADD is used to
 * ensure they will be emitted as a fallback image in PS/PDF.
 *
 * In order to trigger a fallback for SVG, we need to use a surface with
 * REFLECT.
 */
static cairo_surface_t *
surface_create (cairo_t *target)
{
    cairo_surface_t *surface;
    cairo_t *cr;

    surface = cairo_surface_create_similar (cairo_get_target (target),
                                            CAIRO_CONTENT_COLOR_ALPHA,
                                            CIRCLE_SIZE, CIRCLE_SIZE);
    cr = cairo_create (surface);
    cairo_surface_destroy (surface);

    cairo_set_source_rgb (cr, 1.0, 0.0, 0.0);
    draw_circle (cr, CIRCLE_SIZE/2, CIRCLE_SIZE/2);

    surface = cairo_surface_reference (cairo_get_target (cr));
    cairo_destroy (cr);

    return surface;
}
开发者ID:kangaroo,项目名称:moon,代码行数:37,代码来源:finer-grained-fallbacks.c

示例9: XOJ_CHECK_TYPE

Element* Image::clone()
{
	XOJ_CHECK_TYPE(Image);

	Image* img = new Image();

	img->x = this->x;
	img->y = this->y;
	img->setColor(this->getColor());
	img->width = this->width;
	img->height = this->height;

	img->data = (unsigned char*)g_malloc(this->dLen);
	img->dLen = this->dLen;
	memcpy(img->data, this->data, this->dLen);

	img->image = cairo_surface_reference(this->image);

	return img;
}
开发者ID:cass00,项目名称:xournalpp,代码行数:20,代码来源:Image.cpp

示例10: gjs_cairo_surface_construct

/**
 * gjs_cairo_surface_construct:
 * @context: the context
 * @object: object to construct
 * @surface: cairo_surface to attach to the object
 *
 * Constructs a surface wrapper giving an empty JSObject and a
 * cairo surface. A reference to @surface will be taken.
 *
 * This is mainly used for subclasses where object is already created.
 */
void
gjs_cairo_surface_construct(JSContext       *context,
                            JSObject        *object,
                            cairo_surface_t *surface)
{
    GjsCairoSurface *priv;

    g_return_if_fail(context != NULL);
    g_return_if_fail(object != NULL);
    g_return_if_fail(surface != NULL);

    priv = g_slice_new0(GjsCairoSurface);

    g_assert(priv_from_js(context, object) == NULL);
    JS_SetPrivate(context, object, priv);

    priv->context = context;
    priv->object = object;
    priv->surface = cairo_surface_reference(surface);
}
开发者ID:BabeNovelty,项目名称:glib-win32,代码行数:31,代码来源:cairo-surface-vs10.c

示例11: display_get_pointer_surface

cairo_surface_t *
display_get_pointer_surface(struct display *display, int pointer,
			    int *width, int *height,
			    int *hotspot_x, int *hotspot_y)
{
	cairo_surface_t *surface;

	surface = display->pointer_surfaces[pointer];
#if HAVE_CAIRO_EGL
	*width = cairo_gl_surface_get_width(surface);
	*height = cairo_gl_surface_get_height(surface);
#else
	*width = cairo_image_surface_get_width(surface);
	*height = cairo_image_surface_get_height(surface);
#endif
	*hotspot_x = pointer_images[pointer].hotspot_x;
	*hotspot_y = pointer_images[pointer].hotspot_y;

	return cairo_surface_reference(surface);
}
开发者ID:CLowcay,项目名称:wayland-terminal,代码行数:20,代码来源:window.c

示例12: scale_data_new

static ScaleData *
scale_data_new (cairo_surface_t	 *image,
		int		  new_width,
		int		  new_height,
		scale_filter_t    quality,
		GCancellable     *cancellable)
{
	ScaleData *scale_data;

	scale_data = g_new0 (ScaleData, 1);
	scale_data->original = cairo_surface_reference (image);
	scale_data->new_width = new_width;
	scale_data->new_height = new_height;
	scale_data->quality = quality;
	scale_data->scaled = NULL;
	scale_data->task = gth_async_task_new (NULL, NULL, NULL, NULL, NULL);
	gth_task_set_cancellable (scale_data->task, cancellable);

	return scale_data;
}
开发者ID:cristiklein,项目名称:gthumb,代码行数:20,代码来源:cairo-scale.c

示例13: clone_similar_surface

static cairo_surface_t *
clone_similar_surface (cairo_surface_t * target, cairo_surface_t *surface)
{
    cairo_t *cr;
    cairo_surface_t *similar;

    similar = cairo_surface_create_similar (target,
	                              cairo_surface_get_content (surface),
				      cairo_image_surface_get_width (surface),
				      cairo_image_surface_get_height (surface));
    cr = cairo_create (similar);
    cairo_surface_destroy (similar);
    cairo_set_source_surface (cr, surface, 0, 0);
    cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
    cairo_paint (cr);
    similar = cairo_surface_reference (cairo_get_target (cr));
    cairo_destroy (cr);

    return similar;
}
开发者ID:3oyka,项目名称:cairo2,代码行数:20,代码来源:extend-repeat-similar.c

示例14: pixbuf_to_cairo_surface

static cairo_surface_t *
pixbuf_to_cairo_surface (GdkPixbuf *pixbuf)
{
  cairo_surface_t *dummy_surface;
  cairo_pattern_t *pattern;
  cairo_surface_t *surface;
  cairo_t *cr;

  dummy_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1);

  cr = cairo_create (dummy_surface);
  gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
  pattern = cairo_get_source (cr);
  cairo_pattern_get_surface (pattern, &surface);
  cairo_surface_reference (surface);
  cairo_destroy (cr);
  cairo_surface_destroy (dummy_surface);

  return surface;
}
开发者ID:kenvandine,项目名称:gnome-shell,代码行数:20,代码来源:st-texture-cache.c

示例15: radeon_surface_acquire_source_image

static cairo_status_t
radeon_surface_acquire_source_image (void *abstract_surface,
				     cairo_image_surface_t **image_out,
				     void **image_extra)
{
    radeon_surface_t *surface = abstract_surface;
    cairo_surface_t *image;
    cairo_status_t status;

    /* XXX batch flush */

    if (surface->base.fallback != NULL) {
	image = surface->base.fallback;
	goto DONE;
    }

    image = _cairo_surface_has_snapshot (&surface->base.base,
	                                 &_cairo_image_surface_backend);
    if (image != NULL)
	goto DONE;

    if (surface->base.base.backend->flush != NULL) {
	status = surface->base.base.backend->flush (surface);
	if (unlikely (status))
	    return status;
    }

    image = radeon_bo_get_image (to_radeon_device (surface->base.base.device),
				to_radeon_bo (surface->base.bo),
				&surface->base);
    status = image->status;
    if (unlikely (status))
	return status;

    _cairo_surface_attach_snapshot (&surface->base.base, image, cairo_surface_destroy);

DONE:
    *image_out = (cairo_image_surface_t *) cairo_surface_reference (image);
    *image_extra = NULL;
    return CAIRO_STATUS_SUCCESS;
}
开发者ID:1833183060,项目名称:wke,代码行数:41,代码来源:cairo-drm-radeon-surface.c


注:本文中的cairo_surface_reference函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。