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:
Carl Worth 2003-12-11 12:43:58 +00:00
parent 18ae004832
commit 5b38b14ff2
10 changed files with 177 additions and 134 deletions

View file

@ -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:

View file

@ -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@

View file

@ -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.

View file

@ -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

View file

@ -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;
}

View file

@ -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;

View file

@ -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);

View file

@ -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;
}

View file

@ -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;

View file

@ -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