1 #ifndef CLIB_PIXMAN_PROTOS_H 2 #define CLIB_PIXMAN_PROTOS_H 3 4 /* 5 pixman.library C prototypes 6 7 Copyright © 2009-2026 The MorphOS Development Team, All Rights Reserved. 8 */ 9 10 #ifndef LIBRARIES_PIXMAN_H 11 # include <libraries/pixman.h> 12 #endif 13 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 void pixman_transform_init_identity (struct pixman_transform *matrix); 20 pixman_bool_t pixman_transform_point_3d (const struct pixman_transform *transform, 21 struct pixman_vector *vector); 22 pixman_bool_t pixman_transform_point (const struct pixman_transform *transform, 23 struct pixman_vector *vector); 24 pixman_bool_t pixman_transform_multiply (struct pixman_transform *dst, 25 const struct pixman_transform *l, 26 const struct pixman_transform *r); 27 void pixman_transform_init_scale (struct pixman_transform *t, 28 pixman_fixed_t sx, 29 pixman_fixed_t sy); 30 pixman_bool_t pixman_transform_scale (struct pixman_transform *forward, 31 struct pixman_transform *reverse, 32 pixman_fixed_t sx, 33 pixman_fixed_t sy); 34 void pixman_transform_init_rotate (struct pixman_transform *t, 35 pixman_fixed_t cos, 36 pixman_fixed_t sin); 37 pixman_bool_t pixman_transform_rotate (struct pixman_transform *forward, 38 struct pixman_transform *reverse, 39 pixman_fixed_t c, 40 pixman_fixed_t s); 41 void pixman_transform_init_translate (struct pixman_transform *t, 42 pixman_fixed_t tx, 43 pixman_fixed_t ty); 44 pixman_bool_t pixman_transform_translate (struct pixman_transform *forward, 45 struct pixman_transform *reverse, 46 pixman_fixed_t tx, 47 pixman_fixed_t ty); 48 pixman_bool_t pixman_transform_bounds (const struct pixman_transform *matrix, 49 struct pixman_box16 *b); 50 pixman_bool_t pixman_transform_invert (struct pixman_transform *dst, 51 const struct pixman_transform *src); 52 pixman_bool_t pixman_transform_is_identity (const struct pixman_transform *t); 53 pixman_bool_t pixman_transform_is_scale (const struct pixman_transform *t); 54 pixman_bool_t pixman_transform_is_int_translate (const struct pixman_transform *t); 55 pixman_bool_t pixman_transform_is_inverse (const struct pixman_transform *a, 56 const struct pixman_transform *b); 57 58 pixman_bool_t pixman_transform_from_pixman_f_transform (struct pixman_transform *t, 59 const struct pixman_f_transform *ft); 60 void pixman_f_transform_from_pixman_transform (struct pixman_f_transform *ft, 61 const struct pixman_transform *t); 62 pixman_bool_t pixman_f_transform_invert (struct pixman_f_transform *dst, 63 const struct pixman_f_transform *src); 64 pixman_bool_t pixman_f_transform_point (const struct pixman_f_transform *t, 65 struct pixman_f_vector *v); 66 void pixman_f_transform_point_3d (const struct pixman_f_transform *t, 67 struct pixman_f_vector *v); 68 void pixman_f_transform_multiply (struct pixman_f_transform *dst, 69 const struct pixman_f_transform *l, 70 const struct pixman_f_transform *r); 71 void pixman_f_transform_init_scale (struct pixman_f_transform *t, 72 double sx, 73 double sy); 74 pixman_bool_t pixman_f_transform_scale (struct pixman_f_transform *forward, 75 struct pixman_f_transform *reverse, 76 double sx, 77 double sy); 78 void pixman_f_transform_init_rotate (struct pixman_f_transform *t, 79 double cos, 80 double sin); 81 pixman_bool_t pixman_f_transform_rotate (struct pixman_f_transform *forward, 82 struct pixman_f_transform *reverse, 83 double c, 84 double s); 85 void pixman_f_transform_init_translate (struct pixman_f_transform *t, 86 double tx, 87 double ty); 88 pixman_bool_t pixman_f_transform_translate (struct pixman_f_transform *forward, 89 struct pixman_f_transform *reverse, 90 double tx, 91 double ty); 92 pixman_bool_t pixman_f_transform_bounds (const struct pixman_f_transform *t, 93 struct pixman_box16 *b); 94 void pixman_f_transform_init_identity (struct pixman_f_transform *t); 95 96 void pixman_region_init (pixman_region16_t *region); 97 void pixman_region_init_rect (pixman_region16_t *region, 98 int x, 99 int y, 100 unsigned int width, 101 unsigned int height); 102 pixman_bool_t pixman_region_init_rects (pixman_region16_t *region, 103 const pixman_box16_t *boxes, 104 int count); 105 void pixman_region_init_with_extents (pixman_region16_t *region, 106 const pixman_box16_t *extents); 107 void pixman_region_init_from_image (pixman_region16_t *region, 108 pixman_image_t *image); 109 void pixman_region_fini (pixman_region16_t *region); 110 111 void pixman_region_translate (pixman_region16_t *region, 112 int x, 113 int y); 114 pixman_bool_t pixman_region_copy (pixman_region16_t *dest, 115 const pixman_region16_t *source); 116 pixman_bool_t pixman_region_intersect (pixman_region16_t *new_reg, 117 const pixman_region16_t *reg1, 118 const pixman_region16_t *reg2); 119 pixman_bool_t pixman_region_union (pixman_region16_t *new_reg, 120 const pixman_region16_t *reg1, 121 const pixman_region16_t *reg2); 122 pixman_bool_t pixman_region_union_rect (pixman_region16_t *dest, 123 const pixman_region16_t *source, 124 int x, 125 int y, 126 unsigned int width, 127 unsigned int height); 128 pixman_bool_t pixman_region_intersect_rect (pixman_region16_t *dest, 129 const pixman_region16_t *source, 130 int x, 131 int y, 132 unsigned int width, 133 unsigned int height); 134 pixman_bool_t pixman_region_subtract (pixman_region16_t *reg_d, 135 const pixman_region16_t *reg_m, 136 const pixman_region16_t *reg_s); 137 pixman_bool_t pixman_region_inverse (pixman_region16_t *new_reg, 138 const pixman_region16_t *reg1, 139 const pixman_box16_t *inv_rect); 140 pixman_bool_t pixman_region_contains_point (const pixman_region16_t *region, 141 int x, 142 int y, 143 pixman_box16_t *box); 144 pixman_region_overlap_t pixman_region_contains_rectangle (const pixman_region16_t *region, 145 const pixman_box16_t *prect); 146 pixman_bool_t pixman_region_empty (const pixman_region16_t *region); 147 pixman_bool_t pixman_region_not_empty (const pixman_region16_t *region); 148 pixman_box16_t * pixman_region_extents (const pixman_region16_t *region); 149 int pixman_region_n_rects (const pixman_region16_t *region); 150 pixman_box16_t * pixman_region_rectangles (const pixman_region16_t *region, 151 int *n_rects); 152 pixman_bool_t pixman_region_equal (const pixman_region16_t *region1, 153 const pixman_region16_t *region2); 154 pixman_bool_t pixman_region_selfcheck (pixman_region16_t *region); 155 void pixman_region_reset (pixman_region16_t *region, 156 const pixman_box16_t *box); 157 158 void pixman_region32_init (pixman_region32_t *region); 159 void pixman_region32_init_rect (pixman_region32_t *region, 160 int x, 161 int y, 162 unsigned int width, 163 unsigned int height); 164 pixman_bool_t pixman_region32_init_rects (pixman_region32_t *region, 165 const pixman_box32_t *boxes, 166 int count); 167 void pixman_region32_init_with_extents (pixman_region32_t *region, 168 const pixman_box32_t *extents); 169 void pixman_region32_init_from_image (pixman_region32_t *region, 170 pixman_image_t *image); 171 void pixman_region32_fini (pixman_region32_t *region); 172 173 void pixman_region32_translate (pixman_region32_t *region, 174 int x, 175 int y); 176 pixman_bool_t pixman_region32_copy (pixman_region32_t *dest, 177 const pixman_region32_t *source); 178 pixman_bool_t pixman_region32_intersect (pixman_region32_t *new_reg, 179 const pixman_region32_t *reg1, 180 const pixman_region32_t *reg2); 181 pixman_bool_t pixman_region32_union (pixman_region32_t *new_reg, 182 const pixman_region32_t *reg1, 183 const pixman_region32_t *reg2); 184 pixman_bool_t pixman_region32_intersect_rect (pixman_region32_t *dest, 185 const pixman_region32_t *source, 186 int x, 187 int y, 188 unsigned int width, 189 unsigned int height); 190 pixman_bool_t pixman_region32_union_rect (pixman_region32_t *dest, 191 const pixman_region32_t *source, 192 int x, 193 int y, 194 unsigned int width, 195 unsigned int height); 196 pixman_bool_t pixman_region32_subtract (pixman_region32_t *reg_d, 197 const pixman_region32_t *reg_m, 198 const pixman_region32_t *reg_s); 199 pixman_bool_t pixman_region32_inverse (pixman_region32_t *new_reg, 200 const pixman_region32_t *reg1, 201 const pixman_box32_t *inv_rect); 202 pixman_bool_t pixman_region32_contains_point (const pixman_region32_t *region, 203 int x, 204 int y, 205 pixman_box32_t *box); 206 pixman_region_overlap_t pixman_region32_contains_rectangle (const pixman_region32_t *region, 207 const pixman_box32_t *prect); 208 pixman_bool_t pixman_region32_empty (const pixman_region32_t *region); 209 pixman_bool_t pixman_region32_not_empty (const pixman_region32_t *region); 210 pixman_box32_t * pixman_region32_extents (const pixman_region32_t *region); 211 int pixman_region32_n_rects (const pixman_region32_t *region); 212 pixman_box32_t * pixman_region32_rectangles (const pixman_region32_t *region, 213 int *n_rects); 214 pixman_bool_t pixman_region32_equal (const pixman_region32_t *region1, 215 const pixman_region32_t *region2); 216 pixman_bool_t pixman_region32_selfcheck (pixman_region32_t *region); 217 void pixman_region32_reset (pixman_region32_t *region, 218 const pixman_box32_t *box); 219 220 void pixman_region64f_init (pixman_region64f_t *region); 221 void pixman_region64f_init_rect (pixman_region64f_t *region, 222 int x, 223 int y, 224 unsigned int width, 225 unsigned int height); 226 void pixman_region64f_init_rectf (pixman_region64f_t *region, 227 double x, 228 double y, 229 double width, 230 double height); 231 pixman_bool_t pixman_region64f_init_rects (pixman_region64f_t *region, 232 const pixman_box64f_t *boxes, 233 int count); 234 void pixman_region64f_init_with_extents (pixman_region64f_t *region, 235 const pixman_box64f_t *extents); 236 void pixman_region64f_init_from_image (pixman_region64f_t *region, 237 pixman_image_t *image); 238 void pixman_region64f_fini (pixman_region64f_t *region); 239 void pixman_region64f_translate (pixman_region64f_t *region, 240 int x, 241 int y); 242 void pixman_region64f_translatef (pixman_region64f_t *region, 243 double x, 244 double y); 245 pixman_bool_t pixman_region64f_copy (pixman_region64f_t *dest, 246 const pixman_region64f_t *source); 247 pixman_bool_t pixman_region64f_intersect (pixman_region64f_t *new_reg, 248 const pixman_region64f_t *reg1, 249 const pixman_region64f_t *reg2); 250 pixman_bool_t pixman_region64f_union (pixman_region64f_t *new_reg, 251 const pixman_region64f_t *reg1, 252 const pixman_region64f_t *reg2); 253 pixman_bool_t pixman_region64f_intersect_rect (pixman_region64f_t *dest, 254 const pixman_region64f_t *source, 255 int x, 256 int y, 257 unsigned int width, 258 unsigned int height); 259 pixman_bool_t pixman_region64f_intersect_rectf (pixman_region64f_t *dest, 260 const pixman_region64f_t *source, 261 double x, 262 double y, 263 double width, 264 double height); 265 pixman_bool_t pixman_region64f_union_rect (pixman_region64f_t *dest, 266 const pixman_region64f_t *source, 267 int x, 268 int y, 269 unsigned int width, 270 unsigned int height); 271 pixman_bool_t pixman_region64f_union_rectf (pixman_region64f_t *dest, 272 const pixman_region64f_t *source, 273 double x, 274 double y, 275 double width, 276 double height); 277 pixman_bool_t pixman_region64f_subtract (pixman_region64f_t *reg_d, 278 const pixman_region64f_t *reg_m, 279 const pixman_region64f_t *reg_s); 280 pixman_bool_t pixman_region64f_inverse (pixman_region64f_t *new_reg, 281 const pixman_region64f_t *reg1, 282 const pixman_box64f_t *inv_rect); 283 pixman_bool_t pixman_region64f_contains_point (const pixman_region64f_t *region, 284 int x, 285 int y, 286 pixman_box64f_t *box); 287 pixman_bool_t pixman_region64f_contains_pointf (const pixman_region64f_t *region, 288 double x, 289 double y, 290 pixman_box64f_t *box); 291 pixman_region_overlap_t pixman_region64f_contains_rectangle(const pixman_region64f_t *region, 292 const pixman_box64f_t *prect); 293 pixman_bool_t pixman_region64f_empty (const pixman_region64f_t *region); 294 pixman_bool_t pixman_region64f_not_empty (const pixman_region64f_t *region); 295 pixman_box64f_t * pixman_region64f_extents (const pixman_region64f_t *region); 296 int pixman_region64f_n_rects (const pixman_region64f_t *region); 297 pixman_box64f_t * pixman_region64f_rectangles (const pixman_region64f_t *region, 298 int *n_rects); 299 pixman_bool_t pixman_region64f_equal (const pixman_region64f_t *region1, 300 const pixman_region64f_t *region2); 301 pixman_bool_t pixman_region64f_selfcheck (pixman_region64f_t *region); 302 void pixman_region64f_reset (pixman_region64f_t *region, 303 const pixman_box64f_t *box); 304 void pixman_region64f_clear (pixman_region64f_t *region); 305 pixman_bool_t pixman_blt (uint32_t *src_bits, 306 uint32_t *dst_bits, 307 int src_stride, 308 int dst_stride, 309 int src_bpp, 310 int dst_bpp, 311 int src_x, 312 int src_y, 313 int dest_x, 314 int dest_y, 315 int width, 316 int height); 317 pixman_bool_t pixman_fill (uint32_t *bits, 318 int stride, 319 int bpp, 320 int x, 321 int y, 322 int width, 323 int height, 324 uint32_t _xor); 325 326 int pixman_version (void); 327 const char* pixman_version_string (void); 328 329 pixman_bool_t pixman_format_supported_destination (pixman_format_code_t format); 330 pixman_bool_t pixman_format_supported_source (pixman_format_code_t format); 331 332 pixman_image_t *pixman_image_create_solid_fill (const pixman_color_t *color); 333 pixman_image_t *pixman_image_create_linear_gradient (const pixman_point_fixed_t *p1, 334 const pixman_point_fixed_t *p2, 335 const pixman_gradient_stop_t *stops, 336 int n_stops); 337 pixman_image_t *pixman_image_create_radial_gradient (const pixman_point_fixed_t *inner, 338 const pixman_point_fixed_t *outer, 339 pixman_fixed_t inner_radius, 340 pixman_fixed_t outer_radius, 341 const pixman_gradient_stop_t *stops, 342 int n_stops); 343 pixman_image_t *pixman_image_create_conical_gradient (const pixman_point_fixed_t *center, 344 pixman_fixed_t angle, 345 const pixman_gradient_stop_t *stops, 346 int n_stops); 347 pixman_image_t *pixman_image_create_bits (pixman_format_code_t format, 348 int width, 349 int height, 350 uint32_t *bits, 351 int rowstride_bytes); 352 353 pixman_image_t *pixman_image_ref (pixman_image_t *image); 354 pixman_bool_t pixman_image_unref (pixman_image_t *image); 355 356 void pixman_image_set_destroy_function (pixman_image_t *image, 357 pixman_image_destroy_func_t function, 358 void *data); 359 void * pixman_image_get_destroy_data (pixman_image_t *image); 360 361 pixman_bool_t pixman_image_set_clip_region (pixman_image_t *image, 362 const pixman_region16_t *region); 363 pixman_bool_t pixman_image_set_clip_region32 (pixman_image_t *image, 364 const pixman_region32_t *region); 365 pixman_bool_t pixman_image_set_clip_region64f (pixman_image_t *image, 366 const pixman_region64f_t *region); 367 void pixman_image_set_has_client_clip (pixman_image_t *image, 368 pixman_bool_t clien_clip); 369 pixman_bool_t pixman_image_set_transform (pixman_image_t *image, 370 const pixman_transform_t *transform); 371 void pixman_image_set_repeat (pixman_image_t *image, 372 pixman_repeat_t repeat); 373 void pixman_image_set_dither (pixman_image_t *image, 374 pixman_dither_t dither); 375 void pixman_image_set_dither_offset (pixman_image_t *image, 376 int offset_x, 377 int offset_y); 378 pixman_bool_t pixman_image_set_filter (pixman_image_t *image, 379 pixman_filter_t filter, 380 const pixman_fixed_t *filter_params, 381 int n_filter_params); 382 void pixman_image_set_source_clipping (pixman_image_t *image, 383 pixman_bool_t source_clipping); 384 void pixman_image_set_alpha_map (pixman_image_t *image, 385 pixman_image_t *alpha_map, 386 int16_t x, 387 int16_t y); 388 void pixman_image_set_component_alpha (pixman_image_t *image, 389 pixman_bool_t component_alpha); 390 pixman_bool_t pixman_image_get_component_alpha (pixman_image_t *image); 391 void pixman_image_set_accessors (pixman_image_t *image, 392 pixman_read_memory_func_t read_func, 393 pixman_write_memory_func_t write_func); 394 void pixman_image_set_indexed (pixman_image_t *image, 395 const pixman_indexed_t *indexed); 396 uint32_t *pixman_image_get_data (pixman_image_t *image); 397 int pixman_image_get_width (pixman_image_t *image); 398 int pixman_image_get_height (pixman_image_t *image); 399 int pixman_image_get_stride (pixman_image_t *image); /* in bytes */ 400 int pixman_image_get_depth (pixman_image_t *image); 401 pixman_format_code_t pixman_image_get_format (pixman_image_t *image); 402 pixman_bool_t pixman_image_fill_rectangles (pixman_op_t op, 403 pixman_image_t *image, 404 const pixman_color_t *color, 405 int n_rects, 406 const pixman_rectangle16_t *rects); 407 pixman_bool_t pixman_image_fill_boxes (pixman_op_t op, 408 pixman_image_t *dest, 409 const pixman_color_t *color, 410 int n_boxes, 411 const pixman_box32_t *boxes); 412 413 pixman_bool_t pixman_compute_composite_region (pixman_region16_t *region, 414 pixman_image_t *src_image, 415 pixman_image_t *mask_image, 416 pixman_image_t *dest_image, 417 int16_t src_x, 418 int16_t src_y, 419 int16_t mask_x, 420 int16_t mask_y, 421 int16_t dest_x, 422 int16_t dest_y, 423 uint16_t width, 424 uint16_t height); 425 void pixman_image_composite (pixman_op_t op, 426 pixman_image_t *src, 427 pixman_image_t *mask, 428 pixman_image_t *dest, 429 int16_t src_x, 430 int16_t src_y, 431 int16_t mask_x, 432 int16_t mask_y, 433 int16_t dest_x, 434 int16_t dest_y, 435 uint16_t width, 436 uint16_t height); 437 void pixman_image_composite32 (pixman_op_t op, 438 pixman_image_t *src, 439 pixman_image_t *mask, 440 pixman_image_t *dest, 441 int32_t src_x, 442 int32_t src_y, 443 int32_t mask_x, 444 int32_t mask_y, 445 int32_t dest_x, 446 int32_t dest_y, 447 int32_t width, 448 int32_t height); 449 void pixman_image_composite64f (pixman_op_t op, 450 pixman_image_t *src, 451 pixman_image_t *mask, 452 pixman_image_t *dest, 453 double src_x, 454 double src_y, 455 double mask_x, 456 double mask_y, 457 double dest_x, 458 double dest_y, 459 double width, 460 double height); 461 462 pixman_fixed_t pixman_sample_ceil_y (pixman_fixed_t y, 463 int bpp); 464 pixman_fixed_t pixman_sample_floor_y (pixman_fixed_t y, 465 int bpp); 466 void pixman_edge_step (pixman_edge_t *e, 467 int n); 468 void pixman_edge_init (pixman_edge_t *e, 469 int bpp, 470 pixman_fixed_t y_start, 471 pixman_fixed_t x_top, 472 pixman_fixed_t y_top, 473 pixman_fixed_t x_bot, 474 pixman_fixed_t y_bot); 475 void pixman_line_fixed_edge_init (pixman_edge_t *e, 476 int bpp, 477 pixman_fixed_t y, 478 const pixman_line_fixed_t *line, 479 int x_off, 480 int y_off); 481 void pixman_rasterize_edges (pixman_image_t *image, 482 pixman_edge_t *l, 483 pixman_edge_t *r, 484 pixman_fixed_t t, 485 pixman_fixed_t b); 486 void pixman_add_traps (pixman_image_t *image, 487 int16_t x_off, 488 int16_t y_off, 489 int ntrap, 490 const pixman_trap_t *traps); 491 void pixman_add_trapezoids (pixman_image_t *image, 492 int16_t x_off, 493 int y_off, 494 int ntraps, 495 const pixman_trapezoid_t *traps); 496 void pixman_rasterize_trapezoid (pixman_image_t *image, 497 const pixman_trapezoid_t *trap, 498 int x_off, 499 int y_off); 500 void pixman_composite_trapezoids (pixman_op_t op, 501 pixman_image_t * src, 502 pixman_image_t * dst, 503 pixman_format_code_t mask_format, 504 int x_src, 505 int y_src, 506 int x_dst, 507 int y_dst, 508 int n_traps, 509 const pixman_trapezoid_t * traps); 510 void pixman_composite_triangles (pixman_op_t op, 511 pixman_image_t * src, 512 pixman_image_t * dst, 513 pixman_format_code_t mask_format, 514 int x_src, 515 int y_src, 516 int x_dst, 517 int y_dst, 518 int n_tris, 519 const pixman_triangle_t * tris); 520 void pixman_add_triangles (pixman_image_t *image, 521 int32_t x_off, 522 int32_t y_off, 523 int n_tris, 524 const pixman_triangle_t *tris); 525 526 527 pixman_fixed_t * 528 pixman_filter_create_separable_convolution (int *n_values, 529 pixman_fixed_t scale_x, 530 pixman_fixed_t scale_y, 531 pixman_kernel_t reconstruct_x, 532 pixman_kernel_t reconstruct_y, 533 pixman_kernel_t sample_x, 534 pixman_kernel_t sample_y, 535 int subsample_bits_x, 536 int subsample_bits_y); 537 538 #ifdef __cplusplus 539 } 540 #endif 541 542 #endif /* CLIB_PIXMAN_PROTOS_H */