~ubuntu-branches/ubuntu/saucy/pixman/saucy-security

« back to all changes in this revision

Viewing changes to pixman/pixman.h

  • Committer: Bazaar Package Importer
  • Author(s): Julien Cristau
  • Date: 2009-09-28 18:12:47 UTC
  • mfrom: (1.1.8 upstream) (2.1.3 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090928181247-3iehog63i50htejf
Tags: 0.16.2-1
* New upstream release (closes: #546849).
* Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
166
166
/* forward declaration (sorry) */
167
167
struct pixman_box16;
168
168
 
169
 
void
170
 
pixman_transform_init_identity(struct pixman_transform *matrix);
171
 
 
172
 
pixman_bool_t
173
 
pixman_transform_point_3d (const struct pixman_transform *transform,
174
 
                           struct pixman_vector *vector);
175
 
 
176
 
pixman_bool_t
177
 
pixman_transform_point(const struct pixman_transform *transform,
178
 
                       struct pixman_vector *vector);
179
 
 
180
 
pixman_bool_t
181
 
pixman_transform_multiply (struct pixman_transform *dst,
182
 
                           const struct pixman_transform *l,
183
 
                           const struct pixman_transform *r);
184
 
 
185
 
void
186
 
pixman_transform_init_scale (struct pixman_transform *t,
187
 
                             pixman_fixed_t sx,
188
 
                             pixman_fixed_t sy);
189
 
 
190
 
pixman_bool_t
191
 
pixman_transform_scale(struct pixman_transform *forward,
192
 
                       struct pixman_transform *reverse,
193
 
                       pixman_fixed_t sx, pixman_fixed_t sy);
194
 
 
195
 
void
196
 
pixman_transform_init_rotate(struct pixman_transform *t,
197
 
                             pixman_fixed_t cos,
198
 
                             pixman_fixed_t sin);
199
 
 
200
 
pixman_bool_t
201
 
pixman_transform_rotate(struct pixman_transform *forward,
202
 
                        struct pixman_transform *reverse,
203
 
                        pixman_fixed_t c, pixman_fixed_t s);
204
 
 
205
 
void
206
 
pixman_transform_init_translate(struct pixman_transform *t,
207
 
                                pixman_fixed_t tx, pixman_fixed_t ty);
208
 
 
209
 
 
210
 
pixman_bool_t
211
 
pixman_transform_translate(struct pixman_transform *forward,
212
 
                           struct pixman_transform *reverse,
213
 
                           pixman_fixed_t tx, pixman_fixed_t ty);
214
 
 
215
 
pixman_bool_t
216
 
pixman_transform_bounds(const struct pixman_transform *matrix,
217
 
                        struct pixman_box16 *b);
218
 
 
219
 
 
220
 
pixman_bool_t
221
 
pixman_transform_invert (struct pixman_transform *dst,
222
 
                         const struct pixman_transform *src);
223
 
 
224
 
pixman_bool_t
225
 
pixman_transform_is_identity(const struct pixman_transform *t);
226
 
 
227
 
pixman_bool_t
228
 
pixman_transform_is_scale(const struct pixman_transform *t);
229
 
 
230
 
pixman_bool_t
231
 
pixman_transform_is_int_translate(const struct pixman_transform *t);
232
 
 
233
 
pixman_bool_t
234
 
pixman_transform_is_inverse (const struct pixman_transform *a,
235
 
                             const struct pixman_transform *b);
236
 
 
 
169
void          pixman_transform_init_identity    (struct pixman_transform       *matrix);
 
170
pixman_bool_t pixman_transform_point_3d         (const struct pixman_transform *transform,
 
171
                                                 struct pixman_vector          *vector);
 
172
pixman_bool_t pixman_transform_point            (const struct pixman_transform *transform,
 
173
                                                 struct pixman_vector          *vector);
 
174
pixman_bool_t pixman_transform_multiply         (struct pixman_transform       *dst,
 
175
                                                 const struct pixman_transform *l,
 
176
                                                 const struct pixman_transform *r);
 
177
void          pixman_transform_init_scale       (struct pixman_transform       *t,
 
178
                                                 pixman_fixed_t                 sx,
 
179
                                                 pixman_fixed_t                 sy);
 
180
pixman_bool_t pixman_transform_scale            (struct pixman_transform       *forward,
 
181
                                                 struct pixman_transform       *reverse,
 
182
                                                 pixman_fixed_t                 sx,
 
183
                                                 pixman_fixed_t                 sy);
 
184
void          pixman_transform_init_rotate      (struct pixman_transform       *t,
 
185
                                                 pixman_fixed_t                 cos,
 
186
                                                 pixman_fixed_t                 sin);
 
187
pixman_bool_t pixman_transform_rotate           (struct pixman_transform       *forward,
 
188
                                                 struct pixman_transform       *reverse,
 
189
                                                 pixman_fixed_t                 c,
 
190
                                                 pixman_fixed_t                 s);
 
191
void          pixman_transform_init_translate   (struct pixman_transform       *t,
 
192
                                                 pixman_fixed_t                 tx,
 
193
                                                 pixman_fixed_t                 ty);
 
194
pixman_bool_t pixman_transform_translate        (struct pixman_transform       *forward,
 
195
                                                 struct pixman_transform       *reverse,
 
196
                                                 pixman_fixed_t                 tx,
 
197
                                                 pixman_fixed_t                 ty);
 
198
pixman_bool_t pixman_transform_bounds           (const struct pixman_transform *matrix,
 
199
                                                 struct pixman_box16           *b);
 
200
pixman_bool_t pixman_transform_invert           (struct pixman_transform       *dst,
 
201
                                                 const struct pixman_transform *src);
 
202
pixman_bool_t pixman_transform_is_identity      (const struct pixman_transform *t);
 
203
pixman_bool_t pixman_transform_is_scale         (const struct pixman_transform *t);
 
204
pixman_bool_t pixman_transform_is_int_translate (const struct pixman_transform *t);
 
205
pixman_bool_t pixman_transform_is_inverse       (const struct pixman_transform *a,
 
206
                                                 const struct pixman_transform *b);
237
207
 
238
208
/*
239
209
 * Floating point matrices
240
210
 */
241
 
struct pixman_f_vector {
 
211
struct pixman_f_vector
 
212
{
242
213
    double  v[3];
243
214
};
244
215
 
245
 
struct pixman_f_transform {
 
216
struct pixman_f_transform
 
217
{
246
218
    double  m[3][3];
247
219
};
248
220
 
249
 
pixman_bool_t
250
 
pixman_transform_from_pixman_f_transform (struct pixman_transform *t,
251
 
                                          const struct pixman_f_transform *ft);
252
 
 
253
 
void
254
 
pixman_f_transform_from_pixman_transform (struct pixman_f_transform *ft,
255
 
                                          const struct pixman_transform *t);
256
 
 
257
 
pixman_bool_t
258
 
pixman_transform_from_pixman_f_transform (struct pixman_transform *t,
259
 
                                          const struct pixman_f_transform *ft);
260
 
 
261
 
pixman_bool_t
262
 
pixman_f_transform_invert (struct pixman_f_transform *dst,
263
 
                           const struct pixman_f_transform *src);
264
 
 
265
 
pixman_bool_t
266
 
pixman_f_transform_point (const struct pixman_f_transform *t,
267
 
                          struct pixman_f_vector *v);
268
 
 
269
 
void
270
 
pixman_f_transform_point_3d (const struct pixman_f_transform *t,
271
 
                             struct pixman_f_vector     *v);
272
 
 
273
 
 
274
 
void
275
 
pixman_f_transform_multiply (struct pixman_f_transform *dst,
276
 
                             const struct pixman_f_transform *l,
277
 
                             const struct pixman_f_transform *r);
278
 
 
279
 
void
280
 
pixman_f_transform_init_scale (struct pixman_f_transform *t, double sx, double sy);
281
 
 
282
 
pixman_bool_t
283
 
pixman_f_transform_scale (struct pixman_f_transform *forward,
284
 
                          struct pixman_f_transform *reverse,
285
 
                          double sx, double sy);
286
 
 
287
 
void
288
 
pixman_f_transform_init_rotate (struct pixman_f_transform *t, double cos, double sin);
289
 
 
290
 
pixman_bool_t
291
 
pixman_f_transform_rotate (struct pixman_f_transform *forward,
292
 
                           struct pixman_f_transform *reverse,
293
 
                           double c, double s);
294
 
 
295
 
void
296
 
pixman_f_transform_init_translate (struct pixman_f_transform *t, double tx, double ty);
297
 
 
298
 
pixman_bool_t
299
 
pixman_f_transform_translate (struct pixman_f_transform *forward,
300
 
                              struct pixman_f_transform *reverse,
301
 
                              double tx, double ty);
302
 
 
303
 
pixman_bool_t
304
 
pixman_f_transform_bounds (const struct pixman_f_transform *t, struct pixman_box16 *b);
305
 
 
306
 
void
307
 
pixman_f_transform_init_identity (struct pixman_f_transform *t);
308
 
 
309
 
/* Don't blame me, blame XRender */
 
221
pixman_bool_t pixman_transform_from_pixman_f_transform (struct pixman_transform         *t,
 
222
                                                        const struct pixman_f_transform *ft);
 
223
void          pixman_f_transform_from_pixman_transform (struct pixman_f_transform       *ft,
 
224
                                                        const struct pixman_transform   *t);
 
225
pixman_bool_t pixman_f_transform_invert                (struct pixman_f_transform       *dst,
 
226
                                                        const struct pixman_f_transform *src);
 
227
pixman_bool_t pixman_f_transform_point                 (const struct pixman_f_transform *t,
 
228
                                                        struct pixman_f_vector          *v);
 
229
void          pixman_f_transform_point_3d              (const struct pixman_f_transform *t,
 
230
                                                        struct pixman_f_vector          *v);
 
231
void          pixman_f_transform_multiply              (struct pixman_f_transform       *dst,
 
232
                                                        const struct pixman_f_transform *l,
 
233
                                                        const struct pixman_f_transform *r);
 
234
void          pixman_f_transform_init_scale            (struct pixman_f_transform       *t,
 
235
                                                        double                           sx,
 
236
                                                        double                           sy);
 
237
pixman_bool_t pixman_f_transform_scale                 (struct pixman_f_transform       *forward,
 
238
                                                        struct pixman_f_transform       *reverse,
 
239
                                                        double                           sx,
 
240
                                                        double                           sy);
 
241
void          pixman_f_transform_init_rotate           (struct pixman_f_transform       *t,
 
242
                                                        double                           cos,
 
243
                                                        double                           sin);
 
244
pixman_bool_t pixman_f_transform_rotate                (struct pixman_f_transform       *forward,
 
245
                                                        struct pixman_f_transform       *reverse,
 
246
                                                        double                           c,
 
247
                                                        double                           s);
 
248
void          pixman_f_transform_init_translate        (struct pixman_f_transform       *t,
 
249
                                                        double                           tx,
 
250
                                                        double                           ty);
 
251
pixman_bool_t pixman_f_transform_translate             (struct pixman_f_transform       *forward,
 
252
                                                        struct pixman_f_transform       *reverse,
 
253
                                                        double                           tx,
 
254
                                                        double                           ty);
 
255
pixman_bool_t pixman_f_transform_bounds                (const struct pixman_f_transform *t,
 
256
                                                        struct pixman_box16             *b);
 
257
void          pixman_f_transform_init_identity         (struct pixman_f_transform       *t);
 
258
 
310
259
typedef enum
311
260
{
312
261
    PIXMAN_REPEAT_NONE,
368
317
    PIXMAN_OP_CONJOINT_ATOP_REVERSE     = 0x2a,
369
318
    PIXMAN_OP_CONJOINT_XOR              = 0x2b,
370
319
 
371
 
    PIXMAN_OP_NONE
 
320
    PIXMAN_OP_MULTIPLY                  = 0x30,
 
321
    PIXMAN_OP_SCREEN                    = 0x31,
 
322
    PIXMAN_OP_OVERLAY                   = 0x32,
 
323
    PIXMAN_OP_DARKEN                    = 0x33,
 
324
    PIXMAN_OP_LIGHTEN                   = 0x34,
 
325
    PIXMAN_OP_COLOR_DODGE               = 0x35,
 
326
    PIXMAN_OP_COLOR_BURN                = 0x36,
 
327
    PIXMAN_OP_HARD_LIGHT                = 0x37,
 
328
    PIXMAN_OP_SOFT_LIGHT                = 0x38,
 
329
    PIXMAN_OP_DIFFERENCE                = 0x39,
 
330
    PIXMAN_OP_EXCLUSION                 = 0x3a,
 
331
    PIXMAN_OP_HSL_HUE                   = 0x3b,
 
332
    PIXMAN_OP_HSL_SATURATION            = 0x3c,
 
333
    PIXMAN_OP_HSL_COLOR                 = 0x3d,
 
334
    PIXMAN_OP_HSL_LUMINOSITY            = 0x3e,
 
335
 
 
336
    PIXMAN_OP_NONE,
 
337
    PIXMAN_OP_LAST = PIXMAN_OP_NONE
372
338
} pixman_op_t;
373
339
 
374
340
/*
387
353
 
388
354
struct pixman_rectangle16
389
355
{
390
 
    int16_t x, y;
391
 
    uint16_t width, height;
 
356
    int16_t     x, y;
 
357
    uint16_t    width, height;
392
358
};
393
359
 
394
360
struct pixman_box16
399
365
struct pixman_region16
400
366
{
401
367
    pixman_box16_t          extents;
402
 
    pixman_region16_data_t  *data;
 
368
    pixman_region16_data_t *data;
403
369
};
404
370
 
405
371
typedef enum
409
375
    PIXMAN_REGION_PART
410
376
} pixman_region_overlap_t;
411
377
 
412
 
/* This function exists only to make it possible to preserve the X ABI - it should
413
 
 * go away at first opportunity.
 
378
/* This function exists only to make it possible to preserve
 
379
 * the X ABI - it should go away at first opportunity.
414
380
 */
415
 
void                    pixman_region_set_static_pointers (pixman_box16_t         *empty_box,
416
 
                                                           pixman_region16_data_t *empty_data,
417
 
                                                           pixman_region16_data_t *broken_data);
418
 
 
 
381
void pixman_region_set_static_pointers (pixman_box16_t         *empty_box,
 
382
                                        pixman_region16_data_t *empty_data,
 
383
                                        pixman_region16_data_t *broken_data);
419
384
 
420
385
/* creation/destruction */
421
 
void                    pixman_region_init                (pixman_region16_t      *region);
422
 
void                    pixman_region_init_rect           (pixman_region16_t      *region,
423
 
                                                           int                     x,
424
 
                                                           int                     y,
425
 
                                                           unsigned int            width,
426
 
                                                           unsigned int            height);
427
 
pixman_bool_t           pixman_region_init_rects          (pixman_region16_t      *region,
428
 
                                                           pixman_box16_t         *boxes,
429
 
                                                           int                     count);
430
 
void                    pixman_region_init_with_extents   (pixman_region16_t      *region,
431
 
                                                           pixman_box16_t         *extents);
432
 
void                    pixman_region_fini                (pixman_region16_t      *region);
 
386
void                    pixman_region_init               (pixman_region16_t *region);
 
387
void                    pixman_region_init_rect          (pixman_region16_t *region,
 
388
                                                          int                x,
 
389
                                                          int                y,
 
390
                                                          unsigned int       width,
 
391
                                                          unsigned int       height);
 
392
pixman_bool_t           pixman_region_init_rects         (pixman_region16_t *region,
 
393
                                                          pixman_box16_t    *boxes,
 
394
                                                          int                count);
 
395
void                    pixman_region_init_with_extents  (pixman_region16_t *region,
 
396
                                                          pixman_box16_t    *extents);
 
397
void                    pixman_region_fini               (pixman_region16_t *region);
 
398
 
433
399
 
434
400
 
435
401
/* manipulation */
436
 
void                    pixman_region_translate           (pixman_region16_t      *region,
437
 
                                                           int                     x,
438
 
                                                           int                     y);
439
 
pixman_bool_t           pixman_region_copy                (pixman_region16_t      *dest,
440
 
                                                           pixman_region16_t      *source);
441
 
pixman_bool_t           pixman_region_intersect           (pixman_region16_t      *newReg,
442
 
                                                           pixman_region16_t      *reg1,
443
 
                                                           pixman_region16_t      *reg2);
444
 
pixman_bool_t           pixman_region_union               (pixman_region16_t      *newReg,
445
 
                                                           pixman_region16_t      *reg1,
446
 
                                                           pixman_region16_t      *reg2);
447
 
pixman_bool_t           pixman_region_union_rect          (pixman_region16_t      *dest,
448
 
                                                           pixman_region16_t      *source,
449
 
                                                           int                     x,
450
 
                                                           int                     y,
451
 
                                                           unsigned int            width,
452
 
                                                           unsigned int            height);
453
 
pixman_bool_t           pixman_region_subtract            (pixman_region16_t      *regD,
454
 
                                                           pixman_region16_t      *regM,
455
 
                                                           pixman_region16_t      *regS);
456
 
pixman_bool_t           pixman_region_inverse             (pixman_region16_t      *newReg,
457
 
                                                           pixman_region16_t      *reg1,
458
 
                                                           pixman_box16_t         *invRect);
459
 
pixman_bool_t           pixman_region_contains_point      (pixman_region16_t      *region,
460
 
                                                           int                     x,
461
 
                                                           int                     y,
462
 
                                                           pixman_box16_t         *box);
463
 
pixman_region_overlap_t pixman_region_contains_rectangle  (pixman_region16_t      *pixman_region16_t,
464
 
                                                           pixman_box16_t         *prect);
465
 
pixman_bool_t           pixman_region_not_empty           (pixman_region16_t      *region);
466
 
pixman_box16_t *        pixman_region_extents             (pixman_region16_t      *region);
467
 
int                     pixman_region_n_rects             (pixman_region16_t      *region);
468
 
pixman_box16_t *        pixman_region_rectangles          (pixman_region16_t      *region,
469
 
                                                           int                    *n_rects);
470
 
pixman_bool_t           pixman_region_equal               (pixman_region16_t      *region1,
471
 
                                                           pixman_region16_t      *region2);
472
 
pixman_bool_t           pixman_region_selfcheck           (pixman_region16_t      *region);
473
 
void                    pixman_region_reset               (pixman_region16_t      *region,
474
 
                                                           pixman_box16_t         *box);
475
 
 
 
402
void                    pixman_region_translate          (pixman_region16_t *region,
 
403
                                                          int                x,
 
404
                                                          int                y);
 
405
pixman_bool_t           pixman_region_copy               (pixman_region16_t *dest,
 
406
                                                          pixman_region16_t *source);
 
407
pixman_bool_t           pixman_region_intersect          (pixman_region16_t *new_reg,
 
408
                                                          pixman_region16_t *reg1,
 
409
                                                          pixman_region16_t *reg2);
 
410
pixman_bool_t           pixman_region_union              (pixman_region16_t *new_reg,
 
411
                                                          pixman_region16_t *reg1,
 
412
                                                          pixman_region16_t *reg2);
 
413
pixman_bool_t           pixman_region_union_rect         (pixman_region16_t *dest,
 
414
                                                          pixman_region16_t *source,
 
415
                                                          int                x,
 
416
                                                          int                y,
 
417
                                                          unsigned int       width,
 
418
                                                          unsigned int       height);
 
419
pixman_bool_t           pixman_region_subtract           (pixman_region16_t *reg_d,
 
420
                                                          pixman_region16_t *reg_m,
 
421
                                                          pixman_region16_t *reg_s);
 
422
pixman_bool_t           pixman_region_inverse            (pixman_region16_t *new_reg,
 
423
                                                          pixman_region16_t *reg1,
 
424
                                                          pixman_box16_t    *inv_rect);
 
425
pixman_bool_t           pixman_region_contains_point     (pixman_region16_t *region,
 
426
                                                          int                x,
 
427
                                                          int                y,
 
428
                                                          pixman_box16_t    *box);
 
429
pixman_region_overlap_t pixman_region_contains_rectangle (pixman_region16_t *pixman_region16_t,
 
430
                                                          pixman_box16_t    *prect);
 
431
pixman_bool_t           pixman_region_not_empty          (pixman_region16_t *region);
 
432
pixman_box16_t *        pixman_region_extents            (pixman_region16_t *region);
 
433
int                     pixman_region_n_rects            (pixman_region16_t *region);
 
434
pixman_box16_t *        pixman_region_rectangles         (pixman_region16_t *region,
 
435
                                                          int               *n_rects);
 
436
pixman_bool_t           pixman_region_equal              (pixman_region16_t *region1,
 
437
                                                          pixman_region16_t *region2);
 
438
pixman_bool_t           pixman_region_selfcheck          (pixman_region16_t *region);
 
439
void                    pixman_region_reset              (pixman_region16_t *region,
 
440
                                                          pixman_box16_t    *box);
476
441
/*
477
442
 * 32 bit regions
478
443
 */
525
490
                                                            int                y);
526
491
pixman_bool_t           pixman_region32_copy               (pixman_region32_t *dest,
527
492
                                                            pixman_region32_t *source);
528
 
pixman_bool_t           pixman_region32_intersect          (pixman_region32_t *newReg,
 
493
pixman_bool_t           pixman_region32_intersect          (pixman_region32_t *new_reg,
529
494
                                                            pixman_region32_t *reg1,
530
495
                                                            pixman_region32_t *reg2);
531
 
pixman_bool_t           pixman_region32_union              (pixman_region32_t *newReg,
 
496
pixman_bool_t           pixman_region32_union              (pixman_region32_t *new_reg,
532
497
                                                            pixman_region32_t *reg1,
533
498
                                                            pixman_region32_t *reg2);
534
499
pixman_bool_t           pixman_region32_union_rect         (pixman_region32_t *dest,
537
502
                                                            int                y,
538
503
                                                            unsigned int       width,
539
504
                                                            unsigned int       height);
540
 
pixman_bool_t           pixman_region32_subtract           (pixman_region32_t *regD,
541
 
                                                            pixman_region32_t *regM,
542
 
                                                            pixman_region32_t *regS);
543
 
pixman_bool_t           pixman_region32_inverse            (pixman_region32_t *newReg,
 
505
pixman_bool_t           pixman_region32_subtract           (pixman_region32_t *reg_d,
 
506
                                                            pixman_region32_t *reg_m,
 
507
                                                            pixman_region32_t *reg_s);
 
508
pixman_bool_t           pixman_region32_inverse            (pixman_region32_t *new_reg,
544
509
                                                            pixman_region32_t *reg1,
545
 
                                                            pixman_box32_t    *invRect);
 
510
                                                            pixman_box32_t    *inv_rect);
546
511
pixman_bool_t           pixman_region32_contains_point     (pixman_region32_t *region,
547
512
                                                            int                x,
548
513
                                                            int                y,
596
561
typedef uint32_t (* pixman_read_memory_func_t) (const void *src, int size);
597
562
typedef void     (* pixman_write_memory_func_t) (void *dst, uint32_t value, int size);
598
563
 
 
564
typedef void     (* pixman_image_destroy_func_t) (pixman_image_t *image, void *data);
 
565
 
599
566
struct pixman_gradient_stop {
600
567
    pixman_fixed_t x;
601
568
    pixman_color_t color;
647
614
#define PIXMAN_TYPE_GRAY        5
648
615
#define PIXMAN_TYPE_YUY2        6
649
616
#define PIXMAN_TYPE_YV12        7
 
617
#define PIXMAN_TYPE_BGRA        8
650
618
 
651
619
#define PIXMAN_FORMAT_COLOR(f)                          \
652
620
        (PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_ARGB ||   \
653
 
         PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_ABGR)
 
621
         PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_ABGR ||   \
 
622
         PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_BGRA)
654
623
 
655
624
/* 32bpp formats */
656
625
typedef enum {
657
 
    PIXMAN_a8r8g8b8 =   PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,8,8,8,8),
658
 
    PIXMAN_x8r8g8b8 =   PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,8,8,8),
659
 
    PIXMAN_a8b8g8r8 =   PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,8,8,8,8),
660
 
    PIXMAN_x8b8g8r8 =   PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,0,8,8,8),
 
626
    PIXMAN_a8r8g8b8 =    PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,8,8,8,8),
 
627
    PIXMAN_x8r8g8b8 =    PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,8,8,8),
 
628
    PIXMAN_a8b8g8r8 =    PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,8,8,8,8),
 
