166
166
/* forward declaration (sorry) */
167
167
struct pixman_box16;
170
pixman_transform_init_identity(struct pixman_transform *matrix);
173
pixman_transform_point_3d (const struct pixman_transform *transform,
174
struct pixman_vector *vector);
177
pixman_transform_point(const struct pixman_transform *transform,
178
struct pixman_vector *vector);
181
pixman_transform_multiply (struct pixman_transform *dst,
182
const struct pixman_transform *l,
183
const struct pixman_transform *r);
186
pixman_transform_init_scale (struct pixman_transform *t,
191
pixman_transform_scale(struct pixman_transform *forward,
192
struct pixman_transform *reverse,
193
pixman_fixed_t sx, pixman_fixed_t sy);
196
pixman_transform_init_rotate(struct pixman_transform *t,
201
pixman_transform_rotate(struct pixman_transform *forward,
202
struct pixman_transform *reverse,
203
pixman_fixed_t c, pixman_fixed_t s);
206
pixman_transform_init_translate(struct pixman_transform *t,
207
pixman_fixed_t tx, pixman_fixed_t ty);
211
pixman_transform_translate(struct pixman_transform *forward,
212
struct pixman_transform *reverse,
213
pixman_fixed_t tx, pixman_fixed_t ty);
216
pixman_transform_bounds(const struct pixman_transform *matrix,
217
struct pixman_box16 *b);
221
pixman_transform_invert (struct pixman_transform *dst,
222
const struct pixman_transform *src);
225
pixman_transform_is_identity(const struct pixman_transform *t);
228
pixman_transform_is_scale(const struct pixman_transform *t);
231
pixman_transform_is_int_translate(const struct pixman_transform *t);
234
pixman_transform_is_inverse (const struct pixman_transform *a,
235
const struct pixman_transform *b);
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,
180
pixman_bool_t pixman_transform_scale (struct pixman_transform *forward,
181
struct pixman_transform *reverse,
184
void pixman_transform_init_rotate (struct pixman_transform *t,
187
pixman_bool_t pixman_transform_rotate (struct pixman_transform *forward,
188
struct pixman_transform *reverse,
191
void pixman_transform_init_translate (struct pixman_transform *t,
194
pixman_bool_t pixman_transform_translate (struct pixman_transform *forward,
195
struct pixman_transform *reverse,
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);
239
209
* Floating point matrices
241
struct pixman_f_vector {
211
struct pixman_f_vector
245
struct pixman_f_transform {
216
struct pixman_f_transform
250
pixman_transform_from_pixman_f_transform (struct pixman_transform *t,
251
const struct pixman_f_transform *ft);
254
pixman_f_transform_from_pixman_transform (struct pixman_f_transform *ft,
255
const struct pixman_transform *t);
258
pixman_transform_from_pixman_f_transform (struct pixman_transform *t,
259
const struct pixman_f_transform *ft);
262
pixman_f_transform_invert (struct pixman_f_transform *dst,
263
const struct pixman_f_transform *src);
266
pixman_f_transform_point (const struct pixman_f_transform *t,
267
struct pixman_f_vector *v);
270
pixman_f_transform_point_3d (const struct pixman_f_transform *t,
271
struct pixman_f_vector *v);
275
pixman_f_transform_multiply (struct pixman_f_transform *dst,
276
const struct pixman_f_transform *l,
277
const struct pixman_f_transform *r);
280
pixman_f_transform_init_scale (struct pixman_f_transform *t, double sx, double sy);
283
pixman_f_transform_scale (struct pixman_f_transform *forward,
284
struct pixman_f_transform *reverse,
285
double sx, double sy);
288
pixman_f_transform_init_rotate (struct pixman_f_transform *t, double cos, double sin);
291
pixman_f_transform_rotate (struct pixman_f_transform *forward,
292
struct pixman_f_transform *reverse,
296
pixman_f_transform_init_translate (struct pixman_f_transform *t, double tx, double ty);
299
pixman_f_transform_translate (struct pixman_f_transform *forward,
300
struct pixman_f_transform *reverse,
301
double tx, double ty);
304
pixman_f_transform_bounds (const struct pixman_f_transform *t, struct pixman_box16 *b);
307
pixman_f_transform_init_identity (struct pixman_f_transform *t);
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,
237
pixman_bool_t pixman_f_transform_scale (struct pixman_f_transform *forward,
238
struct pixman_f_transform *reverse,
241
void pixman_f_transform_init_rotate (struct pixman_f_transform *t,
244
pixman_bool_t pixman_f_transform_rotate (struct pixman_f_transform *forward,
245
struct pixman_f_transform *reverse,
248
void pixman_f_transform_init_translate (struct pixman_f_transform *t,
251
pixman_bool_t pixman_f_transform_translate (struct pixman_f_transform *forward,
252
struct pixman_f_transform *reverse,
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);
312
261
PIXMAN_REPEAT_NONE,
409
375
PIXMAN_REGION_PART
410
376
} pixman_region_overlap_t;
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.
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);
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);
420
385
/* creation/destruction */
421
void pixman_region_init (pixman_region16_t *region);
422
void pixman_region_init_rect (pixman_region16_t *region,
426
unsigned int height);
427
pixman_bool_t pixman_region_init_rects (pixman_region16_t *region,
428
pixman_box16_t *boxes,
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,
391
unsigned int height);
392
pixman_bool_t pixman_region_init_rects (pixman_region16_t *region,
393
pixman_box16_t *boxes,
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);
435
401
/* manipulation */
436
void pixman_region_translate (pixman_region16_t *region,
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,
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,
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,
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);
402
void pixman_region_translate (pixman_region16_t *region,
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,
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,
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,
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);
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
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)
655
624
/* 32bpp formats */
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),
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),
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),
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),
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),
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),
691
PIXMAN_x4a4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_A,4,0,0,0),
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),
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),
664
PIXMAN_x4a4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_A,4,0,0,0),
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),
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),
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),
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),
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),
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;
716
689
/* Querying supported format values. */