Picasso API 2.5
picasso.h
Go to the documentation of this file.
1
18
19#ifndef _PICASSO_H_
20#define _PICASSO_H_
21
22#ifdef DLL_EXPORT
23 #if defined(WIN32) || defined(WINCE)
24 #ifdef EXPORT
25 #define PICAPI
26 #define PEXPORT __declspec(dllexport)
27 #else
28 #define PICAPI
29 #define PEXPORT __declspec(dllimport)
30 #endif
31 #else
32 #define PICAPI
33 #if (defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))) || (defined(__clang__))
34 #define PEXPORT __attribute__((visibility("default")))
35 #else
36 #define PEXPORT
37 #endif
38 #endif
39#else
40 #define PICAPI
41 #define PEXPORT
42#endif
43
44#include <stdint.h>
45
46#ifdef __cplusplus
47extern "C" {
48#endif /* __cplusplus */
49
54
60typedef int ps_bool;
61
67#define True 1
68
74#define False 0
75
81typedef uint16_t ps_uchar16;
82
88typedef int16_t ps_schar16;
89
95typedef uint8_t ps_byte;
96
98
103
109typedef struct _ps_context ps_context;
110
116typedef struct _ps_canvas ps_canvas;
117
123typedef struct _ps_image ps_image;
124
130typedef struct _ps_pattern ps_pattern;
131
137typedef struct _ps_gradient ps_gradient;
138
144typedef struct _ps_matrix ps_matrix;
145
151typedef struct _ps_path ps_path;
152
158typedef struct _ps_mask ps_mask;
159
165typedef struct _ps_font ps_font;
166
170typedef struct _ps_glyph {
172 void* glyph;
174
178typedef struct _ps_size {
180 float w;
182 float h;
184
188typedef struct _ps_rect {
190 float x;
192 float y;
194 float w;
196 float h;
198
202typedef struct _ps_point {
204 float x;
206 float y;
208
212typedef struct _ps_color {
214 float r;
216 float g;
218 float b;
220 float a;
222
224
229
235PEXPORT int PICAPI ps_version(void);
236
247PEXPORT ps_bool PICAPI ps_initialize(void);
248
257PEXPORT void PICAPI ps_shutdown(void);
258
292
298PEXPORT ps_status PICAPI ps_last_status(void);
300
305
310
325PEXPORT ps_context* PICAPI ps_context_create(ps_canvas* canvas, ps_context* shared_context);
326
341
351PEXPORT void PICAPI ps_context_unref(ps_context* ctx);
352
368
383
385
390
432
449PEXPORT ps_canvas* PICAPI ps_canvas_create(ps_color_format fmt, int width, int height);
450
471 int width, int height, int pitch);
472
491PEXPORT ps_canvas* PICAPI ps_canvas_create_compatible(const ps_canvas* canvas,
492 int width, int height);
493
510PEXPORT ps_canvas* PICAPI ps_canvas_create_from_canvas(ps_canvas* canvas, const ps_rect* rect);
511
528PEXPORT ps_canvas* PICAPI ps_canvas_create_from_image(ps_image* img, const ps_rect* rect);
529
552PEXPORT ps_canvas* PICAPI ps_canvas_replace_data(ps_canvas* canvas, ps_byte* data,
553 ps_color_format fmt, int width, int height, int pitch);
554
569PEXPORT ps_canvas* PICAPI ps_canvas_ref(ps_canvas* canvas);
570
581PEXPORT void PICAPI ps_canvas_unref(ps_canvas* canvas);
582
596PEXPORT ps_bool PICAPI ps_canvas_get_size(const ps_canvas* canvas, ps_size* rsize);
597
611PEXPORT ps_color_format PICAPI ps_canvas_get_format(const ps_canvas* canvas);
612
622PEXPORT void PICAPI ps_canvas_set_mask(ps_canvas* canvas, const ps_mask* mask);
623
632PEXPORT void PICAPI ps_canvas_reset_mask(ps_canvas* canvas);
633
649PEXPORT void PICAPI ps_canvas_bitblt(ps_canvas* src, const ps_rect* rect,
650 ps_canvas* dst, const ps_point* location);
652
657
674PEXPORT ps_image* PICAPI ps_image_create(ps_color_format fmt, int width, int height);
675
696 int width, int height, int pitch);
717 int width, int height, int pitch);
736PEXPORT ps_image* PICAPI ps_image_create_compatible(const ps_canvas* canvas, int width, int height);
737
754PEXPORT ps_image* PICAPI ps_image_create_from_canvas(ps_canvas* canvas, const ps_rect* rect);
755
772PEXPORT ps_image* PICAPI ps_image_create_from_image(ps_image* img, const ps_rect* rect);
773
788PEXPORT ps_image* PICAPI ps_image_ref(ps_image* img);
789
800PEXPORT void PICAPI ps_image_unref(ps_image* img);
801
811PEXPORT void PICAPI ps_image_set_allow_transparent(ps_image* img, ps_bool allow);
812
822PEXPORT void PICAPI ps_image_set_transparent_color(ps_image* img, const ps_color* color);
823
837PEXPORT ps_bool PICAPI ps_image_get_size(const ps_image* img, ps_size* rsize);
838
853
855
860
874
892PEXPORT ps_pattern* PICAPI ps_pattern_create_image(const ps_image* img, ps_wrap_type x_wrap,
893 ps_wrap_type y_wrap, const ps_matrix* transform);
894
904PEXPORT void PICAPI ps_pattern_transform(ps_pattern* pattern, const ps_matrix* matrix);
905
919PEXPORT ps_pattern* PICAPI ps_pattern_ref(ps_pattern* pattern);
920
930PEXPORT void PICAPI ps_pattern_unref(ps_pattern* pattern);
931
933
938
956
974 const ps_point* start, const ps_point* end);
975
995 const ps_point* start, float sradius, const ps_point* end, float eradius);
996
1015 const ps_point* origin, float sangle);
1016
1027PEXPORT void PICAPI ps_gradient_transform(ps_gradient* gradient, const ps_matrix* matrix);
1028
1043PEXPORT ps_gradient* PICAPI ps_gradient_ref(ps_gradient* gradient);
1044
1055PEXPORT void PICAPI ps_gradient_unref(ps_gradient* gradient);
1056
1067PEXPORT void PICAPI ps_gradient_add_color_stop(ps_gradient* gradient,
1068 float offset, const ps_color* color);
1069
1078PEXPORT void PICAPI ps_gradient_clear_color_stops(ps_gradient* gradient);
1079
1081
1086
1104PEXPORT ps_mask* PICAPI ps_mask_create_with_data(ps_byte* data, int width, int height);
1105
1119PEXPORT ps_mask* PICAPI ps_mask_ref(ps_mask* mask);
1120
1130PEXPORT void PICAPI ps_mask_unref(ps_mask* mask);
1131
1142PEXPORT void PICAPI ps_mask_add_color_filter(ps_mask* mask, const ps_color* color);
1143
1152PEXPORT void PICAPI ps_mask_clear_color_filters(ps_mask* mask);
1153
1155
1160
1165
1175PEXPORT void PICAPI ps_set_source_color(ps_context* ctx, const ps_color* color);
1176
1186PEXPORT void PICAPI ps_set_source_image(ps_context* ctx, const ps_image* image);
1187
1197PEXPORT void PICAPI ps_set_source_pattern(ps_context* ctx, const ps_pattern* pattern);
1198
1208PEXPORT void PICAPI ps_set_source_gradient(ps_context* ctx, const ps_gradient* gradient);
1209
1219PEXPORT void PICAPI ps_set_source_canvas(ps_context* ctx, const ps_canvas* canvas);
1220
1222
1227
1245
1256PEXPORT void PICAPI ps_set_line_cap(ps_context* ctx, ps_line_cap line_cap);
1257
1283
1294PEXPORT void PICAPI ps_set_line_join(ps_context* ctx, ps_line_join line_join);
1295
1317
1328PEXPORT void PICAPI ps_set_line_inner_join(ps_context* ctx, ps_line_inner_join line_inner_join);
1329
1346PEXPORT float PICAPI ps_set_line_width(ps_context* ctx, float width);
1347
1364PEXPORT float PICAPI ps_set_miter_limit(ps_context* ctx, float limit);
1365
1377PEXPORT void PICAPI ps_set_stroke_color(ps_context* ctx, const ps_color* color);
1378
1390PEXPORT void PICAPI ps_set_stroke_image(ps_context* ctx, const ps_image* image);
1391
1403PEXPORT void PICAPI ps_set_stroke_pattern(ps_context* ctx, const ps_pattern* pattern);
1404
1416PEXPORT void PICAPI ps_set_stroke_gradient(ps_context* ctx, const ps_gradient* gradient);
1417
1429PEXPORT void PICAPI ps_set_stroke_canvas(ps_context* ctx, const ps_canvas* canvas);
1430
1444PEXPORT void PICAPI ps_set_line_dash(ps_context* ctx, float start,
1445 const float* dashes, unsigned int num_dashes);
1446
1456PEXPORT void PICAPI ps_reset_line_dash(ps_context* ctx);
1457
1459
1464
1476PEXPORT void PICAPI ps_set_shadow(ps_context* ctx, float x_offset, float y_offset, float blur);
1477
1487PEXPORT void PICAPI ps_set_shadow_color(ps_context* ctx, const ps_color* color);
1488
1497PEXPORT void PICAPI ps_reset_shadow(ps_context* ctx);
1498
1500
1576
1592
1622
1637PEXPORT ps_filter PICAPI ps_set_filter(ps_context* ctx, ps_filter filter);
1638
1656
1672
1688PEXPORT float PICAPI ps_set_alpha(ps_context* ctx, float alpha);
1689
1705PEXPORT float PICAPI ps_set_gamma(ps_context* ctx, float gamma);
1706
1716PEXPORT void PICAPI ps_set_antialias(ps_context* ctx, ps_bool antialias);
1717
1733PEXPORT float PICAPI ps_set_blur(ps_context* ctx, float blur);
1734
1736
1741
1751PEXPORT void PICAPI ps_stroke(ps_context* ctx);
1752
1762PEXPORT void PICAPI ps_fill(ps_context* ctx);
1763
1773PEXPORT void PICAPI ps_paint(ps_context* ctx);
1774
1783PEXPORT void PICAPI ps_clear(ps_context* ctx);
1784
1786
1791
1801PEXPORT void PICAPI ps_clip(ps_context* ctx);
1802
1813PEXPORT void PICAPI ps_clip_path(ps_context* ctx, const ps_path* path, ps_fill_rule rule);
1814
1824PEXPORT void PICAPI ps_clip_rect(ps_context* ctx, const ps_rect* rect);
1825
1838PEXPORT void PICAPI ps_scissor_rect(ps_context* ctx, const ps_rect* rect);
1839
1850PEXPORT void PICAPI ps_clip_rects(ps_context* ctx, const ps_rect* rects, unsigned int num_rects);
1851
1860PEXPORT void PICAPI ps_reset_clip(ps_context* ctx);
1861
1863
1896PEXPORT void PICAPI ps_save(ps_context* ctx);
1897
1906PEXPORT void PICAPI ps_restore(ps_context* ctx);
1907
1909
1911
1929
1951
1969PEXPORT ps_font* PICAPI ps_font_create(const char* name, ps_charset charset,
1970 float size, int weight, ps_bool italic);
1971
1985PEXPORT ps_font* PICAPI ps_font_create_copy(const ps_font* font);
1986
2000PEXPORT ps_font* PICAPI ps_font_ref(ps_font* font);
2001
2011PEXPORT void PICAPI ps_font_unref(ps_font* font);
2012
2023PEXPORT void PICAPI ps_font_set_size(ps_font* font, float size);
2024
2035PEXPORT void PICAPI ps_font_set_weight(ps_font* font, int weight);
2036
2047PEXPORT void PICAPI ps_font_set_italic(ps_font* font, ps_bool italic);
2048
2059PEXPORT void PICAPI ps_font_set_charset(ps_font* font, ps_charset charset);
2060
2071PEXPORT void PICAPI ps_font_set_hint(ps_font* font, ps_bool hint);
2072
2083PEXPORT void PICAPI ps_font_set_flip(ps_font* font, ps_bool flip);
2084
2088typedef struct _ps_font_info {
2092 float size;
2096 float ascent;
2100 float descent;
2104 float leading;
2108 unsigned int unitsEM;
2110
2123
2138PEXPORT ps_font* PICAPI ps_set_font(ps_context* ctx, const ps_font* font);
2139
2141
2146
2164
2180PEXPORT ps_bool PICAPI ps_get_text_extent(ps_context* ctx, const void* text, unsigned int length, ps_size* rsize);
2181
2192PEXPORT void PICAPI ps_set_text_color(ps_context* ctx, const ps_color* color);
2193
2204PEXPORT void PICAPI ps_set_text_stroke_color(ps_context* ctx, const ps_color* color);
2205
2218PEXPORT void PICAPI ps_text_transform(ps_context* ctx, const ps_matrix* matrix);
2219
2232PEXPORT void PICAPI ps_set_text_matrix(ps_context* ctx, const ps_matrix* matrix);
2233
2244PEXPORT void PICAPI ps_set_text_render_type(ps_context* ctx, ps_text_type type);
2245
2256PEXPORT void PICAPI ps_set_text_antialias(ps_context* ctx, ps_bool antialias);
2257
2268PEXPORT void PICAPI ps_set_text_kerning(ps_context* ctx, ps_bool kerning);
2269
2282PEXPORT void PICAPI ps_text_out_length(ps_context* ctx, float x, float y,
2283 const char* text, unsigned int length);
2284
2297PEXPORT void PICAPI ps_wide_text_out_length(ps_context* ctx, float x, float y,
2298 const ps_uchar16* text, unsigned int length);
2316
2342
2357PEXPORT void PICAPI ps_draw_text(ps_context* ctx, const ps_rect* area, const void* text,
2358 unsigned int length, ps_draw_text_type type, ps_text_align align);
2359
2372PEXPORT ps_bool PICAPI ps_get_glyph(ps_context* ctx, int ch, ps_glyph* glyph);
2373
2386PEXPORT void PICAPI ps_show_glyphs(ps_context* ctx, float x, float y,
2387 ps_glyph* glyphs, unsigned int length);
2388
2402 const ps_glyph* glyph, ps_path* path);
2403
2417PEXPORT ps_bool PICAPI ps_glyph_get_extent(const ps_glyph* glyph, ps_size* rsize);
2418
2420
2425
2436PEXPORT void PICAPI ps_translate(ps_context* ctx, float tx, float ty);
2437
2448PEXPORT void PICAPI ps_scale(ps_context* ctx, float sx, float sy);
2449
2460PEXPORT void PICAPI ps_shear(ps_context* ctx, float shx, float shy);
2461
2471PEXPORT void PICAPI ps_rotate(ps_context* ctx, float angle);
2472
2481PEXPORT void PICAPI ps_identity(ps_context* ctx);
2482
2492PEXPORT void PICAPI ps_transform(ps_context* ctx, const ps_matrix* matrix);
2493
2503PEXPORT void PICAPI ps_set_matrix(ps_context* ctx, const ps_matrix* matrix);
2504
2516PEXPORT ps_bool PICAPI ps_get_matrix(ps_context* ctx, ps_matrix* matrix);
2517
2527PEXPORT void PICAPI ps_world_to_viewport(ps_context* ctx, ps_point* point);
2528
2538PEXPORT void PICAPI ps_viewport_to_world(ps_context* ctx, ps_point* point);
2539
2541
2546
2558PEXPORT ps_matrix* PICAPI ps_matrix_create(void);
2559
2579PEXPORT ps_matrix* PICAPI ps_matrix_create_init(float sx, float shy, float shx,
2580 float sy, float tx, float ty);
2581
2595PEXPORT ps_matrix* PICAPI ps_matrix_create_copy(const ps_matrix* matrix);
2596
2610PEXPORT ps_matrix* PICAPI ps_matrix_ref(ps_matrix* matrix);
2611
2621PEXPORT void PICAPI ps_matrix_unref(ps_matrix* matrix);
2622
2638PEXPORT void PICAPI ps_matrix_init(ps_matrix* matrix, float sx, float shy,
2639 float shx, float sy, float tx, float ty);
2640
2651PEXPORT void PICAPI ps_matrix_translate(ps_matrix* matrix, float tx, float ty);
2652
2663PEXPORT void PICAPI ps_matrix_scale(ps_matrix* matrix, float sx, float sy);
2664
2674PEXPORT void PICAPI ps_matrix_rotate(ps_matrix* matrix, float angle);
2675
2686PEXPORT void PICAPI ps_matrix_shear(ps_matrix* matrix, float shx, float shy);
2687
2696PEXPORT void PICAPI ps_matrix_invert(ps_matrix* matrix);
2697
2706PEXPORT void PICAPI ps_matrix_identity(ps_matrix* matrix);
2707
2716PEXPORT void PICAPI ps_matrix_flip_x(ps_matrix* matrix);
2717
2726PEXPORT void PICAPI ps_matrix_flip_y(ps_matrix* matrix);
2727
2738PEXPORT void PICAPI ps_matrix_multiply(ps_matrix* result, const ps_matrix* a, const ps_matrix* b);
2739
2750PEXPORT ps_bool PICAPI ps_matrix_is_identity(const ps_matrix* matrix);
2751
2763PEXPORT ps_bool PICAPI ps_matrix_is_equal(const ps_matrix* a, const ps_matrix* b);
2764
2775PEXPORT float PICAPI ps_matrix_get_determinant(const ps_matrix* matrix);
2776
2787PEXPORT void PICAPI ps_matrix_set_translate_factor(ps_matrix* matrix, float tx, float ty);
2788
2801PEXPORT ps_bool PICAPI ps_matrix_get_translate_factor(ps_matrix* matrix, float* tx, float* ty);
2802
2813PEXPORT void PICAPI ps_matrix_set_scale_factor(ps_matrix* matrix, float sx, float sy);
2814
2827PEXPORT ps_bool PICAPI ps_matrix_get_scale_factor(ps_matrix* matrix, float* sx, float* sy);
2828
2839PEXPORT void PICAPI ps_matrix_set_shear_factor(ps_matrix* matrix, float shx, float shy);
2840
2853PEXPORT ps_bool PICAPI ps_matrix_get_shear_factor(ps_matrix* matrix, float* shx, float* shy);
2854
2864PEXPORT void PICAPI ps_matrix_transform_point(const ps_matrix* matrix, ps_point* point);
2865
2875PEXPORT void PICAPI ps_matrix_transform_rect(const ps_matrix* matrix, ps_rect* rect);
2876
2886PEXPORT void PICAPI ps_matrix_transform_path(const ps_matrix* matrix, ps_path* path);
2887
2889
2894
2903PEXPORT void PICAPI ps_new_path(ps_context* ctx);
2904
2913PEXPORT void PICAPI ps_new_sub_path(ps_context* ctx);
2914
2924PEXPORT void PICAPI ps_add_sub_path(ps_context* ctx, const ps_path* path);
2925
2935PEXPORT void PICAPI ps_set_path(ps_context* ctx, const ps_path* path);
2936
2948PEXPORT ps_bool PICAPI ps_get_path(ps_context* ctx, ps_path* path);
2949
2958PEXPORT void PICAPI ps_close_path(ps_context* ctx);
2959
2970PEXPORT void PICAPI ps_move_to(ps_context* ctx, const ps_point* point);
2971
2982PEXPORT void PICAPI ps_line_to(ps_context* ctx, const ps_point* point);
2983
2997PEXPORT void PICAPI ps_bezier_curve_to(ps_context* ctx, const ps_point* fcp,
2998 const ps_point* scp, const ps_point* ep);
2999
3011PEXPORT void PICAPI ps_quad_curve_to(ps_context* ctx, const ps_point* cp, const ps_point* ep);
3012
3028PEXPORT void PICAPI ps_arc(ps_context* ctx, const ps_point* cp, float radius,
3029 float sangle, float eangle, ps_bool clockwise);
3030
3043PEXPORT void PICAPI ps_tangent_arc(ps_context* ctx, const ps_rect* rect, float sangle, float sweep);
3044
3055PEXPORT void PICAPI ps_rectangle(ps_context* ctx, const ps_rect* rect);
3056
3076PEXPORT void PICAPI ps_rounded_rect(ps_context* ctx, const ps_rect* rect, float ltx,
3077 float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby);
3078
3089PEXPORT void PICAPI ps_ellipse(ps_context* ctx, const ps_rect* rect);
3090
3092
3097
3109PEXPORT ps_path* PICAPI ps_path_create(void);
3110
3124PEXPORT ps_path* PICAPI ps_path_create_copy(const ps_path* path);
3125
3139PEXPORT ps_path* PICAPI ps_path_ref(ps_path* path);
3140
3150PEXPORT void PICAPI ps_path_unref(ps_path* path);
3151
3162PEXPORT void PICAPI ps_path_move_to(ps_path* path, const ps_point* point);
3163
3174PEXPORT void PICAPI ps_path_line_to(ps_path* path, const ps_point* point);
3175
3188PEXPORT void PICAPI ps_path_tangent_arc_to(ps_path* path, float radius,
3189 const ps_point* tp, const ps_point* ep);
3190
3207PEXPORT void PICAPI ps_path_arc_to(ps_path* path, float radiusX, float radiusY, float angle,
3208 ps_bool large_arc, ps_bool clockwise, const ps_point* ep);
3209
3222PEXPORT void PICAPI ps_path_bezier_to(ps_path* path, const ps_point* fcp,
3223 const ps_point* scp, const ps_point* ep);
3224
3236PEXPORT void PICAPI ps_path_quad_to(ps_path* path, const ps_point* cp, const ps_point* ep);
3237
3246PEXPORT void PICAPI ps_path_sub_close(ps_path* path);
3247
3261PEXPORT float PICAPI ps_path_get_length(const ps_path* path);
3262
3271PEXPORT void PICAPI ps_path_clear(ps_path* path);
3272
3281PEXPORT ps_bool PICAPI ps_path_is_empty(const ps_path* path);
3282
3296PEXPORT unsigned int PICAPI ps_path_get_vertex_count(const ps_path* path);
3297
3327
3343PEXPORT ps_path_cmd PICAPI ps_path_get_vertex(const ps_path* path,
3344 unsigned int index, ps_point* point);
3345
3359PEXPORT ps_bool PICAPI ps_path_bounding_rect(const ps_path* path, ps_rect* rect);
3360
3373PEXPORT ps_bool PICAPI ps_path_contains(const ps_path* path,
3374 const ps_point* point, ps_fill_rule rule);
3375
3388PEXPORT ps_bool PICAPI ps_path_stroke_contains(const ps_path* path,
3389 const ps_point* point, float width);
3390
3401PEXPORT void PICAPI ps_path_add_line(ps_path* path, const ps_point* p1, const ps_point* p2);
3402
3417PEXPORT void PICAPI ps_path_add_arc(ps_path* path, const ps_point* cp, float radius,
3418 float sangle, float eangle, ps_bool clockwise);
3419
3429PEXPORT void PICAPI ps_path_add_rect(ps_path* path, const ps_rect* rect);
3430
3440PEXPORT void PICAPI ps_path_add_ellipse(ps_path* path, const ps_rect* rect);
3441
3460PEXPORT void PICAPI ps_path_add_rounded_rect(ps_path* path, const ps_rect* rect, float ltx,
3461 float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby);
3462
3472PEXPORT void PICAPI ps_path_add_sub_path(ps_path* path, const ps_path* spath);
3473
3495
3508PEXPORT void PICAPI ps_path_clipping(ps_path* result, ps_path_operation op,
3509 const ps_path* a, const ps_path* b);
3510
3513
3514#ifdef __cplusplus
3515}
3516#endif /* __cplusplus */
3517
3518#endif /*_PICASSO_H_*/
PEXPORT ps_filter PICAPI ps_set_filter(ps_context *ctx, ps_filter filter)
Set interpolation filter for graphic context.
enum _ps_composite ps_composite
Compositing operations for graphics context.
PEXPORT float PICAPI ps_set_blur(ps_context *ctx, float blur)
Set the blur level for the graphic context.
PEXPORT ps_composite PICAPI ps_set_composite_operator(ps_context *ctx, ps_composite composite)
Set composites opertaions for graphics context.
_ps_fill_rule
Fill rules for graphics.
Definition picasso.h:1642
_ps_filter
Graphics quality for rendering an image.
Definition picasso.h:1596
PEXPORT ps_fill_rule PICAPI ps_set_fill_rule(ps_context *ctx, ps_fill_rule rule)
Set fill rule for graphic context.
enum _ps_fill_rule ps_fill_rule
Fill rules for graphics.
PEXPORT float PICAPI ps_set_gamma(ps_context *ctx, float gamma)
Set the gamma value for the graphic context.
enum _ps_filter ps_filter
Graphics quality for rendering an image.
PEXPORT float PICAPI ps_set_alpha(ps_context *ctx, float alpha)
Set the opacity level for objects drawn in graphic context.
PEXPORT void PICAPI ps_set_antialias(ps_context *ctx, ps_bool antialias)
Set whether the Anti-aliasing should be turn on.
_ps_composite
Compositing operations for graphics context.
Definition picasso.h:1508
@ FILL_RULE_ERROR
Definition picasso.h:1654
@ FILL_RULE_WINDING
Definition picasso.h:1646
@ FILL_RULE_EVEN_ODD
Definition picasso.h:1650
@ FILTER_NEAREST
Definition picasso.h:1600
@ FILTER_QUADRIC
Definition picasso.h:1616
@ FILTER_UNKNOWN
Definition picasso.h:1620
@ FILTER_BICUBIC
Definition picasso.h:1612
@ FILTER_BILINEAR
Definition picasso.h:1604
@ FILTER_GAUSSIAN
Definition picasso.h:1608
@ COMPOSITE_SATURATION
Definition picasso.h:1568
@ COMPOSITE_COLOR
Definition picasso.h:1570
@ COMPOSITE_DST_IN
Definition picasso.h:1526
@ COMPOSITE_SRC_IN
Definition picasso.h:1516
@ COMPOSITE_PLUS
Definition picasso.h:1544
@ COMPOSITE_SRC_OVER
Definition picasso.h:1514
@ COMPOSITE_DST_OVER
Definition picasso.h:1524
@ COMPOSITE_DODGE
Definition picasso.h:1558
@ COMPOSITE_SRC
Definition picasso.h:1512
@ COMPOSITE_CONTRAST
Definition picasso.h:1560
@ COMPOSITE_LIGHTEN
Definition picasso.h:1536
@ COMPOSITE_BURN
Definition picasso.h:1556
@ COMPOSITE_HARDLIGHT
Definition picasso.h:1554
@ COMPOSITE_INVERT
Definition picasso.h:1562
@ COMPOSITE_HUE
Definition picasso.h:1566
@ COMPOSITE_DIFFERENCE
Definition picasso.h:1550
@ COMPOSITE_XOR
Definition picasso.h:1532
@ COMPOSITE_MINUS
Definition picasso.h:1546
@ COMPOSITE_OVERLAY
Definition picasso.h:1538
@ COMPOSITE_SRC_ATOP
Definition picasso.h:1520
@ COMPOSITE_EXCLUSION
Definition picasso.h:1548
@ COMPOSITE_INVERT_BLEND
Definition picasso.h:1564
@ COMPOSITE_DARKEN
Definition picasso.h:1534
@ COMPOSITE_CLEAR
Definition picasso.h:1510
@ COMPOSITE_MULTIPLY
Definition picasso.h:1542
@ COMPOSITE_ERROR
Definition picasso.h:1574
@ COMPOSITE_SRC_OUT
Definition picasso.h:1518
@ COMPOSITE_DST_ATOP
Definition picasso.h:1530
@ COMPOSITE_SCREEN
Definition picasso.h:1540
@ COMPOSITE_SOFTLIGHT
Definition picasso.h:1552
@ COMPOSITE_DST_OUT
Definition picasso.h:1528
@ COMPOSITE_DST
Definition picasso.h:1522
@ COMPOSITE_LUMINOSITY
Definition picasso.h:1572
PEXPORT ps_canvas *PICAPI ps_canvas_create_from_image(ps_image *img, const ps_rect *rect)
Create a new canvas using part of an existing ps_image object in same pixel buffer.
PEXPORT void PICAPI ps_canvas_unref(ps_canvas *canvas)
Decrements the reference count for the canvas object. If the reference count on the canvas falls to 0...
PEXPORT ps_color_format PICAPI ps_canvas_get_format(const ps_canvas *canvas)
Return the pixel format of the canvas.
PEXPORT void PICAPI ps_canvas_bitblt(ps_canvas *src, const ps_rect *rect, ps_canvas *dst, const ps_point *location)
Copy raster data between two canvas objects.
PEXPORT void PICAPI ps_canvas_set_mask(ps_canvas *canvas, const ps_mask *mask)
Set a new mask into an existing canvas object.
PEXPORT ps_canvas *PICAPI ps_canvas_create_with_data(ps_byte *data, ps_color_format fmt, int width, int height, int pitch)
Create a new canvas using a given address in memory.
PEXPORT ps_canvas *PICAPI ps_canvas_create_compatible(const ps_canvas *canvas, int width, int height)
Create a new canvas to compatible with an existing canvas.
PEXPORT ps_canvas *PICAPI ps_canvas_create_from_canvas(ps_canvas *canvas, const ps_rect *rect)
Create a new canvas using part of an existing canvas in same pixel buffer.
PEXPORT ps_bool PICAPI ps_canvas_get_size(const ps_canvas *canvas, ps_size *rsize)
Return the size of the canvas.
_ps_color_format
Pixel formats of canvas or image.
Definition picasso.h:394
PEXPORT ps_canvas *PICAPI ps_canvas_create(ps_color_format fmt, int width, int height)
Create a new canvas using the given parameters.
enum _ps_color_format ps_color_format
Pixel formats of canvas or image.
PEXPORT ps_canvas *PICAPI ps_canvas_replace_data(ps_canvas *canvas, ps_byte *data, ps_color_format fmt, int width, int height, int pitch)
Replace a canvas target rendering buffer address in memory, which is only use for canvas create by ps...
PEXPORT void PICAPI ps_canvas_reset_mask(ps_canvas *canvas)
Clear the mask from the canvas object.
PEXPORT ps_canvas *PICAPI ps_canvas_ref(ps_canvas *canvas)
Increases the reference count of the canvas by 1.
@ COLOR_FORMAT_RGB565
Definition picasso.h:422
@ COLOR_FORMAT_RGB555
Definition picasso.h:426
@ COLOR_FORMAT_BGR
Definition picasso.h:418
@ COLOR_FORMAT_RGB
Definition picasso.h:414
@ COLOR_FORMAT_ABGR
Definition picasso.h:406
@ COLOR_FORMAT_UNKNOWN
Definition picasso.h:430
@ COLOR_FORMAT_ARGB
Definition picasso.h:402
@ COLOR_FORMAT_BGRA
Definition picasso.h:410
@ COLOR_FORMAT_RGBA
Definition picasso.h:398
PEXPORT void PICAPI ps_clip_path(ps_context *ctx, const ps_path *path, ps_fill_rule rule)
Clipping specified path, using the given fill rule.
PEXPORT void PICAPI ps_clip_rects(ps_context *ctx, const ps_rect *rects, unsigned int num_rects)
Clipping specified area defined by an array of rectangles.
PEXPORT void PICAPI ps_clip_rect(ps_context *ctx, const ps_rect *rect)
Clipping specified rectangle.
PEXPORT void PICAPI ps_clip(ps_context *ctx)
Clipping the current path, using the current fill rule. After called, the current path will be cleare...
PEXPORT void PICAPI ps_scissor_rect(ps_context *ctx, const ps_rect *rect)
The fast way to clipping specified rectangle, the clip rect can not be transformed by world matrix.
PEXPORT void PICAPI ps_reset_clip(ps_context *ctx)
Clear the clipping area from the context.
PEXPORT ps_status PICAPI ps_last_status(void)
Return the last status code of picasso.
enum _ps_status ps_status
Status code return by call ps_last_status function.
PEXPORT void PICAPI ps_shutdown(void)
Shutdown the picasso drawing environment.
PEXPORT ps_bool PICAPI ps_initialize(void)
Initialize the picasso drawing environment.
_ps_status
Status code return by call ps_last_status function.
Definition picasso.h:262
PEXPORT int PICAPI ps_version(void)
Return current version of picasso.
@ STATUS_OUT_OF_MEMORY
Definition picasso.h:270
@ STATUS_INVALID_ARGUMENT
Definition picasso.h:274
@ STATUS_UNKNOWN_ERROR
Definition picasso.h:290
@ STATUS_NOT_SUPPORT
Definition picasso.h:278
@ STATUS_DEVICE_ERROR
Definition picasso.h:282
@ STATUS_MISMATCHING_FORMAT
Definition picasso.h:286
@ STATUS_SUCCEED
Definition picasso.h:266
PEXPORT ps_canvas *PICAPI ps_context_get_canvas(ps_context *ctx)
Get the canvas from the context.
PEXPORT ps_context *PICAPI ps_context_create(ps_canvas *canvas, ps_context *shared_context)
Create a new graphic context for a canvas.
PEXPORT ps_context *PICAPI ps_context_ref(ps_context *ctx)
Increases the reference count of the context by 1.
PEXPORT ps_canvas *PICAPI ps_context_set_canvas(ps_context *ctx, ps_canvas *canvas)
Set a new canvas into a context, and return the old one.
PEXPORT void PICAPI ps_context_unref(ps_context *ctx)
Decrements the reference count for the context object. If the reference count on the context falls to...
uint8_t ps_byte
byte data type
Definition picasso.h:95
int ps_bool
boolean type
Definition picasso.h:60
uint16_t ps_uchar16
16 bit unsigned unicode character
Definition picasso.h:81
int16_t ps_schar16
16 bit signed unicode character
Definition picasso.h:88
PEXPORT void PICAPI ps_set_source_canvas(ps_context *ctx, const ps_canvas *canvas)
Set a canvas to the context, it is used to fill a graphic object.
PEXPORT void PICAPI ps_set_source_image(ps_context *ctx, const ps_image *image)
Set a image to the context, it is used to fill a graphic object.
PEXPORT void PICAPI ps_set_source_color(ps_context *ctx, const ps_color *color)
Set a Color to the context, it is used to fill a graphic object.
PEXPORT void PICAPI ps_set_source_gradient(ps_context *ctx, const ps_gradient *gradient)
Set a gradient to the context, it is used to fill a graphic object.
PEXPORT void PICAPI ps_set_source_pattern(ps_context *ctx, const ps_pattern *pattern)
Set a pattern to the context, it is used to fill a graphic object.
_ps_font_weight
Font weight.
Definition picasso.h:1933
PEXPORT ps_font *PICAPI ps_font_ref(ps_font *font)
Increases the reference count of the font by 1.
struct _ps_font_info ps_font_info
A structure that contains font information.
PEXPORT void PICAPI ps_font_set_hint(ps_font *font, ps_bool hint)
Set hiting for a font object.
PEXPORT void PICAPI ps_font_set_flip(ps_font *font, ps_bool flip)
Set flip for a font object.
PEXPORT ps_font *PICAPI ps_set_font(ps_context *ctx, const ps_font *font)
Set a new font to graphics context.
enum _ps_charset ps_charset
Charset for a font.
PEXPORT void PICAPI ps_font_set_weight(ps_font *font, int weight)
Set weight for a font object.
PEXPORT void PICAPI ps_font_set_size(ps_font *font, float size)
Set size for a font object.
PEXPORT ps_font *PICAPI ps_font_create(const char *name, ps_charset charset, float size, int weight, ps_bool italic)
Create a font object using the given parameters.
PEXPORT void PICAPI ps_font_set_charset(ps_font *font, ps_charset charset)
Set charset for a font object.
PEXPORT ps_bool PICAPI ps_get_font_info(ps_context *ctx, ps_font_info *info)
Return the font information from the graphics context.
enum _ps_font_weight ps_font_weight
Font weight.
PEXPORT ps_font *PICAPI ps_font_create_copy(const ps_font *font)
Create a copy from an existing font object.
PEXPORT void PICAPI ps_font_set_italic(ps_font *font, ps_bool italic)
Set italic for a font object.
PEXPORT void PICAPI ps_font_unref(ps_font *font)
Decrements the reference count for the font object. If the reference count on the font falls to 0,...
_ps_charset
Charset for a font.
Definition picasso.h:1919
@ FONT_WEIGHT_HEAVY
Definition picasso.h:1949
@ FONT_WEIGHT_BOLD
Definition picasso.h:1945
@ FONT_WEIGHT_REGULAR
Definition picasso.h:1937
@ FONT_WEIGHT_MEDIUM
Definition picasso.h:1941
@ CHARSET_ANSI
Definition picasso.h:1923
@ CHARSET_UNICODE
Definition picasso.h:1927
PEXPORT void PICAPI ps_new_path(ps_context *ctx)
Create a new empty path in the graphic context, clear the old one.
PEXPORT void PICAPI ps_bezier_curve_to(ps_context *ctx, const ps_point *fcp, const ps_point *scp, const ps_point *ep)
Add a cubic bezier spline to the current path from current point to end point.
PEXPORT void PICAPI ps_ellipse(ps_context *ctx, const ps_rect *rect)
Adds an ellipse to the current path which fits inside the specified rectangle.
PEXPORT ps_bool PICAPI ps_get_path(ps_context *ctx, ps_path *path)
Get the current path in the graphic context.
PEXPORT void PICAPI ps_move_to(ps_context *ctx, const ps_point *point)
Begin a new sub path, and set the current point.
PEXPORT void PICAPI ps_tangent_arc(ps_context *ctx, const ps_rect *rect, float sangle, float sweep)
Add a circular arc which is inner tangent from a rectangle.
PEXPORT void PICAPI ps_line_to(ps_context *ctx, const ps_point *point)
Add a line to the current path from the current point to given point.
PEXPORT void PICAPI ps_rectangle(ps_context *ctx, const ps_rect *rect)
Add a rectangle to the current path.
PEXPORT void PICAPI ps_add_sub_path(ps_context *ctx, const ps_path *path)
Add a new sub path to current path in the graphic context.
PEXPORT void PICAPI ps_rounded_rect(ps_context *ctx, const ps_rect *rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby)
Add a rounded rectangle to the current path.
PEXPORT void PICAPI ps_arc(ps_context *ctx, const ps_point *cp, float radius, float sangle, float eangle, ps_bool clockwise)
Add a circular arc to the current path.
PEXPORT void PICAPI ps_new_sub_path(ps_context *ctx)
Close the current path, and add a new empty sub path in the graphic context.
PEXPORT void PICAPI ps_set_path(ps_context *ctx, const ps_path *path)
Replace the current path in the graphic context.
PEXPORT void PICAPI ps_quad_curve_to(ps_context *ctx, const ps_point *cp, const ps_point *ep)
Add a quadratic bezier spline to the current path from current point to end point.
PEXPORT void PICAPI ps_close_path(ps_context *ctx)
Close the current path in the graphic context.
enum _ps_gradient_spread ps_gradient_spread
Fill type of outside the gradient area.
PEXPORT void PICAPI ps_gradient_transform(ps_gradient *gradient, const ps_matrix *matrix)
Transform the gradient object.
PEXPORT void PICAPI ps_gradient_clear_color_stops(ps_gradient *gradient)
Clear color stops from gradient's control vector.
PEXPORT ps_gradient *PICAPI ps_gradient_create_linear(ps_gradient_spread spread, const ps_point *start, const ps_point *end)
Create a new gradient that varies along the line defined by provided starting and ending points.
PEXPORT ps_gradient *PICAPI ps_gradient_ref(ps_gradient *gradient)
Increases the reference count of the gradient by 1.
PEXPORT void PICAPI ps_gradient_unref(ps_gradient *gradient)
Decrements the reference count for the gradient object. If the reference count on the gradient falls ...
PEXPORT void PICAPI ps_gradient_add_color_stop(ps_gradient *gradient, float offset, const ps_color *color)
Add a color stop to a gradient. The offset specifies the location along the gradient's control vector...
PEXPORT ps_gradient *PICAPI ps_gradient_create_conic(ps_gradient_spread spread, const ps_point *origin, float sangle)
Create a new gradient that varies along the area defined by provided concentric circles.
_ps_gradient_spread
Fill type of outside the gradient area.
Definition picasso.h:942
PEXPORT ps_gradient *PICAPI ps_gradient_create_radial(ps_gradient_spread spread, const ps_point *start, float sradius, const ps_point *end, float eradius)
Create a new gradient that varies along the area defined by provided starting and ending circles.
@ GRADIENT_SPREAD_REPEAT
Definition picasso.h:950
@ GRADIENT_SPREAD_REFLECT
Definition picasso.h:954
@ GRADIENT_SPREAD_PAD
Definition picasso.h:946
PEXPORT ps_image *PICAPI ps_image_create_compatible(const ps_canvas *canvas, int width, int height)
Create a new image to compatible with an existing canvas.
PEXPORT ps_bool PICAPI ps_image_get_size(const ps_image *img, ps_size *rsize)
Return the size of the image.
PEXPORT ps_color_format PICAPI ps_image_get_format(const ps_image *img)
Return the pixel format of the image.
PEXPORT void PICAPI ps_image_set_allow_transparent(ps_image *img, ps_bool allow)
Set whether the image allowed be transparent, False is default.
PEXPORT ps_image *PICAPI ps_image_create_with_data(ps_byte *data, ps_color_format fmt, int width, int height, int pitch)
Create a new image using a given address in memory.
PEXPORT ps_image *PICAPI ps_image_ref(ps_image *img)
Increases the reference count of the image by 1.
PEXPORT void PICAPI ps_image_unref(ps_image *img)
Decrements the reference count for the image object. If the reference count on the image falls to 0,...
PEXPORT ps_image *PICAPI ps_image_create_from_canvas(ps_canvas *canvas, const ps_rect *rect)
Create a new image using part of an existing canvas in same pixel buffer.
PEXPORT ps_image *PICAPI ps_image_create(ps_color_format fmt, int width, int height)
Create a new image using the given parameters.
PEXPORT void PICAPI ps_image_set_transparent_color(ps_image *img, const ps_color *color)
Set the transparent color for the image.
PEXPORT ps_image *PICAPI ps_image_create_from_image(ps_image *img, const ps_rect *rect)
Create a new image using part of an existing ps_image object in same pixel buffer.
PEXPORT ps_image *PICAPI ps_image_create_from_data(ps_byte *data, ps_color_format fmt, int width, int height, int pitch)
Create a new image using a copy of given address in memory.
PEXPORT void PICAPI ps_mask_unref(ps_mask *mask)
Decrements the reference count for the mask object. If the reference count on the mask falls to 0,...
PEXPORT void PICAPI ps_mask_add_color_filter(ps_mask *mask, const ps_color *color)
Add a color filter to a mask.
PEXPORT void PICAPI ps_mask_clear_color_filters(ps_mask *mask)
Clear all colors from mask's filter.
PEXPORT ps_mask *PICAPI ps_mask_create_with_data(ps_byte *data, int width, int height)
Create a new mask using a given data block.
PEXPORT ps_mask *PICAPI ps_mask_ref(ps_mask *mask)
Increases the reference count of the mask by 1.
PEXPORT void PICAPI ps_matrix_multiply(ps_matrix *result, const ps_matrix *a, const ps_matrix *b)
Multiplies the matrix in a and b together and stores the result in result.
PEXPORT ps_bool PICAPI ps_matrix_get_translate_factor(ps_matrix *matrix, float *tx, float *ty)
Get the translate factors from the matrix.
PEXPORT ps_bool PICAPI ps_matrix_is_equal(const ps_matrix *a, const ps_matrix *b)
Checks whether two matrix are equal.
PEXPORT void PICAPI ps_matrix_translate(ps_matrix *matrix, float tx, float ty)
Modify a matrix by translating.
PEXPORT void PICAPI ps_matrix_transform_path(const ps_matrix *matrix, ps_path *path)
Transform an existing path using the matrix.
PEXPORT ps_bool PICAPI ps_matrix_is_identity(const ps_matrix *matrix)
Checks whether the matrix is the identity transform matrix.
PEXPORT float PICAPI ps_matrix_get_determinant(const ps_matrix *matrix)
Return the determinant from a matrix.
PEXPORT void PICAPI ps_matrix_set_shear_factor(ps_matrix *matrix, float shx, float shy)
Set the shear factors to the matrix.
PEXPORT ps_matrix *PICAPI ps_matrix_create(void)
Create a identity matrix object.
PEXPORT void PICAPI ps_matrix_transform_rect(const ps_matrix *matrix, ps_rect *rect)
Transform an existing rectangle using the matrix.
PEXPORT void PICAPI ps_matrix_scale(ps_matrix *matrix, float sx, float sy)
Modify a matrix by scaling.
PEXPORT void PICAPI ps_matrix_init(ps_matrix *matrix, float sx, float shy, float shx, float sy, float tx, float ty)
Initialize an existing matrix object with given parameters.
PEXPORT void PICAPI ps_matrix_rotate(ps_matrix *matrix, float angle)
Modify a matrix by rotating.
PEXPORT void PICAPI ps_matrix_unref(ps_matrix *matrix)
Decrements the reference count for the matrix object. If the reference count on the matrix falls to 0...
PEXPORT ps_matrix *PICAPI ps_matrix_ref(ps_matrix *matrix)
Increases the reference count of the matrix by 1.
PEXPORT void PICAPI ps_matrix_transform_point(const ps_matrix *matrix, ps_point *point)
Transform an existing point using the matrix.
PEXPORT ps_bool PICAPI ps_matrix_get_scale_factor(ps_matrix *matrix, float *sx, float *sy)
Get the scale factors from the matrix.
PEXPORT void PICAPI ps_matrix_identity(ps_matrix *matrix)
Reset a matrix to identity matrix.
PEXPORT void PICAPI ps_matrix_set_scale_factor(ps_matrix *matrix, float sx, float sy)
Set the scale factors to the matrix.
PEXPORT void PICAPI ps_matrix_flip_y(ps_matrix *matrix)
Flip a matrix in the vertical direction.
PEXPORT void PICAPI ps_matrix_set_translate_factor(ps_matrix *matrix, float tx, float ty)
Set the translate factors to the matrix.
PEXPORT void PICAPI ps_matrix_invert(ps_matrix *matrix)
Modify a matrix by inverting.
PEXPORT void PICAPI ps_matrix_flip_x(ps_matrix *matrix)
Flip a matrix in the horizontal direction.
PEXPORT ps_matrix *PICAPI ps_matrix_create_init(float sx, float shy, float shx, float sy, float tx, float ty)
Create a matrix with given parameters.
PEXPORT ps_bool PICAPI ps_matrix_get_shear_factor(ps_matrix *matrix, float *shx, float *shy)
Get the shear factors from the matrix.
PEXPORT void PICAPI ps_matrix_shear(ps_matrix *matrix, float shx, float shy)
Modify a matrix by shearing.
PEXPORT ps_matrix *PICAPI ps_matrix_create_copy(const ps_matrix *matrix)
Create a matrix copy from an exist one.
struct _ps_gradient ps_gradient
An opaque type represents a gradient.
Definition picasso.h:137
struct _ps_pattern ps_pattern
An opaque type represents a pattern.
Definition picasso.h:130
struct _ps_image ps_image
An opaque type represents an image.
Definition picasso.h:123
struct _ps_mask ps_mask
An opaque type represents an alpha mask.
Definition picasso.h:158
struct _ps_point ps_point
A structure that contains a point in a two-dimensional coordinate system.
struct _ps_rect ps_rect
A structure that contains location and dimensions of a rectangle.
struct _ps_context ps_context
An opaque type represents a Picasso drawing environment.
Definition picasso.h:109
struct _ps_font ps_font
An opaque type represents a font.
Definition picasso.h:165
struct _ps_glyph ps_glyph
A character glyph of a font.
struct _ps_canvas ps_canvas
An opaque type represents a pixel buffer.
Definition picasso.h:116
struct _ps_path ps_path
An opaque type represents a graphic path.
Definition picasso.h:151
struct _ps_color ps_color
A structure that contains rgba values for a color.
struct _ps_matrix ps_matrix
An opaque type represents a transform matrix.
Definition picasso.h:144
struct _ps_size ps_size
A structure that contains width and height values.
PEXPORT void PICAPI ps_clear(ps_context *ctx)
Clear the current context with source color.
PEXPORT void PICAPI ps_fill(ps_context *ctx)
Fill the current path according to the source attributes. After called, the current path will be clea...
PEXPORT void PICAPI ps_stroke(ps_context *ctx)
Stroke the current path according to the line attributes. After called, the current path will be clea...
PEXPORT void PICAPI ps_paint(ps_context *ctx)
Fill and stroke the current path according to the source and line attributes. After called,...
PEXPORT void PICAPI ps_path_tangent_arc_to(ps_path *path, float radius, const ps_point *tp, const ps_point *ep)
Add an arc to the path which tangent at two line.
PEXPORT void PICAPI ps_path_add_sub_path(ps_path *path, const ps_path *spath)
Add an sub path to the path.
PEXPORT ps_path *PICAPI ps_path_ref(ps_path *path)
Increases the reference count of the path by 1.
PEXPORT void PICAPI ps_path_quad_to(ps_path *path, const ps_point *cp, const ps_point *ep)
Add a quadratic bezier spline to the path from current point to end point.
PEXPORT unsigned int PICAPI ps_path_get_vertex_count(const ps_path *path)
Return the count of vertices in the path.
PEXPORT ps_bool PICAPI ps_path_bounding_rect(const ps_path *path, ps_rect *rect)
Get the bounding rectangle of the path.
PEXPORT void PICAPI ps_path_add_arc(ps_path *path, const ps_point *cp, float radius, float sangle, float eangle, ps_bool clockwise)
Add a arc to the path.
PEXPORT void PICAPI ps_path_add_ellipse(ps_path *path, const ps_rect *rect)
Add an ellipse to the path.
PEXPORT ps_bool PICAPI ps_path_is_empty(const ps_path *path)
Checks whether the path is empty.
PEXPORT ps_bool PICAPI ps_path_contains(const ps_path *path, const ps_point *point, ps_fill_rule rule)
Check whether a point is contained in the path by fill method.
PEXPORT void PICAPI ps_path_move_to(ps_path *path, const ps_point *point)
Begin a new sub path, and set the current point in the path.
PEXPORT void PICAPI ps_path_clear(ps_path *path)
Clear the path to empty.
_ps_path_cmd
Path command for vertices.
Definition picasso.h:3301
enum _ps_path_cmd ps_path_cmd
Path command for vertices.
PEXPORT void PICAPI ps_path_line_to(ps_path *path, const ps_point *point)
Add a line to the path from the current point to given point.
PEXPORT void PICAPI ps_path_sub_close(ps_path *path)
Close the sub path, and begin a new one.
enum _ps_path_op ps_path_operation
Path clipping operations.
PEXPORT void PICAPI ps_path_bezier_to(ps_path *path, const ps_point *fcp, const ps_point *scp, const ps_point *ep)
Add a cubic bezier spline to the path from current point to end point.
PEXPORT void PICAPI ps_path_add_rect(ps_path *path, const ps_rect *rect)
Add a rectangle to the path.
PEXPORT void PICAPI ps_path_add_rounded_rect(ps_path *path, const ps_rect *rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby)
Add a rounded rectangle to the path.
PEXPORT void PICAPI ps_path_clipping(ps_path *result, ps_path_operation op, const ps_path *a, const ps_path *b)
Clipping two path with the operation and get the result path.
PEXPORT ps_path *PICAPI ps_path_create(void)
Create a new empty path object.
PEXPORT ps_bool PICAPI ps_path_stroke_contains(const ps_path *path, const ps_point *point, float width)
Check whether a point is contained in the path by stroke method.
PEXPORT void PICAPI ps_path_unref(ps_path *path)
Decrements the reference count for the path object. If the reference count on the path falls to 0,...
PEXPORT ps_path *PICAPI ps_path_create_copy(const ps_path *path)
Create a copy from an existing path object.
_ps_path_op
Path clipping operations.
Definition picasso.h:3477
PEXPORT ps_path_cmd PICAPI ps_path_get_vertex(const ps_path *path, unsigned int index, ps_point *point)
Get a vertex from the path by index, and return the vertex command.
PEXPORT float PICAPI ps_path_get_length(const ps_path *path)
Return The length of the path.
PEXPORT void PICAPI ps_path_arc_to(ps_path *path, float radiusX, float radiusY, float angle, ps_bool large_arc, ps_bool clockwise, const ps_point *ep)
Add an arc to the path, using radius, angle and end point.
PEXPORT void PICAPI ps_path_add_line(ps_path *path, const ps_point *p1, const ps_point *p2)
Add a line to the path.
@ PATH_CMD_MOVE_TO
Definition picasso.h:3309
@ PATH_CMD_LINE_TO
Definition picasso.h:3313
@ PATH_CMD_END_POLY
Definition picasso.h:3325
@ PATH_CMD_CURVE3
Definition picasso.h:3317
@ PATH_CMD_CURVE4
Definition picasso.h:3321
@ PATH_CMD_STOP
Definition picasso.h:3305
@ PATH_OP_INTERSECT
Definition picasso.h:3485
@ PATH_OP_UNION
Definition picasso.h:3481
@ PATH_OP_DIFF
Definition picasso.h:3493
@ PATH_OP_XOR
Definition picasso.h:3489
PEXPORT ps_pattern *PICAPI ps_pattern_create_image(const ps_image *img, ps_wrap_type x_wrap, ps_wrap_type y_wrap, const ps_matrix *transform)
Create a new pattern with an existing image.
PEXPORT ps_pattern *PICAPI ps_pattern_ref(ps_pattern *pattern)
Increases the reference count of the pattern by 1.
PEXPORT void PICAPI ps_pattern_unref(ps_pattern *pattern)
Decrements the reference count for the pattern object. If the reference count on the pattern falls to...
enum _ps_wrap_type ps_wrap_type
Fill type of pattern.
PEXPORT void PICAPI ps_pattern_transform(ps_pattern *pattern, const ps_matrix *matrix)
Transform the pattern object.
_ps_wrap_type
Fill type of pattern.
Definition picasso.h:864
@ WRAP_TYPE_REPEAT
Definition picasso.h:868
@ WRAP_TYPE_REFLECT
Definition picasso.h:872
PEXPORT void PICAPI ps_reset_shadow(ps_context *ctx)
Disables shadowing in a context.
PEXPORT void PICAPI ps_set_shadow(ps_context *ctx, float x_offset, float y_offset, float blur)
Enables shadowing in a context.
PEXPORT void PICAPI ps_set_shadow_color(ps_context *ctx, const ps_color *color)
Set the color of shadow. Default is a black color with 1/3 alpha.
PEXPORT void PICAPI ps_restore(ps_context *ctx)
Set the current graphics state to the state most recently saved.
PEXPORT void PICAPI ps_save(ps_context *ctx)
Pushes a copy of the current graphics state on to stack for context.
enum _ps_line_cap ps_line_cap
Styles for rendering the endpoint of a stroked line.
_ps_line_inner_join
Inner junction types for stroked lines.
Definition picasso.h:1299
PEXPORT void PICAPI ps_set_stroke_gradient(ps_context *ctx, const ps_gradient *gradient)
Set a gradient to the context, it is used to stroke a graphic object.
PEXPORT float PICAPI ps_set_miter_limit(ps_context *ctx, float limit)
Set the miter limit for the joins of connected lines in a graphics context.
PEXPORT void PICAPI ps_set_line_join(ps_context *ctx, ps_line_join line_join)
Set the style for the joins of connected lines in a graphics context.
PEXPORT float PICAPI ps_set_line_width(ps_context *ctx, float width)
Set the line width for a graphics context.
enum _ps_line_inner_join ps_line_inner_join
Inner junction types for stroked lines.
PEXPORT void PICAPI ps_set_line_cap(ps_context *ctx, ps_line_cap line_cap)
Set the style for the endpoint of lines in a graphics context.
PEXPORT void PICAPI ps_set_stroke_image(ps_context *ctx, const ps_image *image)
Set a image to the context, it is used to stroke a graphic object.
PEXPORT void PICAPI ps_set_stroke_pattern(ps_context *ctx, const ps_pattern *pattern)
Set a pattern to the context, it is used to stroke a graphic object.
PEXPORT void PICAPI ps_set_stroke_color(ps_context *ctx, const ps_color *color)
Set a color to the context, it is used to stroke a graphic object.
_ps_line_join
Junction types for stroked lines.
Definition picasso.h:1261
PEXPORT void PICAPI ps_reset_line_dash(ps_context *ctx)
Clear the dashs from the context, and set to solid.
_ps_line_cap
Styles for rendering the endpoint of a stroked line.
Definition picasso.h:1231
enum _ps_line_join ps_line_join
Junction types for stroked lines.
PEXPORT void PICAPI ps_set_line_dash(ps_context *ctx, float start, const float *dashes, unsigned int num_dashes)
Set the pattern for dashed lines in the context.
PEXPORT void PICAPI ps_set_stroke_canvas(ps_context *ctx, const ps_canvas *canvas)
Set a canvas to the context, it is used to stroke a graphic object.
PEXPORT void PICAPI ps_set_line_inner_join(ps_context *ctx, ps_line_inner_join line_inner_join)
Set the style for the inner joins of connected lines in a graphics context.
@ LINE_INNER_MITER
Definition picasso.h:1303
@ LINE_INNER_JAG
Definition picasso.h:1311
@ LINE_INNER_BEVEL
Definition picasso.h:1307
@ LINE_INNER_ROUND
Definition picasso.h:1315
@ LINE_JOIN_MITER
Definition picasso.h:1265
@ LINE_JOIN_MITER_ROUND
Definition picasso.h:1273
@ LINE_JOIN_MITER_REVERT
Definition picasso.h:1269
@ LINE_JOIN_BEVEL
Definition picasso.h:1281
@ LINE_JOIN_ROUND
Definition picasso.h:1277
@ LINE_CAP_SQUARE
Definition picasso.h:1243
@ LINE_CAP_BUTT
Definition picasso.h:1235
@ LINE_CAP_ROUND
Definition picasso.h:1239
PEXPORT void PICAPI ps_wide_text_out_length(ps_context *ctx, float x, float y, const ps_uchar16 *text, unsigned int length)
Draw unicode characters (ucs-2) at location in user space.
PEXPORT void PICAPI ps_set_text_kerning(ps_context *ctx, ps_bool kerning)
Set whether the font auto kerning is allowed.
PEXPORT void PICAPI ps_set_text_matrix(ps_context *ctx, const ps_matrix *matrix)
Set text matrix for the graphic context. The text matrix is not a part of graphic state – saving and ...
PEXPORT ps_bool PICAPI ps_get_text_extent(ps_context *ctx, const void *text, unsigned int length, ps_size *rsize)
Get extent for text using current font which selected to graphic context.
enum _ps_draw_text_type ps_draw_text_type
Draw mode for rending text.
PEXPORT void PICAPI ps_set_text_color(ps_context *ctx, const ps_color *color)
Set the text fill color for the graphic context.
PEXPORT ps_bool PICAPI ps_get_path_from_glyph(ps_context *ctx, const ps_glyph *glyph, ps_path *path)
Get the path from a given glyph object.
PEXPORT void PICAPI ps_text_transform(ps_context *ctx, const ps_matrix *matrix)
Transform text matrix for the graphic context. The text matrix is not a part of graphic state – savin...
PEXPORT void PICAPI ps_show_glyphs(ps_context *ctx, float x, float y, ps_glyph *glyphs, unsigned int length)
Draw an array of glyphs at location in user space.
PEXPORT void PICAPI ps_set_text_stroke_color(ps_context *ctx, const ps_color *color)
Set the text stroke color for the graphic context.
PEXPORT ps_bool PICAPI ps_glyph_get_extent(const ps_glyph *glyph, ps_size *rsize)
Get extent for a glyph object.
PEXPORT void PICAPI ps_draw_text(ps_context *ctx, const ps_rect *area, const void *text, unsigned int length, ps_draw_text_type type, ps_text_align align)
Draw text in a rectangle area, using font object which is selected in graphic context.
PEXPORT ps_bool PICAPI ps_get_glyph(ps_context *ctx, int ch, ps_glyph *glyph)
Get the glyph from a given character, using font object which is selected in graphic context.
PEXPORT void PICAPI ps_text_out_length(ps_context *ctx, float x, float y, const char *text, unsigned int length)
Draw single byte characters (latin-1) at location in user space.
enum _ps_text_type ps_text_type
Text rendering type.
PEXPORT void PICAPI ps_set_text_render_type(ps_context *ctx, ps_text_type type)
Set rendering type for text.
_ps_text_align
Text align mode for drawing text.
Definition picasso.h:2320
enum _ps_text_align ps_text_align
Text align mode for drawing text.
_ps_text_type
Text rendering type.
Definition picasso.h:2150
PEXPORT void PICAPI ps_set_text_antialias(ps_context *ctx, ps_bool antialias)
Set whether the font allowed be anti-aliasing.
_ps_draw_text_type
Draw mode for rending text.
Definition picasso.h:2302
@ TEXT_ALIGN_TOP
Definition picasso.h:2328
@ TEXT_ALIGN_BOTTOM
Definition picasso.h:2332
@ TEXT_ALIGN_LEFT
Definition picasso.h:2336
@ TEXT_ALIGN_CENTER
Definition picasso.h:2324
@ TEXT_ALIGN_RIGHT
Definition picasso.h:2340
@ TEXT_TYPE_MONO
Definition picasso.h:2158
@ TEXT_TYPE_SMOOTH
Definition picasso.h:2154
@ TEXT_TYPE_STROKE
Definition picasso.h:2162
@ DRAW_TEXT_STROKE
Definition picasso.h:2310
@ DRAW_TEXT_FILL
Definition picasso.h:2306
@ DRAW_TEXT_BOTH
Definition picasso.h:2314
PEXPORT ps_bool PICAPI ps_get_matrix(ps_context *ctx, ps_matrix *matrix)
Get the current transformation matrix from graphic context.
PEXPORT void PICAPI ps_translate(ps_context *ctx, float tx, float ty)
Changes the origin of the user coordinate system in graphic context.
PEXPORT void PICAPI ps_scale(ps_context *ctx, float sx, float sy)
Changes the scale of the user coordinate system in graphic context.
PEXPORT void PICAPI ps_identity(ps_context *ctx)
Reset the current transformation matrix to identity matrix.
PEXPORT void PICAPI ps_set_matrix(ps_context *ctx, const ps_matrix *matrix)
Modifies the current transformation matrix to the given matrix.
PEXPORT void PICAPI ps_transform(ps_context *ctx, const ps_matrix *matrix)
Transforms the user coordinate system in graphic context using a specified matrix.
PEXPORT void PICAPI ps_viewport_to_world(ps_context *ctx, ps_point *point)
Transform a coordinate from user space to device space.
PEXPORT void PICAPI ps_shear(ps_context *ctx, float shx, float shy)
Changes the shear of the user coordinate system in graphic context.
PEXPORT void PICAPI ps_world_to_viewport(ps_context *ctx, ps_point *point)
Transform a coordinate from device space to user space.
PEXPORT void PICAPI ps_rotate(ps_context *ctx, float angle)
Rotates the user coordinate system in graphic context.
A structure that contains rgba values for a color.
Definition picasso.h:212
float b
Definition picasso.h:218
float a
Definition picasso.h:220
float g
Definition picasso.h:216
float r
Definition picasso.h:214
A structure that contains font information.
Definition picasso.h:2088
float descent
Definition picasso.h:2100
unsigned int unitsEM
Definition picasso.h:2108
float leading
Definition picasso.h:2104
A character glyph of a font.
Definition picasso.h:170
void * glyph
Definition picasso.h:172
A structure that contains a point in a two-dimensional coordinate system.
Definition picasso.h:202
float y
Definition picasso.h:206
float x
Definition picasso.h:204
A structure that contains location and dimensions of a rectangle.
Definition picasso.h:188
float h
Definition picasso.h:196
float x
Definition picasso.h:190
float w
Definition picasso.h:194
float y
Definition picasso.h:192
A structure that contains width and height values.
Definition picasso.h:178
float w
Definition picasso.h:180
float h
Definition picasso.h:182