629
    PIXMAN_x8b8g8r8 =    PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,0,8,8,8),
 
630
    PIXMAN_b8g8r8a8 =    PIXMAN_FORMAT(32,PIXMAN_TYPE_BGRA,8,8,8,8),
 
631
    PIXMAN_b8g8r8x8 =    PIXMAN_FORMAT(32,PIXMAN_TYPE_BGRA,0,8,8,8),
 
632
    PIXMAN_x2r10g10b10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,10,10,10),
 
633
    PIXMAN_a2r10g10b10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,2,10,10,10),
661
634
    PIXMAN_x2b10g10r10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,0,10,10,10),
662
635
    PIXMAN_a2b10g10r10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,2,10,10,10),
663
636
 
664
637
/* 24bpp formats */
665
 
    PIXMAN_r8g8b8 =     PIXMAN_FORMAT(24,PIXMAN_TYPE_ARGB,0,8,8,8),
666
 
    PIXMAN_b8g8r8 =     PIXMAN_FORMAT(24,PIXMAN_TYPE_ABGR,0,8,8,8),
 
638
    PIXMAN_r8g8b8 =      PIXMAN_FORMAT(24,PIXMAN_TYPE_ARGB,0,8,8,8),
 
639
    PIXMAN_b8g8r8 =      PIXMAN_FORMAT(24,PIXMAN_TYPE_ABGR,0,8,8,8),
