mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-02 18:58:14 +02:00
Directly fold in slim stuff rather than depending on it from an external package.
Switch from libic to libpixman. Include pixman.h not ic.h. (__external_linkage): Directly fold in slim stuff rather than depending on it from an external package. Look for libpixman instead of libic and slim.
This commit is contained in:
parent
18ae004832
commit
5b38b14ff2
10 changed files with 177 additions and 134 deletions
16
ChangeLog
16
ChangeLog
|
|
@ -1,3 +1,19 @@
|
|||
2003-12-11 Carl Worth <cworth@isi.edu>
|
||||
|
||||
* src/cairoint.h (slim_hidden_proto1): Directly fold in slim stuff
|
||||
rather than depending on it from an external package.
|
||||
|
||||
* src/cairo_ps_surface.c (_cairo_ps_surface_copy_page):
|
||||
* src/cairo_image_surface.c: Switch from libic to libpixman.
|
||||
|
||||
* src/cairo.h: Include pixman.h not ic.h.
|
||||
(__external_linkage): Directly fold in slim stuff rather than
|
||||
depending on it from an external package.
|
||||
|
||||
* configure.in (PKG_CHECK_MODULES):
|
||||
* cairo.pc.in (Requires): Look for libpixman instead of libic and
|
||||
slim.
|
||||
|
||||
2003-12-11 Andrew Chant <andrew.chant@utoronto.ca>
|
||||
|
||||
* cairo_select_font:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ Name: cairo
|
|||
Description: Multi-platform 2D graphics library
|
||||
Version: @VERSION@
|
||||
|
||||
Requires: fontconfig libic slim @XRENDER_REQUIRES@
|
||||
Requires: fontconfig libpixman @XRENDER_REQUIRES@
|
||||
Libs: -L${libdir} -lcairo -lm -lz @FREETYPE_LIBS@
|
||||
Cflags: -I${includedir} @FREETYPE_CFLAGS@
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ AM_CONDITIONAL(CAIRO_HAS_XLIB_SURFACE, test x$have_x = xyes)
|
|||
dnl ===========================================================================
|
||||
|
||||
PKG_CHECK_MODULES(FONTCONFIG, fontconfig)
|
||||
PKG_CHECK_MODULES(CAIRO, slim >= 0.2.0 libic >= 0.1.3)
|
||||
PKG_CHECK_MODULES(CAIRO, libpixman >= 0.1.0)
|
||||
|
||||
# Test for freetype2 separate from pkg-config since at least up to
|
||||
# 2003-06-07, there was no freetype2.pc in the release.
|
||||
|
|
|
|||
|
|
@ -34,6 +34,6 @@ libcairo_la_SOURCES = \
|
|||
|
||||
libcairo_la_LDFLAGS = -version-info @VERSION_INFO@
|
||||
|
||||
INCLUDES = $(CAIRO_CFLAGS) $(FONTCONFIG_CFLAGS) $(XRENDER_CFLAGS) $(X_CFLAGS)
|
||||
INCLUDES = -I$(srcdir) $(CAIRO_CFLAGS) $(FONTCONFIG_CFLAGS) $(XRENDER_CFLAGS) $(X_CFLAGS)
|
||||
|
||||
libcairo_la_LIBADD = $(CAIRO_LIBS) $(FONTCONFIG_LIBS) $(XRENDER_LIBS) $(X_LIBS) -lm
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ _cairo_format_bpp (cairo_format_t format)
|
|||
}
|
||||
|
||||
static cairo_image_surface_t *
|
||||
_cairo_image_surface_create_for_ic_image (IcImage *ic_image)
|
||||
_cairo_image_surface_create_for_ic_image (pixman_image_t *ic_image)
|
||||
{
|
||||
cairo_image_surface_t *surface;
|
||||
|
||||
|
|
@ -57,13 +57,13 @@ _cairo_image_surface_create_for_ic_image (IcImage *ic_image)
|
|||
|
||||
surface->ic_image = ic_image;
|
||||
|
||||
surface->data = (char *) IcImageGetData (ic_image);
|
||||
surface->data = (char *) pixman_image_get_data (ic_image);
|
||||
surface->owns_data = 0;
|
||||
|
||||
surface->width = IcImageGetWidth (ic_image);
|
||||
surface->height = IcImageGetHeight (ic_image);
|
||||
surface->stride = IcImageGetStride (ic_image);
|
||||
surface->depth = IcImageGetDepth (ic_image);
|
||||
surface->width = pixman_image_get_width (ic_image);
|
||||
surface->height = pixman_image_get_height (ic_image);
|
||||
surface->stride = pixman_image_get_stride (ic_image);
|
||||
surface->depth = pixman_image_get_depth (ic_image);
|
||||
|
||||
return surface;
|
||||
}
|
||||
|
|
@ -76,10 +76,10 @@ _cairo_image_surface_create_with_masks (char *data,
|
|||
int stride)
|
||||
{
|
||||
cairo_image_surface_t *surface;
|
||||
IcFormat *ic_format;
|
||||
IcImage *ic_image;
|
||||
pixman_format_t *ic_format;
|
||||
pixman_image_t *ic_image;
|
||||
|
||||
ic_format = IcFormatCreateMasks (format->bpp,
|
||||
ic_format = pixman_format_create_masks (format->bpp,
|
||||
format->alpha_mask,
|
||||
format->red_mask,
|
||||
format->green_mask,
|
||||
|
|
@ -88,10 +88,10 @@ _cairo_image_surface_create_with_masks (char *data,
|
|||
if (ic_format == NULL)
|
||||
return NULL;
|
||||
|
||||
ic_image = IcImageCreateForData ((IcBits *) data, ic_format,
|
||||
ic_image = pixman_image_create_for_data ((pixman_bits_t *) data, ic_format,
|
||||
width, height, format->bpp, stride);
|
||||
|
||||
IcFormatDestroy (ic_format);
|
||||
pixman_format_destroy (ic_format);
|
||||
|
||||
if (ic_image == NULL)
|
||||
return NULL;
|
||||
|
|
@ -101,22 +101,22 @@ _cairo_image_surface_create_with_masks (char *data,
|
|||
return surface;
|
||||
}
|
||||
|
||||
static IcFormat *
|
||||
static pixman_format_t *
|
||||
_create_ic_format (cairo_format_t format)
|
||||
{
|
||||
switch (format) {
|
||||
case CAIRO_FORMAT_A1:
|
||||
return IcFormatCreate (IcFormatNameA1);
|
||||
return pixman_format_create (PIXMAN_FORMAT_NAME_A1);
|
||||
break;
|
||||
case CAIRO_FORMAT_A8:
|
||||
return IcFormatCreate (IcFormatNameA8);
|
||||
return pixman_format_create (PIXMAN_FORMAT_NAME_A8);
|
||||
break;
|
||||
case CAIRO_FORMAT_RGB24:
|
||||
return IcFormatCreate (IcFormatNameRGB24);
|
||||
return pixman_format_create (PIXMAN_FORMAT_NAME_RG_B24);
|
||||
break;
|
||||
case CAIRO_FORMAT_ARGB32:
|
||||
default:
|
||||
return IcFormatCreate (IcFormatNameARGB32);
|
||||
return pixman_format_create (PIXMAN_FORMAT_NAME_AR_GB32);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -127,16 +127,16 @@ cairo_image_surface_create (cairo_format_t format,
|
|||
int height)
|
||||
{
|
||||
cairo_image_surface_t *surface;
|
||||
IcFormat *ic_format;
|
||||
IcImage *ic_image;
|
||||
pixman_format_t *ic_format;
|
||||
pixman_image_t *ic_image;
|
||||
|
||||
ic_format = _create_ic_format (format);
|
||||
if (ic_format == NULL)
|
||||
return NULL;
|
||||
|
||||
ic_image = IcImageCreate (ic_format, width, height);
|
||||
ic_image = pixman_image_create (ic_format, width, height);
|
||||
|
||||
IcFormatDestroy (ic_format);
|
||||
pixman_format_destroy (ic_format);
|
||||
|
||||
if (ic_image == NULL)
|
||||
return NULL;
|
||||
|
|
@ -154,19 +154,19 @@ cairo_image_surface_create_for_data (char *data,
|
|||
int stride)
|
||||
{
|
||||
cairo_image_surface_t *surface;
|
||||
IcFormat *ic_format;
|
||||
IcImage *ic_image;
|
||||
pixman_format_t *ic_format;
|
||||
pixman_image_t *ic_image;
|
||||
|
||||
ic_format = _create_ic_format (format);
|
||||
if (ic_format == NULL)
|
||||
return NULL;
|
||||
|
||||
ic_image = IcImageCreateForData ((IcBits *) data, ic_format,
|
||||
ic_image = pixman_image_create_for_data ((pixman_bits_t *) data, ic_format,
|
||||
width, height,
|
||||
_cairo_format_bpp (format),
|
||||
stride);
|
||||
|
||||
IcFormatDestroy (ic_format);
|
||||
pixman_format_destroy (ic_format);
|
||||
|
||||
if (ic_image == NULL)
|
||||
return NULL;
|
||||
|
|
@ -191,7 +191,7 @@ _cairo_image_abstract_surface_destroy (void *abstract_surface)
|
|||
cairo_image_surface_t *surface = abstract_surface;
|
||||
|
||||
if (surface->ic_image)
|
||||
IcImageDestroy (surface->ic_image);
|
||||
pixman_image_destroy (surface->ic_image);
|
||||
|
||||
if (surface->owns_data) {
|
||||
free (surface->data);
|
||||
|
|
@ -247,7 +247,7 @@ cairo_status_t
|
|||
_cairo_image_surface_set_matrix (cairo_image_surface_t *surface,
|
||||
cairo_matrix_t *matrix)
|
||||
{
|
||||
IcTransform ic_transform;
|
||||
pixman_transform_t ic_transform;
|
||||
|
||||
ic_transform.matrix[0][0] = _cairo_fixed_from_double (matrix->m[0][0]);
|
||||
ic_transform.matrix[0][1] = _cairo_fixed_from_double (matrix->m[1][0]);
|
||||
|
|
@ -261,7 +261,7 @@ _cairo_image_surface_set_matrix (cairo_image_surface_t *surface,
|
|||
ic_transform.matrix[2][1] = 0;
|
||||
ic_transform.matrix[2][2] = _cairo_fixed_from_double (1);
|
||||
|
||||
IcImageSetTransform (surface->ic_image, &ic_transform);
|
||||
pixman_image_set_transform (surface->ic_image, &ic_transform);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -277,29 +277,29 @@ _cairo_image_abstract_surface_set_filter (void *abstract_surface, cairo_filter_t
|
|||
cairo_status_t
|
||||
_cairo_image_surface_set_filter (cairo_image_surface_t *surface, cairo_filter_t filter)
|
||||
{
|
||||
IcFilter ic_filter;
|
||||
pixman_filter_t ic_filter;
|
||||
|
||||
switch (filter) {
|
||||
case CAIRO_FILTER_FAST:
|
||||
ic_filter = IcFilterFast;
|
||||
ic_filter = PIXMAN_FILTER_FAST;
|
||||
break;
|
||||
case CAIRO_FILTER_GOOD:
|
||||
ic_filter = IcFilterGood;
|
||||
ic_filter = PIXMAN_FILTER_GOOD;
|
||||
break;
|
||||
case CAIRO_FILTER_BEST:
|
||||
ic_filter = IcFilterBest;
|
||||
ic_filter = PIXMAN_FILTER_BEST;
|
||||
break;
|
||||
case CAIRO_FILTER_NEAREST:
|
||||
ic_filter = IcFilterNearest;
|
||||
ic_filter = PIXMAN_FILTER_NEAREST;
|
||||
break;
|
||||
case CAIRO_FILTER_BILINEAR:
|
||||
ic_filter = IcFilterBilinear;
|
||||
ic_filter = PIXMAN_FILTER_BILINEAR;
|
||||
break;
|
||||
default:
|
||||
ic_filter = IcFilterBest;
|
||||
ic_filter = PIXMAN_FILTER_BEST;
|
||||
}
|
||||
|
||||
IcImageSetFilter (surface->ic_image, ic_filter);
|
||||
pixman_image_set_filter (surface->ic_image, ic_filter);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -314,45 +314,45 @@ _cairo_image_abstract_surface_set_repeat (void *abstract_surface, int repeat)
|
|||
cairo_status_t
|
||||
_cairo_image_surface_set_repeat (cairo_image_surface_t *surface, int repeat)
|
||||
{
|
||||
IcImageSetRepeat (surface->ic_image, repeat);
|
||||
pixman_image_set_repeat (surface->ic_image, repeat);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static IcOperator
|
||||
static pixman_operator_t
|
||||
_ic_operator (cairo_operator_t operator)
|
||||
{
|
||||
switch (operator) {
|
||||
case CAIRO_OPERATOR_CLEAR:
|
||||
return IcOperatorClear;
|
||||
return PIXMAN_OPERATOR_CLEAR;
|
||||
case CAIRO_OPERATOR_SRC:
|
||||
return IcOperatorSrc;
|
||||
return PIXMAN_OPERATOR_SRC;
|
||||
case CAIRO_OPERATOR_DST:
|
||||
return IcOperatorDst;
|
||||
return PIXMAN_OPERATOR_DST;
|
||||
case CAIRO_OPERATOR_OVER:
|
||||
return IcOperatorOver;
|
||||
return PIXMAN_OPERATOR_OVER;
|
||||
case CAIRO_OPERATOR_OVER_REVERSE:
|
||||
return IcOperatorOverReverse;
|
||||
return PIXMAN_OPERATOR_OVER_REVERSE;
|
||||
case CAIRO_OPERATOR_IN:
|
||||
return IcOperatorIn;
|
||||
return PIXMAN_OPERATOR_IN;
|
||||
case CAIRO_OPERATOR_IN_REVERSE:
|
||||
return IcOperatorInReverse;
|
||||
return PIXMAN_OPERATOR_IN_REVERSE;
|
||||
case CAIRO_OPERATOR_OUT:
|
||||
return IcOperatorOut;
|
||||
return PIXMAN_OPERATOR_OUT;
|
||||
case CAIRO_OPERATOR_OUT_REVERSE:
|
||||
return IcOperatorOutReverse;
|
||||
return PIXMAN_OPERATOR_OUT_REVERSE;
|
||||
case CAIRO_OPERATOR_ATOP:
|
||||
return IcOperatorAtop;
|
||||
return PIXMAN_OPERATOR_ATOP;
|
||||
case CAIRO_OPERATOR_ATOP_REVERSE:
|
||||
return IcOperatorAtopReverse;
|
||||
return PIXMAN_OPERATOR_ATOP_REVERSE;
|
||||
case CAIRO_OPERATOR_XOR:
|
||||
return IcOperatorXor;
|
||||
return PIXMAN_OPERATOR_XOR;
|
||||
case CAIRO_OPERATOR_ADD:
|
||||
return IcOperatorAdd;
|
||||
return PIXMAN_OPERATOR_ADD;
|
||||
case CAIRO_OPERATOR_SATURATE:
|
||||
return IcOperatorSaturate;
|
||||
return PIXMAN_OPERATOR_SATURATE;
|
||||
default:
|
||||
return IcOperatorOver;
|
||||
return PIXMAN_OPERATOR_OVER;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -380,7 +380,7 @@ _cairo_image_surface_composite (cairo_operator_t operator,
|
|||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
||||
IcComposite (_ic_operator (operator),
|
||||
pixman_composite (_ic_operator (operator),
|
||||
src->ic_image,
|
||||
mask ? mask->ic_image : NULL,
|
||||
dst->ic_image,
|
||||
|
|
@ -401,16 +401,16 @@ _cairo_image_surface_fill_rectangles (void *abstract_surface,
|
|||
{
|
||||
cairo_image_surface_t *surface = abstract_surface;
|
||||
|
||||
IcColor ic_color;
|
||||
pixman_color_t ic_color;
|
||||
|
||||
ic_color.red = color->red_short;
|
||||
ic_color.green = color->green_short;
|
||||
ic_color.blue = color->blue_short;
|
||||
ic_color.alpha = color->alpha_short;
|
||||
|
||||
/* XXX: The IcRectangle cast is evil... it needs to go away somehow. */
|
||||
IcFillRectangles (_ic_operator(operator), surface->ic_image,
|
||||
&ic_color, (IcRectangle *) rects, num_rects);
|
||||
/* XXX: The pixman_rectangle_t cast is evil... it needs to go away somehow. */
|
||||
pixman_fill_rectangles (_ic_operator(operator), surface->ic_image,
|
||||
&ic_color, (pixman_rectangle_t *) rects, num_rects);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -430,9 +430,9 @@ _cairo_image_surface_composite_trapezoids (cairo_operator_t operator,
|
|||
if (generic_src->backend != dst->base.backend)
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
|
||||
/* XXX: The IcTrapezoid cast is evil and needs to go away somehow. */
|
||||
IcCompositeTrapezoids (operator, src->ic_image, dst->ic_image,
|
||||
x_src, y_src, (IcTrapezoid *) traps, num_traps);
|
||||
/* XXX: The pixman_trapezoid_t cast is evil and needs to go away somehow. */
|
||||
pixman_composite_trapezoids (operator, src->ic_image, dst->ic_image,
|
||||
x_src, y_src, (pixman_trapezoid_t *) traps, num_traps);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ _cairo_ps_surface_copy_page (void *abstract_surface)
|
|||
|
||||
i = 0;
|
||||
for (y = 0; y < height; y++) {
|
||||
IcBits *pixel = (IcBits *) (surface->image->data + y * surface->image->stride);
|
||||
pixman_bits_t *pixel = (pixman_bits_t *) (surface->image->data + y * surface->image->stride);
|
||||
for (x = 0; x < width; x++, pixel++) {
|
||||
rgb[i++] = (*pixel & 0x00ff0000) >> 16;
|
||||
rgb[i++] = (*pixel & 0x0000ff00) >> 8;
|
||||
|
|
|
|||
15
src/cairo.h
15
src/cairo.h
|
|
@ -30,15 +30,9 @@
|
|||
|
||||
#include <cairo-features.h>
|
||||
|
||||
#include <ic.h>
|
||||
#include <pixman.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef _CAIROINT_H_
|
||||
#include <slim_export.h>
|
||||
#else
|
||||
#include <slim_import.h>
|
||||
#endif
|
||||
|
||||
typedef struct cairo cairo_t;
|
||||
typedef struct cairo_surface cairo_surface_t;
|
||||
typedef struct cairo_matrix cairo_matrix_t;
|
||||
|
|
@ -47,6 +41,13 @@ typedef struct cairo_matrix cairo_matrix_t;
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* slim_export.h */
|
||||
#if defined(WIN32) || defined(__CYGWIN__)
|
||||
#define __external_linkage __declspec(dllexport)
|
||||
#else
|
||||
#define __external_linkage
|
||||
#endif
|
||||
|
||||
/* Functions for manipulating state objects */
|
||||
extern cairo_t * __external_linkage
|
||||
cairo_create (void);
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ _cairo_format_bpp (cairo_format_t format)
|
|||
}
|
||||
|
||||
static cairo_image_surface_t *
|
||||
_cairo_image_surface_create_for_ic_image (IcImage *ic_image)
|
||||
_cairo_image_surface_create_for_ic_image (pixman_image_t *ic_image)
|
||||
{
|
||||
cairo_image_surface_t *surface;
|
||||
|
||||
|
|
@ -57,13 +57,13 @@ _cairo_image_surface_create_for_ic_image (IcImage *ic_image)
|
|||
|
||||
surface->ic_image = ic_image;
|
||||
|
||||
surface->data = (char *) IcImageGetData (ic_image);
|
||||
surface->data = (char *) pixman_image_get_data (ic_image);
|
||||
surface->owns_data = 0;
|
||||
|
||||
surface->width = IcImageGetWidth (ic_image);
|
||||
surface->height = IcImageGetHeight (ic_image);
|
||||
surface->stride = IcImageGetStride (ic_image);
|
||||
surface->depth = IcImageGetDepth (ic_image);
|
||||
surface->width = pixman_image_get_width (ic_image);
|
||||
surface->height = pixman_image_get_height (ic_image);
|
||||
surface->stride = pixman_image_get_stride (ic_image);
|
||||
surface->depth = pixman_image_get_depth (ic_image);
|
||||
|
||||
return surface;
|
||||
}
|
||||
|
|
@ -76,10 +76,10 @@ _cairo_image_surface_create_with_masks (char *data,
|
|||
int stride)
|
||||
{
|
||||
cairo_image_surface_t *surface;
|
||||
IcFormat *ic_format;
|
||||
IcImage *ic_image;
|
||||
pixman_format_t *ic_format;
|
||||
pixman_image_t *ic_image;
|
||||
|
||||
ic_format = IcFormatCreateMasks (format->bpp,
|
||||
ic_format = pixman_format_create_masks (format->bpp,
|
||||
format->alpha_mask,
|
||||
format->red_mask,
|
||||
format->green_mask,
|
||||
|
|
@ -88,10 +88,10 @@ _cairo_image_surface_create_with_masks (char *data,
|
|||
if (ic_format == NULL)
|
||||
return NULL;
|
||||
|
||||
ic_image = IcImageCreateForData ((IcBits *) data, ic_format,
|
||||
ic_image = pixman_image_create_for_data ((pixman_bits_t *) data, ic_format,
|
||||
width, height, format->bpp, stride);
|
||||
|
||||
IcFormatDestroy (ic_format);
|
||||
pixman_format_destroy (ic_format);
|
||||
|
||||
if (ic_image == NULL)
|
||||
return NULL;
|
||||
|
|
@ -101,22 +101,22 @@ _cairo_image_surface_create_with_masks (char *data,
|
|||
return surface;
|
||||
}
|
||||
|
||||
static IcFormat *
|
||||
static pixman_format_t *
|
||||
_create_ic_format (cairo_format_t format)
|
||||
{
|
||||
switch (format) {
|
||||
case CAIRO_FORMAT_A1:
|
||||
return IcFormatCreate (IcFormatNameA1);
|
||||
return pixman_format_create (PIXMAN_FORMAT_NAME_A1);
|
||||
break;
|
||||
case CAIRO_FORMAT_A8:
|
||||
return IcFormatCreate (IcFormatNameA8);
|
||||
return pixman_format_create (PIXMAN_FORMAT_NAME_A8);
|
||||
break;
|
||||
case CAIRO_FORMAT_RGB24:
|
||||
return IcFormatCreate (IcFormatNameRGB24);
|
||||
return pixman_format_create (PIXMAN_FORMAT_NAME_RG_B24);
|
||||
break;
|
||||
case CAIRO_FORMAT_ARGB32:
|
||||
default:
|
||||
return IcFormatCreate (IcFormatNameARGB32);
|
||||
return pixman_format_create (PIXMAN_FORMAT_NAME_AR_GB32);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -127,16 +127,16 @@ cairo_image_surface_create (cairo_format_t format,
|
|||
int height)
|
||||
{
|
||||
cairo_image_surface_t *surface;
|
||||
IcFormat *ic_format;
|
||||
IcImage *ic_image;
|
||||
pixman_format_t *ic_format;
|
||||
pixman_image_t *ic_image;
|
||||
|
||||
ic_format = _create_ic_format (format);
|
||||
if (ic_format == NULL)
|
||||
return NULL;
|
||||
|
||||
ic_image = IcImageCreate (ic_format, width, height);
|
||||
ic_image = pixman_image_create (ic_format, width, height);
|
||||
|
||||
IcFormatDestroy (ic_format);
|
||||
pixman_format_destroy (ic_format);
|
||||
|
||||
if (ic_image == NULL)
|
||||
return NULL;
|
||||
|
|
@ -154,19 +154,19 @@ cairo_image_surface_create_for_data (char *data,
|
|||
int stride)
|
||||
{
|
||||
cairo_image_surface_t *surface;
|
||||
IcFormat *ic_format;
|
||||
IcImage *ic_image;
|
||||
pixman_format_t *ic_format;
|
||||
pixman_image_t *ic_image;
|
||||
|
||||
ic_format = _create_ic_format (format);
|
||||
if (ic_format == NULL)
|
||||
return NULL;
|
||||
|
||||
ic_image = IcImageCreateForData ((IcBits *) data, ic_format,
|
||||
ic_image = pixman_image_create_for_data ((pixman_bits_t *) data, ic_format,
|
||||
width, height,
|
||||
_cairo_format_bpp (format),
|
||||
stride);
|
||||
|
||||
IcFormatDestroy (ic_format);
|
||||
pixman_format_destroy (ic_format);
|
||||
|
||||
if (ic_image == NULL)
|
||||
return NULL;
|
||||
|
|
@ -191,7 +191,7 @@ _cairo_image_abstract_surface_destroy (void *abstract_surface)
|
|||
cairo_image_surface_t *surface = abstract_surface;
|
||||
|
||||
if (surface->ic_image)
|
||||
IcImageDestroy (surface->ic_image);
|
||||
pixman_image_destroy (surface->ic_image);
|
||||
|
||||
if (surface->owns_data) {
|
||||
free (surface->data);
|
||||
|
|
@ -247,7 +247,7 @@ cairo_status_t
|
|||
_cairo_image_surface_set_matrix (cairo_image_surface_t *surface,
|
||||
cairo_matrix_t *matrix)
|
||||
{
|
||||
IcTransform ic_transform;
|
||||
pixman_transform_t ic_transform;
|
||||
|
||||
ic_transform.matrix[0][0] = _cairo_fixed_from_double (matrix->m[0][0]);
|
||||
ic_transform.matrix[0][1] = _cairo_fixed_from_double (matrix->m[1][0]);
|
||||
|
|
@ -261,7 +261,7 @@ _cairo_image_surface_set_matrix (cairo_image_surface_t *surface,
|
|||
ic_transform.matrix[2][1] = 0;
|
||||
ic_transform.matrix[2][2] = _cairo_fixed_from_double (1);
|
||||
|
||||
IcImageSetTransform (surface->ic_image, &ic_transform);
|
||||
pixman_image_set_transform (surface->ic_image, &ic_transform);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -277,29 +277,29 @@ _cairo_image_abstract_surface_set_filter (void *abstract_surface, cairo_filter_t
|
|||
cairo_status_t
|
||||
_cairo_image_surface_set_filter (cairo_image_surface_t *surface, cairo_filter_t filter)
|
||||
{
|
||||
IcFilter ic_filter;
|
||||
pixman_filter_t ic_filter;
|
||||
|
||||
switch (filter) {
|
||||
case CAIRO_FILTER_FAST:
|
||||
ic_filter = IcFilterFast;
|
||||
ic_filter = PIXMAN_FILTER_FAST;
|
||||
break;
|
||||
case CAIRO_FILTER_GOOD:
|
||||
ic_filter = IcFilterGood;
|
||||
ic_filter = PIXMAN_FILTER_GOOD;
|
||||
break;
|
||||
case CAIRO_FILTER_BEST:
|
||||
ic_filter = IcFilterBest;
|
||||
ic_filter = PIXMAN_FILTER_BEST;
|
||||
break;
|
||||
case CAIRO_FILTER_NEAREST:
|
||||
ic_filter = IcFilterNearest;
|
||||
ic_filter = PIXMAN_FILTER_NEAREST;
|
||||
break;
|
||||
case CAIRO_FILTER_BILINEAR:
|
||||
ic_filter = IcFilterBilinear;
|
||||
ic_filter = PIXMAN_FILTER_BILINEAR;
|
||||
break;
|
||||
default:
|
||||
ic_filter = IcFilterBest;
|
||||
ic_filter = PIXMAN_FILTER_BEST;
|
||||
}
|
||||
|
||||
IcImageSetFilter (surface->ic_image, ic_filter);
|
||||
pixman_image_set_filter (surface->ic_image, ic_filter);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -314,45 +314,45 @@ _cairo_image_abstract_surface_set_repeat (void *abstract_surface, int repeat)
|
|||
cairo_status_t
|
||||
_cairo_image_surface_set_repeat (cairo_image_surface_t *surface, int repeat)
|
||||
{
|
||||
IcImageSetRepeat (surface->ic_image, repeat);
|
||||
pixman_image_set_repeat (surface->ic_image, repeat);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static IcOperator
|
||||
static pixman_operator_t
|
||||
_ic_operator (cairo_operator_t operator)
|
||||
{
|
||||
switch (operator) {
|
||||
case CAIRO_OPERATOR_CLEAR:
|
||||
return IcOperatorClear;
|
||||
return PIXMAN_OPERATOR_CLEAR;
|
||||
case CAIRO_OPERATOR_SRC:
|
||||
return IcOperatorSrc;
|
||||
return PIXMAN_OPERATOR_SRC;
|
||||
case CAIRO_OPERATOR_DST:
|
||||
return IcOperatorDst;
|
||||
return PIXMAN_OPERATOR_DST;
|
||||
case CAIRO_OPERATOR_OVER:
|
||||
return IcOperatorOver;
|
||||
return PIXMAN_OPERATOR_OVER;
|
||||
case CAIRO_OPERATOR_OVER_REVERSE:
|
||||
return IcOperatorOverReverse;
|
||||
return PIXMAN_OPERATOR_OVER_REVERSE;
|
||||
case CAIRO_OPERATOR_IN:
|
||||
return IcOperatorIn;
|
||||
return PIXMAN_OPERATOR_IN;
|
||||
case CAIRO_OPERATOR_IN_REVERSE:
|
||||
return IcOperatorInReverse;
|
||||
return PIXMAN_OPERATOR_IN_REVERSE;
|
||||
case CAIRO_OPERATOR_OUT:
|
||||
return IcOperatorOut;
|
||||
return PIXMAN_OPERATOR_OUT;
|
||||
case CAIRO_OPERATOR_OUT_REVERSE:
|
||||
return IcOperatorOutReverse;
|
||||
return PIXMAN_OPERATOR_OUT_REVERSE;
|
||||
case CAIRO_OPERATOR_ATOP:
|
||||
return IcOperatorAtop;
|
||||
return PIXMAN_OPERATOR_ATOP;
|
||||
case CAIRO_OPERATOR_ATOP_REVERSE:
|
||||
return IcOperatorAtopReverse;
|
||||
return PIXMAN_OPERATOR_ATOP_REVERSE;
|
||||
case CAIRO_OPERATOR_XOR:
|
||||
return IcOperatorXor;
|
||||
return PIXMAN_OPERATOR_XOR;
|
||||
case CAIRO_OPERATOR_ADD:
|
||||
return IcOperatorAdd;
|
||||
return PIXMAN_OPERATOR_ADD;
|
||||
case CAIRO_OPERATOR_SATURATE:
|
||||
return IcOperatorSaturate;
|
||||
return PIXMAN_OPERATOR_SATURATE;
|
||||
default:
|
||||
return IcOperatorOver;
|
||||
return PIXMAN_OPERATOR_OVER;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -380,7 +380,7 @@ _cairo_image_surface_composite (cairo_operator_t operator,
|
|||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
||||
IcComposite (_ic_operator (operator),
|
||||
pixman_composite (_ic_operator (operator),
|
||||
src->ic_image,
|
||||
mask ? mask->ic_image : NULL,
|
||||
dst->ic_image,
|
||||
|
|
@ -401,16 +401,16 @@ _cairo_image_surface_fill_rectangles (void *abstract_surface,
|
|||
{
|
||||
cairo_image_surface_t *surface = abstract_surface;
|
||||
|
||||
IcColor ic_color;
|
||||
pixman_color_t ic_color;
|
||||
|
||||
ic_color.red = color->red_short;
|
||||
ic_color.green = color->green_short;
|
||||
ic_color.blue = color->blue_short;
|
||||
ic_color.alpha = color->alpha_short;
|
||||
|
||||
/* XXX: The IcRectangle cast is evil... it needs to go away somehow. */
|
||||
IcFillRectangles (_ic_operator(operator), surface->ic_image,
|
||||
&ic_color, (IcRectangle *) rects, num_rects);
|
||||
/* XXX: The pixman_rectangle_t cast is evil... it needs to go away somehow. */
|
||||
pixman_fill_rectangles (_ic_operator(operator), surface->ic_image,
|
||||
&ic_color, (pixman_rectangle_t *) rects, num_rects);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -430,9 +430,9 @@ _cairo_image_surface_composite_trapezoids (cairo_operator_t operator,
|
|||
if (generic_src->backend != dst->base.backend)
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
|
||||
/* XXX: The IcTrapezoid cast is evil and needs to go away somehow. */
|
||||
IcCompositeTrapezoids (operator, src->ic_image, dst->ic_image,
|
||||
x_src, y_src, (IcTrapezoid *) traps, num_traps);
|
||||
/* XXX: The pixman_trapezoid_t cast is evil and needs to go away somehow. */
|
||||
pixman_composite_trapezoids (operator, src->ic_image, dst->ic_image,
|
||||
x_src, y_src, (pixman_trapezoid_t *) traps, num_traps);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ _cairo_ps_surface_copy_page (void *abstract_surface)
|
|||
|
||||
i = 0;
|
||||
for (y = 0; y < height; y++) {
|
||||
IcBits *pixel = (IcBits *) (surface->image->data + y * surface->image->stride);
|
||||
pixman_bits_t *pixel = (pixman_bits_t *) (surface->image->data + y * surface->image->stride);
|
||||
for (x = 0; x < width; x++, pixel++) {
|
||||
rgb[i++] = (*pixel & 0x00ff0000) >> 16;
|
||||
rgb[i++] = (*pixel & 0x0000ff00) >> 8;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,33 @@
|
|||
|
||||
#include "cairo.h"
|
||||
|
||||
#include <slim_internal.h>
|
||||
#if __GNUC__ >= 3 && defined(__ELF__)
|
||||
# define slim_hidden_proto(name) slim_hidden_proto1(name, INT_##name)
|
||||
# define slim_hidden_def(name) slim_hidden_def1(name, INT_##name)
|
||||
# define slim_hidden_proto1(name, internal) \
|
||||
extern __typeof (name) name \
|
||||
__asm__ (slim_hidden_asmname (internal)) \
|
||||
__internal_linkage;
|
||||
# define slim_hidden_def1(name, internal) \
|
||||
extern __typeof (name) EXT_##name __asm__(slim_hidden_asmname(name)) \
|
||||
__attribute__((__alias__(slim_hidden_asmname(internal))))
|
||||
# define slim_hidden_ulp slim_hidden_ulp1(__USER_LABEL_PREFIX__)
|
||||
# define slim_hidden_ulp1(x) slim_hidden_ulp2(x)
|
||||
# define slim_hidden_ulp2(x) #x
|
||||
# define slim_hidden_asmname(name) slim_hidden_asmname1(name)
|
||||
# define slim_hidden_asmname1(name) slim_hidden_ulp #name
|
||||
#else
|
||||
# define slim_hidden_proto(name)
|
||||
# define slim_hidden_def(name)
|
||||
#endif
|
||||
|
||||
/* slim_internal.h */
|
||||
#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__)
|
||||
#define __internal_linkage __attribute__((__visibility__("hidden")))
|
||||
#else
|
||||
#define __internal_linkage
|
||||
#endif
|
||||
|
||||
|
||||
/* These macros allow us to deprecate a function by providing an alias
|
||||
for the old function name to the new function name. With this
|
||||
|
|
@ -387,7 +413,7 @@ struct cairo_image_surface {
|
|||
int stride;
|
||||
int depth;
|
||||
|
||||
IcImage *ic_image;
|
||||
pixman_image_t *ic_image;
|
||||
};
|
||||
|
||||
/* XXX: Right now, the cairo_color structure puts unpremultiplied
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue