本文整理汇总了C++中pixman_image_unref函数的典型用法代码示例。如果您正苦于以下问题:C++ pixman_image_unref函数的具体用法?C++ pixman_image_unref怎么用?C++ pixman_image_unref使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pixman_image_unref函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: main
int
main (int argc, char **argv)
{
uint32_t dst[SIZE];
pixman_image_t *src_img;
pixman_image_t *dst_img;
int i, j, x, y;
int ret = 0;
for (i = 0; i < n_test_cases; ++i)
{
for (j = 0; j < 2; ++j)
{
src_img = pixman_image_create_bits (testcases[i].format,
testcases[i].width,
testcases[i].height,
testcases[i].src,
testcases[i].stride);
pixman_image_set_indexed(src_img, testcases[i].indexed);
dst_img = pixman_image_create_bits (PIXMAN_a8r8g8b8,
testcases[i].width,
testcases[i].height,
dst,
testcases[i].width*4);
if (j)
{
pixman_image_set_accessors (src_img, reader, writer);
pixman_image_set_accessors (dst_img, reader, writer);
}
pixman_image_composite (PIXMAN_OP_SRC, src_img, NULL, dst_img,
0, 0, 0, 0, 0, 0, testcases[i].width, testcases[i].height);
pixman_image_unref (src_img);
pixman_image_unref (dst_img);
for (y = 0; y < testcases[i].height; ++y)
{
for (x = 0; x < testcases[i].width; ++x)
{
int offset = y * testcases[i].width + x;
if (dst[offset] != testcases[i].dst[offset])
{
printf ("test %i%c: pixel mismatch at (x=%d,y=%d): %08x expected, %08x obtained\n",
i + 1, 'a' + j,
x, y,
testcases[i].dst[offset], dst[offset]);
ret = 1;
}
}
}
}
}
return ret;
}
开发者ID:Acorld,项目名称:WinObjC-Heading,代码行数:59,代码来源:fetch-test.c
示例2: mSDLSWDeinit
void mSDLSWDeinit(struct mSDLRenderer* renderer) {
if (renderer->ratio > 1) {
free(renderer->outputBuffer);
}
#if !SDL_VERSION_ATLEAST(2, 0, 0)
SDL_Surface* surface = SDL_GetVideoSurface();
SDL_UnlockSurface(surface);
#ifdef USE_PIXMAN
pixman_image_unref(renderer->pix);
pixman_image_unref(renderer->screenpix);
#endif
#endif
}
开发者ID:leiradel,项目名称:mgba,代码行数:13,代码来源:sw-sdl.c
示例3: do_check
static pixman_bool_t
do_check (int i)
{
pixman_image_t *source, *dest, *mask;
pixman_op_t op;
int x, y, width, height;
pixman_image_t *dest_copy;
pixman_bool_t result = TRUE;
pixman_bool_t component_alpha;
prng_srand (i);
op = RANDOM_ELT (operators);
x = prng_rand_n (MAX_WIDTH);
y = prng_rand_n (MAX_HEIGHT);
width = prng_rand_n (MAX_WIDTH) + 4;
height = prng_rand_n (MAX_HEIGHT) + 4;
source = create_image (NULL);
mask = create_image (NULL);
dest = create_image (&dest_copy);
if (x >= dest->bits.width)
x = dest->bits.width / 2;
if (y >= dest->bits.height)
y = dest->bits.height / 2;
if (x + width > dest->bits.width)
width = dest->bits.width - x;
if (y + height > dest->bits.height)
height = dest->bits.height - y;
component_alpha = prng_rand_n (2);
pixman_image_set_component_alpha (mask, component_alpha);
pixman_image_composite32 (op, source, mask, dest,
0, 0, 0, 0,
x, y, width, height);
if (!verify (i, op, source, mask, dest, dest_copy,
x, y, width, height, component_alpha))
{
result = FALSE;
}
pixman_image_unref (source);
pixman_image_unref (mask);
pixman_image_unref (dest);
pixman_image_unref (dest_copy);
return result;
}
开发者ID:Distrotech,项目名称:pixman,代码行数:51,代码来源:tolerance-test.c
示例4: main
int
main ()
{
int o, s, m, d;
enable_fp_exceptions();
for (o = 0; o < ARRAY_LENGTH (pdf_ops); ++o)
{
pixman_op_t op = pdf_ops[o];
for (s = 0; s < ARRAY_LENGTH (pixels); ++s)
{
pixman_image_t *src;
src = pixman_image_create_bits (
PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[s]), 4);
for (m = -1; m < ARRAY_LENGTH (pixels); ++m)
{
pixman_image_t *msk = NULL;
if (m >= 0)
{
msk = pixman_image_create_bits (
PIXMAN_a8r8g8b8, 1, 1, (uint32_t *)&(pixels[m]), 4);
}
for (d = 0; d < ARRAY_LENGTH (pixels); ++d)
{
pixman_image_t *dst;
uint32_t dp = pixels[d];
dst = pixman_image_create_bits (
PIXMAN_a8r8g8b8, 1, 1, &dp, 4);
pixman_image_composite (op, src, msk, dst,
0, 0, 0, 0, 0, 0, 1, 1);
pixman_image_unref (dst);
}
if (msk)
pixman_image_unref (msk);
}
pixman_image_unref (src);
}
}
return 0;
}
开发者ID:Ashod,项目名称:WinCairoRequirements,代码行数:50,代码来源:pdf-op-test.c
示例5: Transform
static void
Transform(DataSourceSurface* aDest,
DataSourceSurface* aSource,
const gfx3DMatrix& aTransform,
const Point& aDestOffset)
{
IntSize destSize = aDest->GetSize();
pixman_image_t* dest = pixman_image_create_bits(PIXMAN_a8r8g8b8,
destSize.width,
destSize.height,
(uint32_t*)aDest->GetData(),
aDest->Stride());
IntSize srcSize = aSource->GetSize();
pixman_image_t* src = pixman_image_create_bits(PIXMAN_a8r8g8b8,
srcSize.width,
srcSize.height,
(uint32_t*)aSource->GetData(),
aSource->Stride());
MOZ_ASSERT(src !=0 && dest != 0, "Failed to create pixman images?");
pixman_transform pixTransform = Matrix3DToPixman(aTransform);
pixman_transform pixTransformInverted;
// If the transform is singular then nothing would be drawn anyway, return here
if (!pixman_transform_invert(&pixTransformInverted, &pixTransform)) {
pixman_image_unref(dest);
pixman_image_unref(src);
return;
}
pixman_image_set_transform(src, &pixTransformInverted);
pixman_image_composite32(PIXMAN_OP_SRC,
src,
nullptr,
dest,
aDestOffset.x,
aDestOffset.y,
0,
0,
0,
0,
destSize.width,
destSize.height);
pixman_image_unref(dest);
pixman_image_unref(src);
}
开发者ID:hoosteeno,项目名称:gecko-dev,代码行数:49,代码来源:BasicCompositor.cpp
示例6: pixman_renderer_output_destroy
WL_EXPORT void
pixman_renderer_output_destroy(struct weston_output *output)
{
struct pixman_output_state *po = get_output_state(output);
pixman_image_unref(po->shadow_image);
if (po->hw_buffer)
pixman_image_unref(po->hw_buffer);
po->shadow_image = NULL;
po->hw_buffer = NULL;
free(po);
}
开发者ID:evil0sheep,项目名称:motorweston,代码行数:15,代码来源:pixman-renderer.c
示例7: qemu_pixman_image_unref
void qemu_pixman_image_unref(pixman_image_t *image)
{
if (image == NULL) {
return;
}
pixman_image_unref(image);
}
开发者ID:hwc56,项目名称:qemu-2.3.94,代码行数:7,代码来源:qemu-pixman.c
示例8: ReUseSurface
Bool ReUseSurface(GALINFOPTR galInfo, PixmapPtr pPixmap, Viv2DPixmapPtr toBeUpdatedpPix)
{
GenericSurfacePtr surf = gcvNULL;
gctUINT alignedWidth, alignedHeight;
gctUINT bytesPerPixel;
alignedWidth = gcmALIGN(pPixmap->drawable.width, WIDTH_ALIGNMENT);
alignedHeight = gcmALIGN(pPixmap->drawable.height, HEIGHT_ALIGNMENT);
bytesPerPixel = BITSTOBYTES(pPixmap->drawable.bitsPerPixel);
/* The same as CreatSurface */
if (bytesPerPixel < 2) {
bytesPerPixel = 2;
}
surf = (GenericSurfacePtr)toBeUpdatedpPix->mVidMemInfo;
if ( surf && surf->mVideoNode.mSizeInBytes >= (alignedWidth * alignedHeight * bytesPerPixel))
{
surf->mTiling = gcvLINEAR;
surf->mAlignedWidth = alignedWidth;
surf->mAlignedHeight = alignedHeight;
surf->mStride = alignedWidth * bytesPerPixel;
surf->mRotation = gcvSURF_0_DEGREE;
surf->mLogicalAddr = surf->mVideoNode.mLogicalAddr;
surf->mIsWrapped = gcvFALSE;
if ( surf->mData )
pixman_image_unref( (pixman_image_t *)surf->mData );
surf->mData = gcvNULL;
TRACE_EXIT(TRUE);
}
TRACE_EXIT(FALSE);
}
开发者ID:DesmondWu,项目名称:xorg-drv-vivante,代码行数:35,代码来源:vivante_gal_surface.c
示例9: composite_paint
static cairo_int_status_t
composite_paint (cairo_image_surface_t *dst,
void *closure,
cairo_operator_t op,
const cairo_pattern_t *pattern,
int dst_x,
int dst_y,
const cairo_rectangle_int_t *extents)
{
cairo_rectangle_int_t sample;
pixman_image_t *src;
int src_x, src_y;
_cairo_pattern_sampled_area (pattern, extents, &sample);
src = _pixman_image_for_pattern (dst,
pattern, FALSE,
extents, &sample,
&src_x, &src_y);
if (unlikely (src == NULL))
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
pixman_image_composite32 (_pixman_operator (op),
src, NULL, dst->pixman_image,
extents->x + src_x, extents->y + src_y,
0, 0,
extents->x - dst_x, extents->y - dst_y,
extents->width, extents->height);
pixman_image_unref (src);
return CAIRO_STATUS_SUCCESS;
}
开发者ID:mrobinson,项目名称:cairo,代码行数:32,代码来源:test-base-compositor-surface.c
示例10: pixman_renderer_surface_copy_content
static int
pixman_renderer_surface_copy_content(struct weston_surface *surface,
void *target, size_t size,
int src_x, int src_y,
int width, int height)
{
const pixman_format_code_t format = PIXMAN_a8b8g8r8;
const size_t bytespp = 4; /* PIXMAN_a8b8g8r8 */
struct pixman_surface_state *ps = get_surface_state(surface);
pixman_image_t *out_buf;
if (!ps->image)
return -1;
out_buf = pixman_image_create_bits(format, width, height,
target, width * bytespp);
pixman_image_set_transform(ps->image, NULL);
pixman_image_composite32(PIXMAN_OP_SRC,
ps->image, /* src */
NULL, /* mask */
out_buf, /* dest */
src_x, src_y, /* src_x, src_y */
0, 0, /* mask_x, mask_y */
0, 0, /* dest_x, dest_y */
width, height);
pixman_image_unref(out_buf);
return 0;
}
开发者ID:Holusion,项目名称:weston,代码行数:31,代码来源:pixman-renderer.c
示例11: Blit
void PixmanBitmap::BlendBlit(int x, int y, Bitmap* _src, Rect src_rect, const Color& color) {
PixmanBitmap* src = (PixmanBitmap*) _src;
if (color.alpha == 0) {
if (_src != this)
Blit(x, y, _src, src_rect, 255);
return;
}
if (src != this)
pixman_image_composite32(PIXMAN_OP_SRC,
src->bitmap, (pixman_image_t*) NULL, bitmap,
src_rect.x, src_rect.y,
0, 0,
x, y,
src_rect.width, src_rect.height);
pixman_color_t tcolor = PixmanColor(color);
pixman_image_t* timage = pixman_image_create_solid_fill(&tcolor);
pixman_image_composite32(PIXMAN_OP_OVER,
timage, src->bitmap, bitmap,
0, 0,
src_rect.x, src_rect.y,
x, y,
src_rect.width, src_rect.height);
pixman_image_unref(timage);
RefreshCallback();
}
开发者ID:take-cheeze,项目名称:EasyRPG,代码行数:31,代码来源:pixman_bitmap.cpp
示例12: pixman_image_create_solid_fill
void PixmanBitmap::WaverBlit(int x, int y, Bitmap* _src, Rect src_rect, int depth, double phase, int opacity) {
if (opacity < 0)
return;
PixmanBitmap* src = (PixmanBitmap*) _src;
if (opacity > 255) opacity = 255;
pixman_image_t* mask;
if (opacity < 255) {
pixman_color_t tcolor = {0, 0, 0, opacity << 8};
mask = pixman_image_create_solid_fill(&tcolor);
}
else
mask = (pixman_image_t*) NULL;
for (int i = 0; i < src_rect.height; i++) {
int offset = (int) (depth * (1 + sin((phase + i * 20) * 3.14159 / 180)));
pixman_image_composite32(PIXMAN_OP_OVER,
src->bitmap, mask, bitmap,
src_rect.x, src_rect.y + i,
0, 0,
x + offset, y + i,
src_rect.width, 1);
}
if (mask != NULL)
pixman_image_unref(mask);
RefreshCallback();
}
开发者ID:take-cheeze,项目名称:EasyRPG,代码行数:32,代码来源:pixman_bitmap.cpp
示例13: _cairo_image_surface_create_with_pixman_format
cairo_surface_t *
_cairo_image_surface_create_with_pixman_format (unsigned char *data,
pixman_format_code_t pixman_format,
int width,
int height,
int stride)
{
cairo_surface_t *surface;
pixman_image_t *pixman_image;
if (! _cairo_image_surface_is_size_valid (width, height))
{
return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE));
}
pixman_image = pixman_image_create_bits (pixman_format, width, height,
(uint32_t *) data, stride);
if (unlikely (pixman_image == NULL))
return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
surface = _cairo_image_surface_create_for_pixman_image (pixman_image,
pixman_format);
if (unlikely (surface->status)) {
pixman_image_unref (pixman_image);
return surface;
}
/* we can not make any assumptions about the initial state of user data */
surface->is_clear = data == NULL;
return surface;
}
开发者ID:CODECOMMUNITY,项目名称:cairo,代码行数:32,代码来源:cairo-image-surface.c
示例14: process_image_data
static void process_image_data(struct fp_img_dev *dev, char **output, int *output_height)
{
//pixman stuff taken from libfprint/pixman.c, adapted for my purposes.
pixman_image_t *orig, *resized;
pixman_transform_t transform;
struct vfs0050_dev *vfs_dev = dev->priv;
struct vfs0050_line *line, *calibration_line;
char *buf = malloc(vfs_dev->scanbuf_idx);
int lines = vfs_dev->scanbuf_idx / VFS0050_FRAME_SIZE;
int i, x, sum, last_sum, diff;
int new_height;
//just grab one around middle, there should be 100
calibration_line = (struct vfs0050_line *) ((char *) vfs_dev->calbuf + (50 * VFS0050_FRAME_SIZE));
new_height = 0;
for (i = 0; i < lines; i++) {
line = (struct vfs0050_line *) ((char *) vfs_dev->scanbuf + (i * VFS0050_FRAME_SIZE));
if (!is_noise(line))
memcpy(buf + (new_height++ * VFS0050_IMG_WIDTH), line->row, VFS0050_IMG_WIDTH);
else
fp_dbg("removed noise at line: %d\n", i);
}
orig = pixman_image_create_bits(PIXMAN_a8, VFS0050_IMG_WIDTH, new_height, (uint32_t *) buf, VFS0050_IMG_WIDTH);
new_height *= VFS0050_SCALE_FACTOR; //scale for resized image
resized = pixman_image_create_bits(PIXMAN_a8, VFS0050_IMG_WIDTH, new_height, NULL, VFS0050_IMG_WIDTH);
pixman_transform_init_identity(&transform);
pixman_transform_scale(NULL, &transform, pixman_int_to_fixed(1), pixman_double_to_fixed(0.2));
pixman_image_set_transform(orig, &transform);
pixman_image_set_filter(orig, PIXMAN_FILTER_BEST, NULL, 0);
pixman_image_composite32(PIXMAN_OP_SRC,
orig,
NULL,
resized,
0, 0,
0, 0,
0, 0,
VFS0050_IMG_WIDTH, new_height
);
memcpy(buf, pixman_image_get_data(resized), VFS0050_IMG_WIDTH * new_height);
pixman_image_unref(orig);
pixman_image_unref(resized);
*output_height = new_height;
*output = buf;
}
开发者ID:Jack-Q,项目名称:libfprint,代码行数:47,代码来源:vfs0050.c
示例15: FreeGPUSurface
/************************************************************************
* PIXMAP RELATED (START)
************************************************************************/
static gctBOOL FreeGPUSurface(VIVGPUPtr gpuctx, Viv2DPixmapPtr ppriv) {
TRACE_ENTER();
gceSTATUS status = gcvSTATUS_OK;
GenericSurfacePtr surf = gcvNULL;
gceSURF_TYPE surftype;
Bool cacheable;
surf = (GenericSurfacePtr) (ppriv->mVidMemInfo);
if (surf->mIsWrapped) {
goto delete_wrapper;
}
TRACE_INFO("DESTROYED SURFACE ADDRESS = %x - %x\n", surf, ppriv->mVidMemInfo);
surf = AddGSurfIntoPool(surf);
if ( surf ==NULL )
{
ppriv->mVidMemInfo = NULL;
TRACE_EXIT(gcvTRUE);
}
if ( surf->mData )
pixman_image_unref( (pixman_image_t *)surf->mData );
surf->mData = gcvNULL;
if ( surf->mAlignedWidth >= IMX_EXA_NONCACHESURF_WIDTH && surf->mAlignedHeight >= IMX_EXA_NONCACHESURF_HEIGHT )
{
surftype = gcvSURF_BITMAP;
cacheable = FALSE;
} else {
surftype = SURFACE_TYPE;
cacheable = SURFACE_CACHEABLE;
}
if (surf->mVideoNode.mNode != gcvNULL) {
if (surf->mVideoNode.mLogicalAddr != gcvNULL) {
status = UnlockVideoNode(gpuctx->mDriver->mHal, surf->mVideoNode.mNode, surftype);
if (status != gcvSTATUS_OK) {
TRACE_ERROR("Unable to UnLock video node\n");
TRACE_EXIT(gcvFALSE);
}
}
status = FreeVideoNode(gpuctx->mDriver->mHal, surf->mVideoNode.mNode);
if (status != gcvSTATUS_OK) {
TRACE_ERROR("Unable to Free video node\n");
TRACE_EXIT(gcvFALSE);
}
delete_wrapper:
status = gcoOS_Free(gcvNULL, surf);
if (status != gcvSTATUS_OK) {
TRACE_ERROR("Unable to Free surface\n");
TRACE_EXIT(gcvFALSE);
}
ppriv->mVidMemInfo = NULL;
}
TRACE_EXIT(gcvTRUE);
}
开发者ID:DesmondWu,项目名称:xorg-drv-vivante,代码行数:61,代码来源:vivante_gal_surface.c
示例16: composite_traps
static cairo_int_status_t
composite_traps (cairo_image_surface_t *dst,
void *closure,
cairo_operator_t op,
const cairo_pattern_t *pattern,
int dst_x,
int dst_y,
const cairo_rectangle_int_t *extents)
{
composite_traps_info_t *info = closure;
cairo_rectangle_int_t sample;
pixman_image_t *src, *mask;
int src_x, src_y;
TRACE ((stderr, "%s\n", __FUNCTION__));
_cairo_pattern_sampled_area (pattern, extents, &sample);
src = _pixman_image_for_pattern (dst, pattern, FALSE,
extents, &sample,
&src_x, &src_y);
if (unlikely (src == NULL))
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
mask = pixman_image_create_bits (info->antialias == CAIRO_ANTIALIAS_NONE ? PIXMAN_a1 : PIXMAN_a8,
extents->width, extents->height,
NULL, 0);
if (unlikely (mask == NULL)) {
pixman_image_unref (src);
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
}
_pixman_image_add_traps (mask, extents->x, extents->y, &info->traps);
pixman_image_composite32 (_pixman_operator (op),
src, mask, dst->pixman_image,
extents->x + src_x - dst_x, extents->y + src_y - dst_y,
0, 0,
extents->x - dst_x, extents->y - dst_y,
extents->width, extents->height);
pixman_image_unref (mask);
pixman_image_unref (src);
return CAIRO_STATUS_SUCCESS;
}
开发者ID:1833183060,项目名称:wke,代码行数:44,代码来源:test-base-compositor-surface.c
示例17: composite_mask
static cairo_int_status_t
composite_mask (cairo_image_surface_t *dst,
void *closure,
cairo_operator_t op,
const cairo_pattern_t *pattern,
int dst_x,
int dst_y,
const cairo_rectangle_int_t *extents)
{
cairo_rectangle_int_t sample;
pixman_image_t *src, *mask;
int src_x, src_y;
int mask_x, mask_y;
TRACE ((stderr, "%s\n", __FUNCTION__));
_cairo_pattern_sampled_area (pattern, extents, &sample);
src = _pixman_image_for_pattern (dst, pattern, FALSE,
extents, &sample,
&src_x, &src_y);
if (unlikely (src == NULL))
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
_cairo_pattern_sampled_area (closure, extents, &sample);
mask = _pixman_image_for_pattern (dst, closure, TRUE,
extents, &sample,
&mask_x, &mask_y);
if (unlikely (mask == NULL)) {
pixman_image_unref (src);
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
}
pixman_image_composite32 (_pixman_operator (op),
src, mask, dst->pixman_image,
extents->x + src_x, extents->y + src_y,
extents->x + mask_x, extents->y + mask_y,
extents->x - dst_x, extents->y - dst_y,
extents->width, extents->height);
pixman_image_unref (mask);
pixman_image_unref (src);
return CAIRO_STATUS_SUCCESS;
}
开发者ID:1833183060,项目名称:wke,代码行数:44,代码来源:test-base-compositor-surface.c
示例18: GetSubimage
void PixmanBitmap::TiledBlit(int ox, int oy, Rect src_rect, Bitmap* src, Rect dst_rect, int opacity) {
if (opacity < 0)
return;
if (opacity > 255) opacity = 255;
if (ox >= src_rect.width) ox %= src_rect.width;
if (oy >= src_rect.height) ox %= src_rect.height;
if (ox < 0) ox += src_rect.width * ((-ox + src_rect.width - 1) / src_rect.width);
if (oy < 0) oy += src_rect.height * ((-oy + src_rect.height - 1) / src_rect.height);
pixman_image_t* src_bm = GetSubimage(src, src_rect);
pixman_image_t* mask;
if (opacity < 255) {
pixman_color_t tcolor = {0, 0, 0, opacity << 8};
mask = pixman_image_create_solid_fill(&tcolor);
}
else
mask = (pixman_image_t*) NULL;
pixman_image_set_repeat(src_bm, PIXMAN_REPEAT_NORMAL);
pixman_transform_t xform;
pixman_transform_init_translate(&xform,
pixman_int_to_fixed(ox),
pixman_int_to_fixed(oy));
pixman_image_set_transform(src_bm, &xform);
pixman_image_composite32(PIXMAN_OP_OVER,
src_bm, mask, bitmap,
0, 0,
0, 0,
dst_rect.x, dst_rect.y,
dst_rect.width, dst_rect.height);
pixman_image_unref(src_bm);
if (mask != NULL)
pixman_image_unref(mask);
RefreshCallback();
}
开发者ID:take-cheeze,项目名称:EasyRPG,代码行数:44,代码来源:pixman_bitmap.cpp
示例19: main
int
main (int argc, char **argv)
{
#define WIDTH 400
#define HEIGHT 200
int y, x, p;
float alpha;
uint32_t *dest = malloc (WIDTH * HEIGHT * 4);
uint32_t *src1 = malloc (WIDTH * HEIGHT * 4);
pixman_image_t *dest_img, *src1_img;
dest_img = pixman_image_create_bits (PIXMAN_a8r8g8b8_sRGB,
WIDTH, HEIGHT,
dest,
WIDTH * 4);
src1_img = pixman_image_create_bits (PIXMAN_a8r8g8b8,
WIDTH, HEIGHT,
src1,
WIDTH * 4);
for (y = 0; y < HEIGHT; y ++)
{
p = WIDTH * y;
for (x = 0; x < WIDTH; x ++)
{
alpha = (float) x / WIDTH;
src1[p + x] = linear_argb_to_premult_argb (alpha, 1, 0, 1);
dest[p + x] = linear_argb_to_premult_srgb_argb (1-alpha, 0, 1, 0);
}
}
pixman_image_composite (PIXMAN_OP_ADD, src1_img, NULL, dest_img,
0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
pixman_image_unref (src1_img);
free (src1);
show_image (dest_img);
pixman_image_unref (dest_img);
free (dest);
return 0;
}
开发者ID:AhmadQasim,项目名称:GPU-Virtualization,代码行数:43,代码来源:srgb-test.c
示例20: qemu_pixman_glyph_render
void qemu_pixman_glyph_render(pixman_image_t *glyph,
pixman_image_t *surface,
pixman_color_t *fgcol,
pixman_color_t *bgcol,
int x, int y, int cw, int ch)
{
pixman_image_t *ifg = pixman_image_create_solid_fill(fgcol);
pixman_image_t *ibg = pixman_image_create_solid_fill(bgcol);
pixman_image_composite(PIXMAN_OP_SRC, ibg, NULL, surface,
0, 0, 0, 0,
cw * x, ch * y,
cw, ch);
pixman_image_composite(PIXMAN_OP_OVER, ifg, glyph, surface,
0, 0, 0, 0,
cw * x, ch * y,
cw, ch);
pixman_image_unref(ifg);
pixman_image_unref(ibg);
}
开发者ID:hwc56,项目名称:qemu-2.3.94,代码行数:20,代码来源:qemu-pixman.c
注:本文中的pixman_image_unref函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论