667
640
    
668
641
/* 16bpp formats */
669
 
    PIXMAN_r5g6b5 =     PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,6,5),
670
 
    PIXMAN_b5g6r5 =     PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,6,5),
 
642
    PIXMAN_r5g6b5 =      PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,6,5),
 
643
    PIXMAN_b5g6r5 =      PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,6,5),
671
644
    
672
 
    PIXMAN_a1r5g5b5 =   PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,1,5,5,5),
673
 
    PIXMAN_x1r5g5b5 =   PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,5,5),
674
 
    PIXMAN_a1b5g5r5 =   PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,1,5,5,5),
675
 
    PIXMAN_x1b5g5r5 =   PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,5,5),
676
 
    PIXMAN_a4r4g4b4 =   PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,4,4,4,4),
677
 
    PIXMAN_x4r4g4b4 =   PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,4,4,4),
678
 
    PIXMAN_a4b4g4r4 =   PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,4,4,4,4),
679
 
    PIXMAN_x4b4g4r4 =   PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,4,4,4),
 
645
    PIXMAN_a1r5g5b5 =    PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,1,5,5,5),
 
646
    PIXMAN_x1r5g5b5 =    PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,5,5),
 
647
    PIXMAN_a1b5g5r5 =    PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,1,5,5,5),
 
648
    PIXMAN_x1b5g5r5 =    PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,5,5),
 
649
    PIXMAN_a4r4g4b4 =    PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,4,4,4,4),
 
650
    PIXMAN_x4r4g4b4 =    PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,4,4,4),
 
651
    PIXMAN_a4b4g4r4 =    PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,4,4,4,4),
 
652
    PIXMAN_x4b4g4r4 =    PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,4,4,4),
680
653
    
681
654
/* 8bpp formats */
682
 
    PIXMAN_a8 =         PIXMAN_FORMAT(8,PIXMAN_TYPE_A,8,0,0,0),
683
 
    PIXMAN_r3g3b2 =     PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,0,3,3,2),
684
 
    PIXMAN_b2g3r3 =     PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,0,3,3,2),
685
 
    PIXMAN_a2r2g2b2 =   PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,2,2,2,2),
686
 
    PIXMAN_a2b2g2r2 =   PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,2,2,2,2),
687
 
    
688
 
    PIXMAN_c8 =         PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0),
689
 
    PIXMAN_g8 =         PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0),
690
 
    
691
 
    PIXMAN_x4a4 =       PIXMAN_FORMAT(8,PIXMAN_TYPE_A,4,0,0,0),
692
 
    
693
 
    PIXMAN_x4c4 =       PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0),
694
 
    PIXMAN_x4g4 =       PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0),
 
655
    PIXMAN_a8 =          PIXMAN_FORMAT(8,PIXMAN_TYPE_A,8,0,0,0),
 
656
    PIXMAN_r3g3b2 =      PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,0,3,3,2),
 
657
    PIXMAN_b2g3r3 =      PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,0,3,3,2),
 
658
    PIXMAN_a2r2g2b2 =    PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,2,2,2,2),
 
659
    PIXMAN_a2b2g2r2 =    PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,2,2,2,2),
 
660
    
 
661
    PIXMAN_c8 =          PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0),
 
662
    PIXMAN_g8 =          PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0),
 
663
    
 
664
    PIXMAN_x4a4 =        PIXMAN_FORMAT(8,PIXMAN_TYPE_A,4,0,0,0),
 
665
    
 
666
    PIXMAN_x4c4 =        PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0),
 
667
    PIXMAN_x4g4 =        PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0),
695
668
    
696
669
/* 4bpp formats */
697
 
    PIXMAN_a4 =         PIXMAN_FORMAT(4,PIXMAN_TYPE_A,4,0,0,0),
698
 
    PIXMAN_r1g2b1 =     PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,0,1,2,1),
699
 
    PIXMAN_b1g2r1 =     PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,0,1,2,1),
700
 
    PIXMAN_a1r1g1b1 =   PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,1,1,1,1),
701
 
    PIXMAN_a1b1g1r1 =   PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,1,1,1,1),
 
670
    PIXMAN_a4 =          PIXMAN_FORMAT(4,PIXMAN_TYPE_A,4,0,0,0),
 
671
    PIXMAN_r1g2b1 =      PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,0,1,2,1),
 
672
    PIXMAN_b1g2r1 =      PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,0,1,2,1),
 
673
    PIXMAN_a1r1g1b1 =    PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,1,1,1,1),
 
674
    PIXMAN_a1b1g1r1 =    PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,1,1,1,1),
702
675
    
703
 
    PIXMAN_c4 =         PIXMAN_FORMAT(4,PIXMAN_TYPE_COLOR,0,0,0,0),
704
 
    PIXMAN_g4 =         PIXMAN_FORMAT(4,PIXMAN_TYPE_GRAY,0,0,0,0),
 
676
    PIXMAN_c4 =          PIXMAN_FORMAT(4,PIXMAN_TYPE_COLOR,0,0,0,0),
 
677
    PIXMAN_g4 =          PIXMAN_FORMAT(4,PIXMAN_TYPE_GRAY,0,0,0,0),
705
678
    
706
679
/* 1bpp formats */
707
 
    PIXMAN_a1 =         PIXMAN_FORMAT(1,PIXMAN_TYPE_A,1,0,0,0),
 
680
    PIXMAN_a1 =          PIXMAN_FORMAT(1,PIXMAN_TYPE_A,1,0,0,0),
708
681
    
709
 
    PIXMAN_g1 =         PIXMAN_FORMAT(1,PIXMAN_TYPE_GRAY,0,0,0,0),
 
682
    PIXMAN_g1 =          PIXMAN_FORMAT(1,PIXMAN_TYPE_GRAY,0,0,0,0),
710
683
 
711
684
/* YUV formats */
712
 
    PIXMAN_yuy2 =       PIXMAN_FORMAT(16,PIXMAN_TYPE_YUY2,0,0,0,0),
713
 
    PIXMAN_yv12 =       PIXMAN_FORMAT(12,PIXMAN_TYPE_YV12,0,0,0,0)
 
685
    PIXMAN_yuy2 =        PIXMAN_FORMAT(16,PIXMAN_TYPE_YUY2,0,0,0,0),
 
686
    PIXMAN_yv12 =        PIXMAN_FORMAT(12,PIXMAN_TYPE_YV12,0,0,0,0)
714
687
} pixman_format_code_t;
715
688
 
716
689
/* Querying supported format values. */
743
716
pixman_image_t *pixman_image_ref                     (pixman_image_t               *image);
744
717
pixman_bool_t   pixman_image_unref                   (pixman_image_t               *image);
745
718
 
 
719
void            pixman_image_set_destroy_function    (pixman_image_t               *image,
 
720
                                                      pixman_image_destroy_func_t   function,
 
721
                                                      void                         *data);
746
722
 
747
723
/* Set properties */
748
724
pixman_bool_t   pixman_image_set_clip_region         (pixman_image_t               *image,
775
751
uint32_t       *pixman_image_get_data                (pixman_image_t               *image);
776
752
int             pixman_image_get_width               (pixman_image_t               *image);
777
753
int             pixman_image_get_height              (pixman_image_t               *image);
778
 
int             pixman_image_get_stride              (pixman_image_t               *image);
 
754
int             pixman_image_get_stride              (pixman_image_t               *image); /* in bytes */
779
755
int             pixman_image_get_depth               (pixman_image_t               *image);
780
756
pixman_bool_t   pixman_image_fill_rectangles         (pixman_op_t                   op,
781
757
                                                      pixman_image_t               *image,
784
760
                                                      const pixman_rectangle16_t   *rects);
785
761
 
786
762
/* Composite */
787
 
pixman_bool_t pixman_compute_composite_region (pixman_region16_t *pRegion,
788
 
                                               pixman_image_t    *pSrc,
789
 
                                               pixman_image_t    *pMask,
790
 
                                               pixman_image_t    *pDst,
791
 
                                               int16_t            xSrc,
792
 
                                               int16_t            ySrc,
793
 
                                               int16_t            xMask,
794
 
                                               int16_t            yMask,
795
 
                                               int16_t            xDst,
796
 
                                               int16_t            yDst,
 
763
pixman_bool_t pixman_compute_composite_region (pixman_region16_t *region,
 
764
                                               pixman_image_t    *src_image,
 
765
                                               pixman_image_t    *mask_image,
 
766
                                               pixman_image_t    *dst_image,
 
767
                                               int16_t            src_x,
 
768
                                               int16_t            src_y,
 
769
                                               int16_t            mask_x,
 
770
                                               int16_t            mask_y,
 
771
                                               int16_t            dest_x,
 
772
                                               int16_t            dest_y,
797
773
                                               uint16_t           width,
798
774
                                               uint16_t           height);
799
775
void          pixman_image_composite          (pixman_op_t        op,
809
785
                                               uint16_t           width,
810
786
                                               uint16_t           height);
811
787
 
 
788
/* Old X servers rely on out-of-bounds accesses when they are asked
 
789
 * to composite with a window as the source. They create a pixman image
 
790
 * pointing to some bogus position in memory, but then they set a clip
 
791
 * region to the position where the actual bits are.
 
792
 *
 
793
 * Due to a bug in old versions of pixman, where it would not clip
 
794
 * against the image bounds when a clip region was set, this would
 
795
 * actually work. So by default we allow certain out-of-bound access
 
796
 * to happen unless explicitly disabled.
 
797
 *
 
798
 * Fixed X servers should call this function to disable the workaround.
 
799
 */
 
800
void          pixman_disable_out_of_bounds_workaround (void);
 
801
 
812
802
/*
813
803
 * Trapezoids
814
804
 */
826
816
{
827
817
    pixman_fixed_t      x;
828
818
    pixman_fixed_t      e;
829
 
    pixman_fixed_t   stepx;
830
 
    pixman_fixed_t   signdx;
831
 
    pixman_fixed_t   dy;
832
 
    pixman_fixed_t   dx;
 
819
    pixman_fixed_t      stepx;
 
820
    pixman_fixed_t      signdx;
 
821
    pixman_fixed_t      dy;
 
822
    pixman_fixed_t      dx;
833
823
 
834
 
    pixman_fixed_t   stepx_small;
835
 
    pixman_fixed_t   stepx_big;
836
 
    pixman_fixed_t   dx_small;
837
 
    pixman_fixed_t   dx_big;
 
824
    pixman_fixed_t      stepx_small;
 
825
    pixman_fixed_t      stepx_big;
 
826
    pixman_fixed_t      dx_small;
 
827
    pixman_fixed_t      dx_big;
838
828
};
839
829
 
840
830
struct pixman_trapezoid
841
831
{
842
 
    pixman_fixed_t  top, bottom;
 
832
    pixman_fixed_t      top, bottom;
843
833
    pixman_line_fixed_t left, right;
844
834
};
845
835
 
846
836
 
847
837
/* whether 't' is a well defined not obviously empty trapezoid */
848
 
#define pixman_trapezoid_valid(t)                               \
 
838
#define pixman_trapezoid_valid(t)                                  \
849
839
    ((t)->left.p1.y != (t)->left.p2.y &&                           \
850
840
     (t)->right.p1.y != (t)->right.p2.y &&                         \
851
841
     (int) ((t)->bottom - (t)->top) > 0)
899
889
                                            int                        x_off,
900
890
                                            int                        y_off);
901
891
 
902
 
 
903
892
#endif /* PIXMAN_H__ */