From 6600d031f2f3b74c23eac40e4582f14c6cbd2180 Mon Sep 17 00:00:00 2001 From: zhangjipeng Date: Tue, 24 Dec 2024 14:26:56 +0800 Subject: [PATCH] add api docs --- Doxyfile | 2 +- doc/html/annotated.html | 68 + doc/html/bc_s.png | Bin 0 -> 676 bytes doc/html/bdwn.png | Bin 0 -> 147 bytes doc/html/classes.html | 74 + doc/html/closed.png | Bin 0 -> 132 bytes .../dir_892610d5edbf830e6c6730bec4a58394.html | 66 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 67 + doc/html/doc.png | Bin 0 -> 746 bytes doc/html/doxygen.css | 1771 ++++++++++++ doc/html/doxygen.png | Bin 0 -> 3779 bytes doc/html/dynsections.js | 127 + doc/html/files.html | 63 + doc/html/folderclosed.png | Bin 0 -> 616 bytes doc/html/folderopen.png | Bin 0 -> 597 bytes doc/html/functions.html | 227 ++ doc/html/functions_vars.html | 227 ++ doc/html/globals.html | 108 + doc/html/globals_c.html | 186 ++ doc/html/globals_d.html | 63 + doc/html/globals_defs.html | 82 + doc/html/globals_enum.html | 106 + doc/html/globals_eval.html | 419 +++ doc/html/globals_f.html | 96 + doc/html/globals_func.html | 678 +++++ doc/html/globals_g.html | 63 + doc/html/globals_i.html | 78 + doc/html/globals_l.html | 90 + doc/html/globals_m.html | 57 + doc/html/globals_p.html | 840 ++++++ doc/html/globals_s.html | 93 + doc/html/globals_t.html | 81 + doc/html/globals_type.html | 184 ++ doc/html/globals_w.html | 60 + doc/html/group__attr.html | 590 ++++ doc/html/group__canvas.html | 714 +++++ doc/html/group__clip.html | 301 ++ doc/html/group__coder.html | 149 + doc/html/group__common.html | 221 ++ doc/html/group__context.html | 242 ++ doc/html/group__data.html | 199 ++ doc/html/group__drawing.html | 75 + doc/html/group__extension.html | 63 + doc/html/group__extimg.html | 69 + doc/html/group__fill.html | 267 ++ doc/html/group__font.html | 643 +++++ doc/html/group__functions.html | 431 +++ doc/html/group__geometry.html | 764 +++++ doc/html/group__gradient.html | 452 +++ doc/html/group__graphic.html | 87 + doc/html/group__image.html | 595 ++++ doc/html/group__interface.html | 163 ++ doc/html/group__mask.html | 245 ++ doc/html/group__matrix.html | 1200 ++++++++ doc/html/group__objects.html | 299 ++ doc/html/group__paint.html | 182 ++ doc/html/group__path.html | 1331 +++++++++ doc/html/group__pattern.html | 264 ++ doc/html/group__shadow.html | 188 ++ doc/html/group__state.html | 143 + doc/html/group__stroke.html | 690 +++++ doc/html/group__text.html | 928 ++++++ doc/html/group__transform.html | 483 ++++ doc/html/group__types.html | 439 +++ doc/html/index.html | 54 + doc/html/jquery.js | 35 + doc/html/menu.js | 50 + doc/html/menudata.js | 97 + doc/html/modules.html | 88 + doc/html/nav_f.png | Bin 0 -> 153 bytes doc/html/nav_g.png | Bin 0 -> 95 bytes doc/html/nav_h.png | Bin 0 -> 98 bytes doc/html/open.png | Bin 0 -> 123 bytes doc/html/picasso_8h.html | 1015 +++++++ doc/html/picasso_8h_source.html | 1105 +++++++ doc/html/psx__image_8h.html | 167 ++ doc/html/psx__image_8h_source.html | 165 ++ doc/html/psx__image__plugin_8h.html | 134 + doc/html/psx__image__plugin_8h_source.html | 150 + doc/html/splitbar.png | Bin 0 -> 314 bytes doc/html/struct__ps__color.html | 149 + doc/html/struct__ps__font__info.html | 168 ++ doc/html/struct__ps__glyph.html | 92 + doc/html/struct__ps__point.html | 111 + doc/html/struct__ps__rect.html | 149 + doc/html/struct__ps__size.html | 111 + doc/html/struct__psx__image.html | 187 ++ doc/html/struct__psx__image__frame.html | 149 + doc/html/struct__psx__image__header.html | 244 ++ doc/html/struct__psx__image__operator.html | 188 ++ doc/html/sync_off.png | Bin 0 -> 853 bytes doc/html/sync_on.png | Bin 0 -> 845 bytes doc/html/tab_a.png | Bin 0 -> 142 bytes doc/html/tab_b.png | Bin 0 -> 169 bytes doc/html/tab_h.png | Bin 0 -> 177 bytes doc/html/tab_s.png | Bin 0 -> 184 bytes doc/html/tabs.css | 1 + doc/latex/Makefile | 23 + doc/latex/annotated.tex | 13 + doc/latex/doxygen.sty | 576 ++++ doc/latex/files.tex | 6 + doc/latex/group__attr.tex | 494 ++++ doc/latex/group__canvas.tex | 446 +++ doc/latex/group__clip.tex | 146 + doc/latex/group__coder.tex | 70 + doc/latex/group__common.tex | 145 + doc/latex/group__context.tex | 139 + doc/latex/group__data.tex | 131 + doc/latex/group__drawing.tex | 22 + doc/latex/group__extension.tex | 10 + doc/latex/group__extimg.tex | 16 + doc/latex/group__fill.tex | 121 + doc/latex/group__font.tex | 391 +++ doc/latex/group__functions.tex | 221 ++ doc/latex/group__geometry.tex | 372 +++ doc/latex/group__gradient.tex | 262 ++ doc/latex/group__graphic.tex | 34 + doc/latex/group__image.tex | 339 +++ doc/latex/group__interface.tex | 67 + doc/latex/group__mask.tex | 129 + doc/latex/group__matrix.tex | 660 +++++ doc/latex/group__objects.tex | 210 ++ doc/latex/group__paint.tex | 91 + doc/latex/group__path.tex | 767 +++++ doc/latex/group__pattern.tex | 151 + doc/latex/group__shadow.tex | 79 + doc/latex/group__state.tex | 72 + doc/latex/group__stroke.tex | 423 +++ doc/latex/group__text.tex | 522 ++++ doc/latex/group__transform.tex | 238 ++ doc/latex/group__types.tex | 290 ++ doc/latex/longtable_doxygen.sty | 448 +++ doc/latex/modules.tex | 41 + doc/latex/picasso_8h.tex | 671 +++++ doc/latex/psx__image_8h.tex | 83 + doc/latex/psx__image__plugin_8h.tex | 61 + doc/latex/refman.tex | 213 ++ doc/latex/struct__ps__color.tex | 77 + doc/latex/struct__ps__font__info.tex | 89 + doc/latex/struct__ps__glyph.tex | 41 + doc/latex/struct__ps__point.tex | 53 + doc/latex/struct__ps__rect.tex | 77 + doc/latex/struct__ps__size.tex | 53 + doc/latex/struct__psx__image.tex | 101 + doc/latex/struct__psx__image__frame.tex | 77 + doc/latex/struct__psx__image__header.tex | 137 + doc/latex/struct__psx__image__operator.tex | 106 + doc/latex/tabu_doxygen.sty | 2557 +++++++++++++++++ doc/man/man3/_ps_color.3 | 54 + doc/man/man3/_ps_font_info.3 | 61 + doc/man/man3/_ps_glyph.3 | 33 + doc/man/man3/_ps_point.3 | 40 + doc/man/man3/_ps_rect.3 | 54 + doc/man/man3/_ps_size.3 | 40 + doc/man/man3/_psx_image.3 | 68 + doc/man/man3/_psx_image_frame.3 | 54 + doc/man/man3/_psx_image_header.3 | 89 + doc/man/man3/_psx_image_operator.3 | 77 + doc/man/man3/attr.3 | 421 +++ doc/man/man3/canvas.3 | 469 +++ doc/man/man3/clip.3 | 157 + doc/man/man3/coder.3 | 83 + doc/man/man3/common.3 | 133 + doc/man/man3/context.3 | 164 ++ doc/man/man3/data.3 | 128 + doc/man/man3/drawing.3 | 39 + doc/man/man3/extension.3 | 21 + doc/man/man3/extimg.3 | 30 + doc/man/man3/fill.3 | 130 + doc/man/man3/font.3 | 403 +++ doc/man/man3/functions.3 | 248 ++ doc/man/man3/geometry.3 | 383 +++ doc/man/man3/gradient.3 | 278 ++ doc/man/man3/graphic.3 | 57 + doc/man/man3/image.3 | 384 +++ doc/man/man3/interface.3 | 80 + doc/man/man3/mask.3 | 146 + doc/man/man3/matrix.3 | 697 +++++ doc/man/man3/objects.3 | 217 ++ doc/man/man3/paint.3 | 100 + doc/man/man3/path.3 | 779 +++++ doc/man/man3/pattern.3 | 161 ++ doc/man/man3/picasso.h.3 | 1085 +++++++ doc/man/man3/psx_image.h.3 | 145 + doc/man/man3/psx_image_plugin.h.3 | 111 + doc/man/man3/shadow.3 | 88 + doc/man/man3/state.3 | 99 + doc/man/man3/stroke.3 | 403 +++ doc/man/man3/text.3 | 508 ++++ doc/man/man3/transform.3 | 249 ++ doc/man/man3/types.3 | 273 ++ 191 files changed, 44801 insertions(+), 1 deletion(-) create mode 100644 doc/html/annotated.html create mode 100644 doc/html/bc_s.png create mode 100644 doc/html/bdwn.png create mode 100644 doc/html/classes.html create mode 100644 doc/html/closed.png create mode 100644 doc/html/dir_892610d5edbf830e6c6730bec4a58394.html create mode 100644 doc/html/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/html/doc.png create mode 100644 doc/html/doxygen.css create mode 100644 doc/html/doxygen.png create mode 100644 doc/html/dynsections.js create mode 100644 doc/html/files.html create mode 100644 doc/html/folderclosed.png create mode 100644 doc/html/folderopen.png create mode 100644 doc/html/functions.html create mode 100644 doc/html/functions_vars.html create mode 100644 doc/html/globals.html create mode 100644 doc/html/globals_c.html create mode 100644 doc/html/globals_d.html create mode 100644 doc/html/globals_defs.html create mode 100644 doc/html/globals_enum.html create mode 100644 doc/html/globals_eval.html create mode 100644 doc/html/globals_f.html create mode 100644 doc/html/globals_func.html create mode 100644 doc/html/globals_g.html create mode 100644 doc/html/globals_i.html create mode 100644 doc/html/globals_l.html create mode 100644 doc/html/globals_m.html create mode 100644 doc/html/globals_p.html create mode 100644 doc/html/globals_s.html create mode 100644 doc/html/globals_t.html create mode 100644 doc/html/globals_type.html create mode 100644 doc/html/globals_w.html create mode 100644 doc/html/group__attr.html create mode 100644 doc/html/group__canvas.html create mode 100644 doc/html/group__clip.html create mode 100644 doc/html/group__coder.html create mode 100644 doc/html/group__common.html create mode 100644 doc/html/group__context.html create mode 100644 doc/html/group__data.html create mode 100644 doc/html/group__drawing.html create mode 100644 doc/html/group__extension.html create mode 100644 doc/html/group__extimg.html create mode 100644 doc/html/group__fill.html create mode 100644 doc/html/group__font.html create mode 100644 doc/html/group__functions.html create mode 100644 doc/html/group__geometry.html create mode 100644 doc/html/group__gradient.html create mode 100644 doc/html/group__graphic.html create mode 100644 doc/html/group__image.html create mode 100644 doc/html/group__interface.html create mode 100644 doc/html/group__mask.html create mode 100644 doc/html/group__matrix.html create mode 100644 doc/html/group__objects.html create mode 100644 doc/html/group__paint.html create mode 100644 doc/html/group__path.html create mode 100644 doc/html/group__pattern.html create mode 100644 doc/html/group__shadow.html create mode 100644 doc/html/group__state.html create mode 100644 doc/html/group__stroke.html create mode 100644 doc/html/group__text.html create mode 100644 doc/html/group__transform.html create mode 100644 doc/html/group__types.html create mode 100644 doc/html/index.html create mode 100644 doc/html/jquery.js create mode 100644 doc/html/menu.js create mode 100644 doc/html/menudata.js create mode 100644 doc/html/modules.html create mode 100644 doc/html/nav_f.png create mode 100644 doc/html/nav_g.png create mode 100644 doc/html/nav_h.png create mode 100644 doc/html/open.png create mode 100644 doc/html/picasso_8h.html create mode 100644 doc/html/picasso_8h_source.html create mode 100644 doc/html/psx__image_8h.html create mode 100644 doc/html/psx__image_8h_source.html create mode 100644 doc/html/psx__image__plugin_8h.html create mode 100644 doc/html/psx__image__plugin_8h_source.html create mode 100644 doc/html/splitbar.png create mode 100644 doc/html/struct__ps__color.html create mode 100644 doc/html/struct__ps__font__info.html create mode 100644 doc/html/struct__ps__glyph.html create mode 100644 doc/html/struct__ps__point.html create mode 100644 doc/html/struct__ps__rect.html create mode 100644 doc/html/struct__ps__size.html create mode 100644 doc/html/struct__psx__image.html create mode 100644 doc/html/struct__psx__image__frame.html create mode 100644 doc/html/struct__psx__image__header.html create mode 100644 doc/html/struct__psx__image__operator.html create mode 100644 doc/html/sync_off.png create mode 100644 doc/html/sync_on.png create mode 100644 doc/html/tab_a.png create mode 100644 doc/html/tab_b.png create mode 100644 doc/html/tab_h.png create mode 100644 doc/html/tab_s.png create mode 100644 doc/html/tabs.css create mode 100644 doc/latex/Makefile create mode 100644 doc/latex/annotated.tex create mode 100644 doc/latex/doxygen.sty create mode 100644 doc/latex/files.tex create mode 100644 doc/latex/group__attr.tex create mode 100644 doc/latex/group__canvas.tex create mode 100644 doc/latex/group__clip.tex create mode 100644 doc/latex/group__coder.tex create mode 100644 doc/latex/group__common.tex create mode 100644 doc/latex/group__context.tex create mode 100644 doc/latex/group__data.tex create mode 100644 doc/latex/group__drawing.tex create mode 100644 doc/latex/group__extension.tex create mode 100644 doc/latex/group__extimg.tex create mode 100644 doc/latex/group__fill.tex create mode 100644 doc/latex/group__font.tex create mode 100644 doc/latex/group__functions.tex create mode 100644 doc/latex/group__geometry.tex create mode 100644 doc/latex/group__gradient.tex create mode 100644 doc/latex/group__graphic.tex create mode 100644 doc/latex/group__image.tex create mode 100644 doc/latex/group__interface.tex create mode 100644 doc/latex/group__mask.tex create mode 100644 doc/latex/group__matrix.tex create mode 100644 doc/latex/group__objects.tex create mode 100644 doc/latex/group__paint.tex create mode 100644 doc/latex/group__path.tex create mode 100644 doc/latex/group__pattern.tex create mode 100644 doc/latex/group__shadow.tex create mode 100644 doc/latex/group__state.tex create mode 100644 doc/latex/group__stroke.tex create mode 100644 doc/latex/group__text.tex create mode 100644 doc/latex/group__transform.tex create mode 100644 doc/latex/group__types.tex create mode 100644 doc/latex/longtable_doxygen.sty create mode 100644 doc/latex/modules.tex create mode 100644 doc/latex/picasso_8h.tex create mode 100644 doc/latex/psx__image_8h.tex create mode 100644 doc/latex/psx__image__plugin_8h.tex create mode 100644 doc/latex/refman.tex create mode 100644 doc/latex/struct__ps__color.tex create mode 100644 doc/latex/struct__ps__font__info.tex create mode 100644 doc/latex/struct__ps__glyph.tex create mode 100644 doc/latex/struct__ps__point.tex create mode 100644 doc/latex/struct__ps__rect.tex create mode 100644 doc/latex/struct__ps__size.tex create mode 100644 doc/latex/struct__psx__image.tex create mode 100644 doc/latex/struct__psx__image__frame.tex create mode 100644 doc/latex/struct__psx__image__header.tex create mode 100644 doc/latex/struct__psx__image__operator.tex create mode 100644 doc/latex/tabu_doxygen.sty create mode 100644 doc/man/man3/_ps_color.3 create mode 100644 doc/man/man3/_ps_font_info.3 create mode 100644 doc/man/man3/_ps_glyph.3 create mode 100644 doc/man/man3/_ps_point.3 create mode 100644 doc/man/man3/_ps_rect.3 create mode 100644 doc/man/man3/_ps_size.3 create mode 100644 doc/man/man3/_psx_image.3 create mode 100644 doc/man/man3/_psx_image_frame.3 create mode 100644 doc/man/man3/_psx_image_header.3 create mode 100644 doc/man/man3/_psx_image_operator.3 create mode 100644 doc/man/man3/attr.3 create mode 100644 doc/man/man3/canvas.3 create mode 100644 doc/man/man3/clip.3 create mode 100644 doc/man/man3/coder.3 create mode 100644 doc/man/man3/common.3 create mode 100644 doc/man/man3/context.3 create mode 100644 doc/man/man3/data.3 create mode 100644 doc/man/man3/drawing.3 create mode 100644 doc/man/man3/extension.3 create mode 100644 doc/man/man3/extimg.3 create mode 100644 doc/man/man3/fill.3 create mode 100644 doc/man/man3/font.3 create mode 100644 doc/man/man3/functions.3 create mode 100644 doc/man/man3/geometry.3 create mode 100644 doc/man/man3/gradient.3 create mode 100644 doc/man/man3/graphic.3 create mode 100644 doc/man/man3/image.3 create mode 100644 doc/man/man3/interface.3 create mode 100644 doc/man/man3/mask.3 create mode 100644 doc/man/man3/matrix.3 create mode 100644 doc/man/man3/objects.3 create mode 100644 doc/man/man3/paint.3 create mode 100644 doc/man/man3/path.3 create mode 100644 doc/man/man3/pattern.3 create mode 100644 doc/man/man3/picasso.h.3 create mode 100644 doc/man/man3/psx_image.h.3 create mode 100644 doc/man/man3/psx_image_plugin.h.3 create mode 100644 doc/man/man3/shadow.3 create mode 100644 doc/man/man3/state.3 create mode 100644 doc/man/man3/stroke.3 create mode 100644 doc/man/man3/text.3 create mode 100644 doc/man/man3/transform.3 create mode 100644 doc/man/man3/types.3 diff --git a/Doxyfile b/Doxyfile index 56a1895..4fe4cb3 100644 --- a/Doxyfile +++ b/Doxyfile @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "Picasso API" -PROJECT_NUMBER = 2.5 +PROJECT_NUMBER = 2.8 OUTPUT_DIRECTORY = ./doc/ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff --git a/doc/html/annotated.html b/doc/html/annotated.html new file mode 100644 index 0000000..994de77 --- /dev/null +++ b/doc/html/annotated.html @@ -0,0 +1,68 @@ + + + + + + + +Picasso API: Data Structures + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + + + + + + + + + + +
 C_ps_colorA structure that contains rgba values for a color
 C_ps_font_infoA structure that contains font information
 C_ps_glyphA character glyph of a font
 C_ps_pointA structure that contains a point in a two-dimensional coordinate system
 C_ps_rectA structure that contains location and dimensions of a rectangle
 C_ps_sizeA structure that contains width and height values
 C_psx_imageA image object
 C_psx_image_frameA frame image data
 C_psx_image_headerImage reader header define
 C_psx_image_operatorThe image operator define
+
+
+ + + + diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/html/bdwn.png b/doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Picasso API: Data Structure Index + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
+
Data Structure Index
+
+
+ + + + + + + + + + + + + + + + + +
  _  
+
_ps_font_info   _ps_rect   _psx_image_frame   
_ps_glyph   _ps_size   _psx_image_header   
_ps_color   _ps_point   _psx_image   _psx_image_operator   
+ +
+ + + + diff --git a/doc/html/closed.png b/doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/html/dir_892610d5edbf830e6c6730bec4a58394.html b/doc/html/dir_892610d5edbf830e6c6730bec4a58394.html new file mode 100644 index 0000000..66cea92 --- /dev/null +++ b/doc/html/dir_892610d5edbf830e6c6730bec4a58394.html @@ -0,0 +1,66 @@ + + + + + + + +Picasso API: include/images Directory Reference + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + + +
+
+
+
images Directory Reference
+
+
+ + + + + + +

+Files

file  psx_image.h [code]
 
file  psx_image_plugin.h [code]
 
+
+ + + + diff --git a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..a0af349 --- /dev/null +++ b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,67 @@ + + + + + + + +Picasso API: include Directory Reference + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + + +
+
+
+
include Directory Reference
+
+
+ + +

+Directories

+ + + +

+Files

file  picasso.h [code]
 
+
+ + + + diff --git a/doc/html/doc.png b/doc/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css new file mode 100644 index 0000000..73ecbb2 --- /dev/null +++ b/doc/html/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/doc/html/dynsections.js b/doc/html/dynsections.js new file mode 100644 index 0000000..c8e84aa --- /dev/null +++ b/doc/html/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Picasso API: File List + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + +
  include
  images
 psx_image.h
 psx_image_plugin.h
 picasso.h
+
+
+ + + + diff --git a/doc/html/folderclosed.png b/doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/doc/html/functions.html b/doc/html/functions.html new file mode 100644 index 0000000..654edd0 --- /dev/null +++ b/doc/html/functions.html @@ -0,0 +1,227 @@ + + + + + + + +Picasso API: Data Fields + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+ + +

- w -

+ + +

- x -

+ + +

- y -

+
+ + + + diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html new file mode 100644 index 0000000..78b8ad5 --- /dev/null +++ b/doc/html/functions_vars.html @@ -0,0 +1,227 @@ + + + + + + + +Picasso API: Data Fields - Variables + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+  + +

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+ + +

- w -

+ + +

- x -

+ + +

- y -

+
+ + + + diff --git a/doc/html/globals.html b/doc/html/globals.html new file mode 100644 index 0000000..7f3b516 --- /dev/null +++ b/doc/html/globals.html @@ -0,0 +1,108 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- _ -

+
+ + + + diff --git a/doc/html/globals_c.html b/doc/html/globals_c.html new file mode 100644 index 0000000..deefca4 --- /dev/null +++ b/doc/html/globals_c.html @@ -0,0 +1,186 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- c -

+
+ + + + diff --git a/doc/html/globals_d.html b/doc/html/globals_d.html new file mode 100644 index 0000000..decbdd8 --- /dev/null +++ b/doc/html/globals_d.html @@ -0,0 +1,63 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- d -

+
+ + + + diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html new file mode 100644 index 0000000..3ed44ae --- /dev/null +++ b/doc/html/globals_defs.html @@ -0,0 +1,82 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/doc/html/globals_enum.html b/doc/html/globals_enum.html new file mode 100644 index 0000000..10cb40c --- /dev/null +++ b/doc/html/globals_enum.html @@ -0,0 +1,106 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/doc/html/globals_eval.html b/doc/html/globals_eval.html new file mode 100644 index 0000000..92fe307 --- /dev/null +++ b/doc/html/globals_eval.html @@ -0,0 +1,419 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+  + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- l -

+ + +

- p -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+
+ + + + diff --git a/doc/html/globals_f.html b/doc/html/globals_f.html new file mode 100644 index 0000000..f1b1e13 --- /dev/null +++ b/doc/html/globals_f.html @@ -0,0 +1,96 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- f -

+
+ + + + diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html new file mode 100644 index 0000000..49f2054 --- /dev/null +++ b/doc/html/globals_func.html @@ -0,0 +1,678 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+  + +

- p -

+
+ + + + diff --git a/doc/html/globals_g.html b/doc/html/globals_g.html new file mode 100644 index 0000000..ed2c342 --- /dev/null +++ b/doc/html/globals_g.html @@ -0,0 +1,63 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- g -

+
+ + + + diff --git a/doc/html/globals_i.html b/doc/html/globals_i.html new file mode 100644 index 0000000..70d0868 --- /dev/null +++ b/doc/html/globals_i.html @@ -0,0 +1,78 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- i -

+
+ + + + diff --git a/doc/html/globals_l.html b/doc/html/globals_l.html new file mode 100644 index 0000000..487926d --- /dev/null +++ b/doc/html/globals_l.html @@ -0,0 +1,90 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- l -

+
+ + + + diff --git a/doc/html/globals_m.html b/doc/html/globals_m.html new file mode 100644 index 0000000..f050275 --- /dev/null +++ b/doc/html/globals_m.html @@ -0,0 +1,57 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- m -

+
+ + + + diff --git a/doc/html/globals_p.html b/doc/html/globals_p.html new file mode 100644 index 0000000..2b030d1 --- /dev/null +++ b/doc/html/globals_p.html @@ -0,0 +1,840 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- p -

+
+ + + + diff --git a/doc/html/globals_s.html b/doc/html/globals_s.html new file mode 100644 index 0000000..4c1b448 --- /dev/null +++ b/doc/html/globals_s.html @@ -0,0 +1,93 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- s -

+
+ + + + diff --git a/doc/html/globals_t.html b/doc/html/globals_t.html new file mode 100644 index 0000000..8166087 --- /dev/null +++ b/doc/html/globals_t.html @@ -0,0 +1,81 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- t -

+
+ + + + diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html new file mode 100644 index 0000000..643c6cb --- /dev/null +++ b/doc/html/globals_type.html @@ -0,0 +1,184 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+  + +

- i -

+ + +

- p -

+
+ + + + diff --git a/doc/html/globals_w.html b/doc/html/globals_w.html new file mode 100644 index 0000000..18a6cdd --- /dev/null +++ b/doc/html/globals_w.html @@ -0,0 +1,60 @@ + + + + + + + +Picasso API: Globals + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- w -

+
+ + + + diff --git a/doc/html/group__attr.html b/doc/html/group__attr.html new file mode 100644 index 0000000..316b9b1 --- /dev/null +++ b/doc/html/group__attr.html @@ -0,0 +1,590 @@ + + + + + + + +Picasso API: Attribute + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + +

+Typedefs

+typedef enum _ps_composite ps_composite
 Compositing operations for graphics context.
 
+typedef enum _ps_filter ps_filter
 Graphics quality for rendering an image.
 
+typedef enum _ps_fill_rule ps_fill_rule
 Fill rules for graphics.
 
+ + + + + + + + + + +

+Enumerations

enum  _ps_composite {
+  COMPOSITE_CLEAR, +COMPOSITE_SRC, +COMPOSITE_SRC_OVER, +COMPOSITE_SRC_IN, +
+  COMPOSITE_SRC_OUT, +COMPOSITE_SRC_ATOP, +COMPOSITE_DST, +COMPOSITE_DST_OVER, +
+  COMPOSITE_DST_IN, +COMPOSITE_DST_OUT, +COMPOSITE_DST_ATOP, +COMPOSITE_XOR, +
+  COMPOSITE_DARKEN, +COMPOSITE_LIGHTEN, +COMPOSITE_OVERLAY, +COMPOSITE_SCREEN, +
+  COMPOSITE_MULTIPLY, +COMPOSITE_PLUS, +COMPOSITE_MINUS, +COMPOSITE_EXCLUSION, +
+  COMPOSITE_DIFFERENCE, +COMPOSITE_SOFTLIGHT, +COMPOSITE_HARDLIGHT, +COMPOSITE_BURN, +
+  COMPOSITE_DODGE, +COMPOSITE_CONTRAST, +COMPOSITE_INVERT, +COMPOSITE_INVERT_BLEND, +
+  COMPOSITE_HUE, +COMPOSITE_SATURATION, +COMPOSITE_COLOR, +COMPOSITE_LUMINOSITY, +
+  COMPOSITE_ERROR +
+ }
 Compositing operations for graphics context. More...
 
enum  _ps_filter {
+  FILTER_NEAREST, +FILTER_BILINEAR, +FILTER_GAUSSIAN, +FILTER_BICUBIC, +
+  FILTER_QUADRIC, +FILTER_UNKNOWN +
+ }
 Graphics quality for rendering an image. More...
 
enum  _ps_fill_rule { FILL_RULE_WINDING, +FILL_RULE_EVEN_ODD, +FILL_RULE_ERROR + }
 Fill rules for graphics. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT ps_composite PICAPI ps_set_composite_operator (ps_context *ctx, ps_composite composite)
 Set composites opertaions for graphics context. More...
 
PEXPORT ps_filter PICAPI ps_set_filter (ps_context *ctx, ps_filter filter)
 Set interpolation filter for graphic context. More...
 
PEXPORT ps_fill_rule PICAPI ps_set_fill_rule (ps_context *ctx, ps_fill_rule rule)
 Set fill rule for graphic context. More...
 
PEXPORT float PICAPI ps_set_alpha (ps_context *ctx, float alpha)
 Set the opacity level for objects drawn in graphic context. More...
 
PEXPORT float PICAPI ps_set_gamma (ps_context *ctx, float gamma)
 Set the gamma value for the graphic context. More...
 
PEXPORT void PICAPI ps_set_antialias (ps_context *ctx, ps_bool antialias)
 Set whether the Anti-aliasing should be turn on. More...
 
PEXPORT float PICAPI ps_set_blur (ps_context *ctx, float blur)
 Set the blur level for the graphic context. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_composite

+ +
+
+ + + + +
enum _ps_composite
+
+ +

Compositing operations for graphics context.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
COMPOSITE_CLEAR 

Clear operation.

+
COMPOSITE_SRC 

Source operation.

+
COMPOSITE_SRC_OVER 

Source over operation. (Default)

+
COMPOSITE_SRC_IN 

Source in operation.

+
COMPOSITE_SRC_OUT 

Source out operation.

+
COMPOSITE_SRC_ATOP 

Source atop operation.

+
COMPOSITE_DST 

Destination operation.

+
COMPOSITE_DST_OVER 

Destination over operation.

+
COMPOSITE_DST_IN 

Destination in operation.

+
COMPOSITE_DST_OUT 

Destination out operation.

+
COMPOSITE_DST_ATOP 

Destination atop operation.

+
COMPOSITE_XOR 

Xor operation.

+
COMPOSITE_DARKEN 

Source darker operation.

+
COMPOSITE_LIGHTEN 

Source lighter operation.

+
COMPOSITE_OVERLAY 

Overlay operation.

+
COMPOSITE_SCREEN 

Screen operation.

+
COMPOSITE_MULTIPLY 

Multiply operation.

+
COMPOSITE_PLUS 

Plus operation.

+
COMPOSITE_MINUS 

Minus operation.

+
COMPOSITE_EXCLUSION 

Exclusion operation.

+
COMPOSITE_DIFFERENCE 

Difference operation.

+
COMPOSITE_SOFTLIGHT 

Softlight operation.

+
COMPOSITE_HARDLIGHT 

Hardlight operation.

+
COMPOSITE_BURN 

Burn operation.

+
COMPOSITE_DODGE 

Dodge operation.

+
COMPOSITE_CONTRAST 

Contrast operation.

+
COMPOSITE_INVERT 

Invert operation.

+
COMPOSITE_INVERT_BLEND 

Invert blend operation.

+
COMPOSITE_HUE 

Hue operation.

+
COMPOSITE_SATURATION 

Saturation operation.

+
COMPOSITE_COLOR 

Color operation.

+
COMPOSITE_LUMINOSITY 

Luminosity operation.

+
COMPOSITE_ERROR 

Error value.

+
+ +

Definition at line 1508 of file picasso.h.

+ +
+
+ +

◆ _ps_fill_rule

+ +
+
+ + + + +
enum _ps_fill_rule
+
+ +

Fill rules for graphics.

+ + + + +
Enumerator
FILL_RULE_WINDING 

Nonzero winding fill rule. (Default)

+
FILL_RULE_EVEN_ODD 

Even-odd fill rule.

+
FILL_RULE_ERROR 

Error value.

+
+ +

Definition at line 1642 of file picasso.h.

+ +
+
+ +

◆ _ps_filter

+ +
+
+ + + + +
enum _ps_filter
+
+ +

Graphics quality for rendering an image.

+ + + + + + + +
Enumerator
FILTER_NEAREST 

No interpolation filter.

+
FILTER_BILINEAR 

Bilinear interpolation filter. (Default)

+
FILTER_GAUSSIAN 

Gaussian interpolation filter.

+
FILTER_BICUBIC 

Bicubic interpolation filter.

+
FILTER_QUADRIC 

Quadric interpolation filter.

+
FILTER_UNKNOWN 

Error value.

+
+ +

Definition at line 1596 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_set_alpha()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float ps_set_alpha (ps_contextctx,
float alpha 
)
+
+ +

Set the opacity level for objects drawn in graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
alphaA value that specifies the opacity level from transparent to opaque(0 ~ 1). Default level is opaque (1).
+
+
+
Returns
If the function succeeds, the return value is the old level. If the function fails, the return value is 0.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_set_gamma, ps_set_blur, ps_set_antialias
+ +
+
+ +

◆ ps_set_antialias()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_antialias (ps_contextctx,
ps_bool antialias 
)
+
+ +

Set whether the Anti-aliasing should be turn on.

+
Parameters
+ + + +
ctxPointer to an existing context object.
antialiasBoolean value whether the anti-aliasing is turn on. (True default)
+
+
+
See also
ps_set_alpha, ps_set_blur, ps_set_gamma
+ +
+
+ +

◆ ps_set_blur()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float ps_set_blur (ps_contextctx,
float blur 
)
+
+ +

Set the blur level for the graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
blurA value that specifies the blur level (0 ~ 1). Default value is none blur (0).
+
+
+
Returns
If the function succeeds, the return value is the old level. If the function fails, the return value is 0.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_set_alpha, ps_set_gamma, ps_set_antialias
+ +
+
+ +

◆ ps_set_composite_operator()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_composite ps_set_composite_operator (ps_contextctx,
ps_composite composite 
)
+
+ +

Set composites opertaions for graphics context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
compositeThe Composite operation to be set.
+
+
+
Returns
If the function succeeds, the return value is the old operation. If the function fails, the return value is COMPOSITE_ERROR.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_set_filter, ps_set_fill_rule
+ +
+
+ +

◆ ps_set_fill_rule()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_fill_rule ps_set_fill_rule (ps_contextctx,
ps_fill_rule rule 
)
+
+ +

Set fill rule for graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
ruleThe fill rule to be set.
+
+
+
Returns
If the function succeeds, the return value is the old rule. If the function fails, the return value is FILL_RULE_ERROR.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_set_composite_operator, ps_set_filter
+ +
+
+ +

◆ ps_set_filter()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_filter ps_set_filter (ps_contextctx,
ps_filter filter 
)
+
+ +

Set interpolation filter for graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
filterThe interpolation filter to be set.
+
+
+
Returns
If the function succeeds, the return value is the old filter. If the function fails, the return value is FILTER_UNKNOWN.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_set_composite_operator, ps_set_fill_rule
+ +
+
+ +

◆ ps_set_gamma()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float ps_set_gamma (ps_contextctx,
float gamma 
)
+
+ +

Set the gamma value for the graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
gammaA value that specifies the gamma (0 ~ 3). Default value is 1.
+
+
+
Returns
If the function succeeds, the return value is the old one. If the function fails, the return value is 0.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_set_alpha, ps_set_blur, ps_set_antialias
+ +
+
+
+ + + + diff --git a/doc/html/group__canvas.html b/doc/html/group__canvas.html new file mode 100644 index 0000000..42fabd2 --- /dev/null +++ b/doc/html/group__canvas.html @@ -0,0 +1,714 @@ + + + + + + + +Picasso API: Canvas + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + +

+Typedefs

+typedef enum _ps_color_format ps_color_format
 Pixel formats of canvas or image.
 
+ + + + +

+Enumerations

enum  _ps_color_format {
+  COLOR_FORMAT_RGBA, +COLOR_FORMAT_ARGB, +COLOR_FORMAT_ABGR, +COLOR_FORMAT_BGRA, +
+  COLOR_FORMAT_RGB, +COLOR_FORMAT_BGR, +COLOR_FORMAT_RGB565, +COLOR_FORMAT_RGB555, +
+  COLOR_FORMAT_UNKNOWN +
+ }
 Pixel formats of canvas or image. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT ps_canvas *PICAPI ps_canvas_create (ps_color_format fmt, int width, int height)
 Create a new canvas using the given parameters. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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_canvas_create_with_data. More...
 
PEXPORT ps_canvas *PICAPI ps_canvas_ref (ps_canvas *canvas)
 Increases the reference count of the canvas by 1. More...
 
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, the canvas is freed. More...
 
PEXPORT ps_bool PICAPI ps_canvas_get_size (const ps_canvas *canvas, ps_size *rsize)
 Return the size of the canvas. More...
 
PEXPORT ps_color_format PICAPI ps_canvas_get_format (const ps_canvas *canvas)
 Return the pixel format of the canvas. More...
 
PEXPORT void PICAPI ps_canvas_set_mask (ps_canvas *canvas, const ps_mask *mask)
 Set a new mask into an existing canvas object. More...
 
PEXPORT void PICAPI ps_canvas_reset_mask (ps_canvas *canvas)
 Clear the mask from the canvas object. More...
 
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. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_color_format

+ +
+
+ + + + +
enum _ps_color_format
+
+ +

Pixel formats of canvas or image.

+ + + + + + + + + + +
Enumerator
COLOR_FORMAT_RGBA 

32bpp, 8bpc, RGBA color space.

+
COLOR_FORMAT_ARGB 

32bpp, 8bpc, ARGB color space.

+
COLOR_FORMAT_ABGR 

32bpp, 8bpc, ABGR color space.

+
COLOR_FORMAT_BGRA 

32bpp, 8bpc, BGRA color space.

+
COLOR_FORMAT_RGB 

24bpp, 8bpc, RGB color space.

+
COLOR_FORMAT_BGR 

24bpp, 8bpc, BGR color space.

+
COLOR_FORMAT_RGB565 

16bpp, 5/6bpc, RGB color space.

+
COLOR_FORMAT_RGB555 

16bpp, 5bpc, RGB color space.

+
COLOR_FORMAT_UNKNOWN 

Unsupported color space.

+
+ +

Definition at line 394 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_canvas_bitblt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_canvas_bitblt (ps_canvassrc,
const ps_rectrect,
ps_canvasdst,
const ps_pointlocation 
)
+
+ +

Copy raster data between two canvas objects.

+
Parameters
+ + + + + +
srcThe pointer to source canvas object.
rectThe rectangle area will be copied in source canvas, NULL mean the whole area.
dstThe pointer to destination canvas object.
locationThe location of the start point at destination canvas object.
+
+
+
Note
The two canvas's color format must be equal, otherwish will be failed and STATUS_MISMATCHING_FORMAT will be set.
+
See also
ps_canvas_get_size, ps_canvas_get_format
+ +
+
+ +

◆ ps_canvas_create()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_canvas * ps_canvas_create (ps_color_format fmt,
int width,
int height 
)
+
+ +

Create a new canvas using the given parameters.

+
Parameters
+ + + + +
fmtThe Pixel format to use for the canvas.
widthThe width, in pixels, of the required canvas.
heightThe height, in pixels, of the required canvas.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_canvas_create_with_data, ps_canvas_create_compatible, ps_canvas_create_from_canvas, ps_canvas_create_from_image, ps_canvas_ref, ps_canvas_unref
+ +
+
+ +

◆ ps_canvas_create_compatible()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_canvas * ps_canvas_create_compatible (const ps_canvascanvas,
int width,
int height 
)
+
+ +

Create a new canvas to compatible with an existing canvas.

+
Parameters
+ + + + +
canvasA pointer to an existing canvas.
widthThe width, in pixels, of the required canvas. If it is not more than zero, the width will be equal to the width of the reference canvas.
heightThe height, in pixels, of the required canvas. If it is not more than zero, the height will be equal to the height of the reference canvas.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_canvas_create, ps_canvas_create_with_data, ps_canvas_create_from_canvas, ps_canvas_create_from_image, ps_canvas_ref, ps_canvas_unref
+ +
+
+ +

◆ ps_canvas_create_from_canvas()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_canvas * ps_canvas_create_from_canvas (ps_canvascanvas,
const ps_rectrect 
)
+
+ +

Create a new canvas using part of an existing canvas in same pixel buffer.

+
Parameters
+ + + +
canvasA pointer to an existing canvas.
rectThe rectangle area of the canvas from the parent canvas. If it is NULL, the canvas's width and height will be equal to the parant canvas.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_canvas_create, ps_canvas_create_with_data, ps_canvas_create_compatible, ps_canvas_create_from_image, ps_canvas_ref, ps_canvas_unref
+ +
+
+ +

◆ ps_canvas_create_from_image()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_canvas * ps_canvas_create_from_image (ps_imageimg,
const ps_rectrect 
)
+
+ +

Create a new canvas using part of an existing ps_image object in same pixel buffer.

+
Parameters
+ + + +
imgA pointer to an existing ps_image object.
rectThe rectangle area of the canvas from the ps_image. If it is NULL, the canvas's width and height will be equal to ps_image object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_canvas_create, ps_canvas_create_with_data, ps_canvas_create_compatible, ps_canvas_create_from_canvas, ps_canvas_ref, ps_canvas_unref
+ +
+
+ +

◆ ps_canvas_create_with_data()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_canvas * ps_canvas_create_with_data (ps_bytedata,
ps_color_format fmt,
int width,
int height,
int pitch 
)
+
+ +

Create a new canvas using a given address in memory.

+
Parameters
+ + + + + + +
dataA pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch * height) bytes.
fmtThe Pixel format to use for the canvas.
widthThe width, in pixels, of the required canvas.
heightThe height, in pixels, of the required canvas.
pitchThe number of bytes per row, of the required canvas.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_canvas_create, ps_canvas_create_compatible, ps_canvas_create_from_canvas, ps_canvas_create_from_image, ps_canvas_ref, ps_canvas_unref, ps_canvas_replace_data
+ +
+
+ +

◆ ps_canvas_get_format()

+ +
+
+ + + + + + + + +
ps_color_format ps_canvas_get_format (const ps_canvascanvas)
+
+ +

Return the pixel format of the canvas.

+
Parameters
+ + +
canvasPointer to an existing canvas object.
+
+
+
Returns
If the function succeeds, the return a valid color format. If the function fails, the return value is COLOR_FORMAT_UNKNOWN.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_canvas_get_size
+ +
+
+ +

◆ ps_canvas_get_size()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_bool ps_canvas_get_size (const ps_canvascanvas,
ps_sizersize 
)
+
+ +

Return the size of the canvas.

+
Parameters
+ + + +
canvasPointer to an existing canvas object.
rsizePointer to a buffer to receiving the size.
+
+
+
Returns
True if is success, otherwise False.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_canvas_get_format
+ +
+
+ +

◆ ps_canvas_ref()

+ +
+
+ + + + + + + + +
ps_canvas * ps_canvas_ref (ps_canvascanvas)
+
+ +

Increases the reference count of the canvas by 1.

+
Parameters
+ + +
canvasPointer to an existing canvas object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the canvas object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_canvas_create, ps_canvas_create_with_data, ps_canvas_create_compatible, ps_canvas_create_from_canvas, ps_canvas_create_from_image, ps_canvas_unref
+ +
+
+ +

◆ ps_canvas_replace_data()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_canvas *PICAPI ps_canvas_replace_data (ps_canvascanvas,
ps_bytedata,
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_canvas_create_with_data.

+
Parameters
+ + + + + + + +
canvasPointer to an existing canvas object.
dataA pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch * height) bytes.
fmtThe Pixel format to use for the canvas.
widthThe width, in pixels, of the required canvas.
heightThe height, in pixels, of the required canvas.
pitchThe number of bytes per row, of the required canvas.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is NULL.
+
Note
The data's color format must be equal with target canvas, otherwish will be failed and STATUS_MISMATCHING_FORMAT will be set.
+
See also
ps_canvas_create_with_data
+ +
+
+ +

◆ ps_canvas_reset_mask()

+ +
+
+ + + + + + + + +
void ps_canvas_reset_mask (ps_canvascanvas)
+
+ +

Clear the mask from the canvas object.

+
Parameters
+ + +
canvasPointer to an existing canvas object.
+
+
+
See also
ps_canvas_set_mask
+ +
+
+ +

◆ ps_canvas_set_mask()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_canvas_set_mask (ps_canvascanvas,
const ps_maskmask 
)
+
+ +

Set a new mask into an existing canvas object.

+
Parameters
+ + + +
canvasPointer to an existing canvas object.
maskPointer to an existing mask object to be set.
+
+
+
See also
ps_canvas_reset_mask
+ +
+
+ +

◆ ps_canvas_unref()

+ +
+
+ + + + + + + + +
void ps_canvas_unref (ps_canvascanvas)
+
+ +

Decrements the reference count for the canvas object. If the reference count on the canvas falls to 0, the canvas is freed.

+
Parameters
+ + +
canvasPointer to an existing canvas object.
+
+
+
See also
ps_canvas_create, ps_canvas_create_with_data, ps_canvas_create_compatible, ps_canvas_create_from_canvas, ps_canvas_create_from_image, ps_canvas_ref
+ +
+
+
+ + + + diff --git a/doc/html/group__clip.html b/doc/html/group__clip.html new file mode 100644 index 0000000..f70cabc --- /dev/null +++ b/doc/html/group__clip.html @@ -0,0 +1,301 @@ + + + + + + + +Picasso API: Clip + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT void PICAPI ps_clip (ps_context *ctx)
 Clipping the current path, using the current fill rule. After called, the current path will be cleared from the context. More...
 
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. More...
 
PEXPORT void PICAPI ps_clip_rect (ps_context *ctx, const ps_rect *rect)
 Clipping specified rectangle. More...
 
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. More...
 
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. More...
 
PEXPORT void PICAPI ps_reset_clip (ps_context *ctx)
 Clear the clipping area from the context. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_clip()

+ +
+
+ + + + + + + + +
void ps_clip (ps_contextctx)
+
+ +

Clipping the current path, using the current fill rule. After called, the current path will be cleared from the context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_clip_path, ps_clip_rect, ps_clip_rects, ps_reset_clip
+ +
+
+ +

◆ ps_clip_path()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_clip_path (ps_contextctx,
const ps_pathpath,
ps_fill_rule rule 
)
+
+ +

Clipping specified path, using the given fill rule.

+
Parameters
+ + + + +
ctxPointer to an existing context object.
pathThe path which will be clipped.
ruleThe rule of the path.
+
+
+
See also
ps_clip, ps_clip_rect, ps_clip_rects, ps_reset_clip
+ +
+
+ +

◆ ps_clip_rect()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_clip_rect (ps_contextctx,
const ps_rectrect 
)
+
+ +

Clipping specified rectangle.

+
Parameters
+ + + +
ctxPointer to an existing context object.
rectThe rectangle which will be clipped.
+
+
+
See also
ps_clip, ps_clip_path, ps_clip_rects, ps_reset_clip, ps_scissor_rect
+ +
+
+ +

◆ ps_clip_rects()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_clip_rects (ps_contextctx,
const ps_rectrects,
unsigned int num_rects 
)
+
+ +

Clipping specified area defined by an array of rectangles.

+
Parameters
+ + + + +
ctxPointer to an existing context object.
rectsThe array of rectangles which will be clipped.
num_rectsThe number of array entries.
+
+
+
See also
ps_clip, ps_clip_path, ps_clip_rect, ps_reset_clip
+ +
+
+ +

◆ ps_reset_clip()

+ +
+
+ + + + + + + + +
void ps_reset_clip (ps_contextctx)
+
+ +

Clear the clipping area from the context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_clip, ps_clip_path, ps_clip_rect, ps_clip_rects
+ +
+
+ +

◆ ps_scissor_rect()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_scissor_rect (ps_contextctx,
const ps_rectrect 
)
+
+ +

The fast way to clipping specified rectangle, the clip rect can not be transformed by world matrix.

+
Parameters
+ + + +
ctxPointer to an existing context object.
rectThe rectangle which will be clipped.
+
+
+
Note
This function is deprecated, will be remove feature.
+
See also
ps_clip, ps_clip_path, ps_clip_rects, ps_reset_clip, ps_clip_rect
+ +
+
+
+ + + + diff --git a/doc/html/group__coder.html b/doc/html/group__coder.html new file mode 100644 index 0000000..cc7a741 --- /dev/null +++ b/doc/html/group__coder.html @@ -0,0 +1,149 @@ + + + + + + + +Picasso API: XImage Coders Plugin side functions + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
XImage Coders Plugin side functions
+
+
+ + + + + +

+Macros

+#define MODULE_NAME   1
 Get module name.
 
+ + + + + + + + + + +

+Functions

PEXPORT void psx_image_module_init (void)
 Initialze the image module. More...
 
PEXPORT void psx_image_module_shutdown (void)
 Shutdown the image module. More...
 
const PEXPORT char * psx_image_module_get_string (int id)
 Get the string info about module. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ psx_image_module_get_string()

+ +
+
+ + + + + + + + +
char * psx_image_module_get_string (int id)
+
+ +

Get the string info about module.

+
Parameters
+ + +
idThe information index.
+
+
+
Returns
If successs, return the pointer of string. Can not be modify and free. If fails, return NULL.
+
See also
psx_image_module_init psx_image_module_shutdown
+ +
+
+ +

◆ psx_image_module_init()

+ +
+
+ + + + + + + + +
void psx_image_module_init (void )
+
+ +

Initialze the image module.

+
See also
psx_image_module_shutdown psx_image_module_get_string
+ +
+
+ +

◆ psx_image_module_shutdown()

+ +
+
+ + + + + + + + +
void psx_image_module_shutdown (void )
+
+ +

Shutdown the image module.

+
See also
psx_image_module_init psx_image_module_get_string
+ +
+
+
+ + + + diff --git a/doc/html/group__common.html b/doc/html/group__common.html new file mode 100644 index 0000000..4707ab3 --- /dev/null +++ b/doc/html/group__common.html @@ -0,0 +1,221 @@ + + + + + + + +Picasso API: Common Functions + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
Common Functions
+
+
+ + + + + +

+Typedefs

+typedef enum _ps_status ps_status
 Status code return by call ps_last_status function.
 
+ + + + +

+Enumerations

enum  _ps_status {
+  STATUS_SUCCEED, +STATUS_OUT_OF_MEMORY, +STATUS_INVALID_ARGUMENT, +STATUS_NOT_SUPPORT, +
+  STATUS_DEVICE_ERROR, +STATUS_MISMATCHING_FORMAT, +STATUS_UNKNOWN_ERROR +
+ }
 Status code return by call ps_last_status function. More...
 
+ + + + + + + + + + + + + +

+Functions

PEXPORT int PICAPI ps_version (void)
 Return current version of picasso. More...
 
PEXPORT ps_bool PICAPI ps_initialize (void)
 Initialize the picasso drawing environment. More...
 
PEXPORT void PICAPI ps_shutdown (void)
 Shutdown the picasso drawing environment. More...
 
PEXPORT ps_status PICAPI ps_last_status (void)
 Return the last status code of picasso. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_status

+ +
+
+ + + + +
enum _ps_status
+
+ +

Status code return by call ps_last_status function.

+ + + + + + + + +
Enumerator
STATUS_SUCCEED 

The successful status no errors.

+
STATUS_OUT_OF_MEMORY 

Out of memory.

+
STATUS_INVALID_ARGUMENT 

Invalid argument input.

+
STATUS_NOT_SUPPORT 

Not support this feature.

+
STATUS_DEVICE_ERROR 

Device is not ready.

+
STATUS_MISMATCHING_FORMAT 

Mismatching error.

+
STATUS_UNKNOWN_ERROR 

Unknown error.

+
+ +

Definition at line 262 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_initialize()

+ +
+
+ + + + + + + + +
ps_bool ps_initialize (void )
+
+ +

Initialize the picasso drawing environment.

+

It must be the first to be call.

+
Returns
True if is initialized, otherwise False.
+
See also
ps_shutdown
+ +
+
+ +

◆ ps_last_status()

+ +
+
+ + + + + + + + +
ps_status ps_last_status (void )
+
+ +

Return the last status code of picasso.

+
See also
ps_version
+ +
+
+ +

◆ ps_shutdown()

+ +
+
+ + + + + + + + +
void ps_shutdown (void )
+
+ +

Shutdown the picasso drawing environment.

+

It must be call in the end.

+
See also
ps_initialize
+ +
+
+ +

◆ ps_version()

+ +
+
+ + + + + + + + +
int ps_version (void )
+
+ +

Return current version of picasso.

+
See also
ps_last_status
+ +
+
+
+ + + + diff --git a/doc/html/group__context.html b/doc/html/group__context.html new file mode 100644 index 0000000..f6cad62 --- /dev/null +++ b/doc/html/group__context.html @@ -0,0 +1,242 @@ + + + + + + + +Picasso API: Context + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +

+Functions

PEXPORT ps_context *PICAPI ps_context_create (ps_canvas *canvas, ps_context *shared_context)
 Create a new graphic context for a canvas. More...
 
PEXPORT ps_context *PICAPI ps_context_ref (ps_context *ctx)
 Increases the reference count of the context by 1. More...
 
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 0, the context is freed. More...
 
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. More...
 
PEXPORT ps_canvas *PICAPI ps_context_get_canvas (ps_context *ctx)
 Get the canvas from the context. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_context_create()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_context * ps_context_create (ps_canvascanvas,
ps_contextshared_context 
)
+
+ +

Create a new graphic context for a canvas.

+
Parameters
+ + + +
canvasPointer to an existing canvas object.
shared_contextResources shared context, NULL mean resources not shared.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new context object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_context_set_canvas, ps_context_get_canvas, ps_context_ref, ps_context_unref
+ +
+
+ +

◆ ps_context_get_canvas()

+ +
+
+ + + + + + + + +
ps_canvas * ps_context_get_canvas (ps_contextctx)
+
+ +

Get the canvas from the context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
Returns
If the function succeeds, the return value is a pointer to the canvas. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_context_create, ps_context_ref, ps_context_unref, ps_context_set_canvas
+ +
+
+ +

◆ ps_context_ref()

+ +
+
+ + + + + + + + +
ps_context * ps_context_ref (ps_contextctx)
+
+ +

Increases the reference count of the context by 1.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the context object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_context_set_canvas, ps_context_get_canvas, ps_context_create, ps_context_unref
+ +
+
+ +

◆ ps_context_set_canvas()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_canvas * ps_context_set_canvas (ps_contextctx,
ps_canvascanvas 
)
+
+ +

Set a new canvas into a context, and return the old one.

+
Parameters
+ + + +
ctxPointer to an existing context object.
canvasPointer to an existing canvas object to be set.
+
+
+
Returns
If the function succeeds, the return value is a pointer to the canvas being replaced. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_context_create, ps_context_ref, ps_context_unref, ps_context_get_canvas
+ +
+
+ +

◆ ps_context_unref()

+ +
+
+ + + + + + + + +
void ps_context_unref (ps_contextctx)
+
+ +

Decrements the reference count for the context object. If the reference count on the context falls to 0, the context is freed.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_context_set_canvas, ps_context_get_canvas, ps_context_create, ps_context_ref
+ +
+
+
+ + + + diff --git a/doc/html/group__data.html b/doc/html/group__data.html new file mode 100644 index 0000000..8f4e470 --- /dev/null +++ b/doc/html/group__data.html @@ -0,0 +1,199 @@ + + + + + + + +Picasso API: Data Types + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
Data Types
+
+
+ + + + + + + + +

+Macros

#define True   1
 define true value More...
 
#define False   0
 define false value More...
 
+ + + + + + + + + + + + + +

+Typedefs

typedef int ps_bool
 boolean type More...
 
typedef uint16_t ps_uchar16
 16 bit unsigned unicode character More...
 
typedef int16_t ps_schar16
 16 bit signed unicode character More...
 
typedef uint8_t ps_byte
 byte data type More...
 
+

Detailed Description

+

Macro Definition Documentation

+ +

◆ False

+ +
+
+ + + + +
#define False   0
+
+ +

define false value

+
See also
True
+ +

Definition at line 74 of file picasso.h.

+ +
+
+ +

◆ True

+ +
+
+ + + + +
#define True   1
+
+ +

define true value

+
See also
False
+ +

Definition at line 67 of file picasso.h.

+ +
+
+

Typedef Documentation

+ +

◆ ps_bool

+ +
+
+ + + + +
ps_bool
+
+ +

boolean type

+
See also
ps_uchar16, ps_schar16, ps_byte
+ +

Definition at line 60 of file picasso.h.

+ +
+
+ +

◆ ps_byte

+ +
+
+ + + + +
ps_byte
+
+ +

byte data type

+
See also
ps_bool, ps_uchar16, ps_schar16
+ +

Definition at line 95 of file picasso.h.

+ +
+
+ +

◆ ps_schar16

+ +
+
+ + + + +
ps_schar16
+
+ +

16 bit signed unicode character

+
See also
ps_bool, ps_uchar16, ps_byte
+ +

Definition at line 88 of file picasso.h.

+ +
+
+ +

◆ ps_uchar16

+ +
+
+ + + + +
ps_uchar16
+
+ +

16 bit unsigned unicode character

+
See also
ps_bool, ps_schar16, ps_byte
+ +

Definition at line 81 of file picasso.h.

+ +
+
+
+ + + + diff --git a/doc/html/group__drawing.html b/doc/html/group__drawing.html new file mode 100644 index 0000000..e654c6d --- /dev/null +++ b/doc/html/group__drawing.html @@ -0,0 +1,75 @@ + + + + + + + +Picasso API: Drawing + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ + +
+
+ + + + + + + + + + + + + + + + +

+Modules

 Fill
 
 Stroke
 
 Shadow
 
 Attribute
 
 Paint
 
 Clip
 
 State
 
+

Detailed Description

+
+ + + + diff --git a/doc/html/group__extension.html b/doc/html/group__extension.html new file mode 100644 index 0000000..bcab9d6 --- /dev/null +++ b/doc/html/group__extension.html @@ -0,0 +1,63 @@ + + + + + + + +Picasso API: Extensions + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
Extensions
+
+
+ + + + +

+Modules

 XImage Extension
 
+

Detailed Description

+
+ + + + diff --git a/doc/html/group__extimg.html b/doc/html/group__extimg.html new file mode 100644 index 0000000..e9a268f --- /dev/null +++ b/doc/html/group__extimg.html @@ -0,0 +1,69 @@ + + + + + + + +Picasso API: XImage Extension + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
XImage Extension
+
+
+ + + + + + + + + + +

+Modules

 XImage Object Types
 
 XImage Functions
 
 XImage Coders Register functions
 
 XImage Coders Plugin side functions
 
+

Detailed Description

+
+ + + + diff --git a/doc/html/group__fill.html b/doc/html/group__fill.html new file mode 100644 index 0000000..0767049 --- /dev/null +++ b/doc/html/group__fill.html @@ -0,0 +1,267 @@ + + + + + + + +Picasso API: Fill + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +

+Functions

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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_set_source_canvas()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_source_canvas (ps_contextctx,
const ps_canvascanvas 
)
+
+ +

Set a canvas to the context, it is used to fill a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
canvasThe canvas to be set.
+
+
+
See also
ps_set_source_color, ps_set_source_image, ps_set_source_pattern, ps_set_source_gradient
+ +
+
+ +

◆ ps_set_source_color()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_source_color (ps_contextctx,
const ps_colorcolor 
)
+
+ +

Set a Color to the context, it is used to fill a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
colorThe color to be set.
+
+
+
See also
ps_set_source_image, ps_set_source_pattern, ps_set_source_gradient, ps_set_source_canvas
+ +
+
+ +

◆ ps_set_source_gradient()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_source_gradient (ps_contextctx,
const ps_gradientgradient 
)
+
+ +

Set a gradient to the context, it is used to fill a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
gradientThe gradient to be set.
+
+
+
See also
ps_set_source_color, ps_set_source_image, ps_set_source_pattern, ps_set_source_canvas
+ +
+
+ +

◆ ps_set_source_image()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_source_image (ps_contextctx,
const ps_imageimage 
)
+
+ +

Set a image to the context, it is used to fill a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
imageThe image to be set.
+
+
+
See also
ps_set_source_color, ps_set_source_pattern, ps_set_source_gradient, ps_set_source_canvas
+ +
+
+ +

◆ ps_set_source_pattern()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_source_pattern (ps_contextctx,
const ps_patternpattern 
)
+
+ +

Set a pattern to the context, it is used to fill a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
patternThe pattern to be set.
+
+
+
See also
ps_set_source_color, ps_set_source_image, ps_set_source_gradient, ps_set_source_canvas
+ +
+
+
+ + + + diff --git a/doc/html/group__font.html b/doc/html/group__font.html new file mode 100644 index 0000000..e5d4e8e --- /dev/null +++ b/doc/html/group__font.html @@ -0,0 +1,643 @@ + + + + + + + +Picasso API: Font + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + +

+Data Structures

struct  _ps_font_info
 A structure that contains font information. More...
 
+ + + + + + + + + + +

+Typedefs

+typedef enum _ps_charset ps_charset
 Charset for a font.
 
+typedef enum _ps_font_weight ps_font_weight
 Font weight.
 
+typedef struct _ps_font_info ps_font_info
 A structure that contains font information.
 
+ + + + + + + +

+Enumerations

enum  _ps_charset { CHARSET_ANSI, +CHARSET_UNICODE + }
 Charset for a font. More...
 
enum  _ps_font_weight { FONT_WEIGHT_REGULAR = 400, +FONT_WEIGHT_MEDIUM = 500, +FONT_WEIGHT_BOLD = 700, +FONT_WEIGHT_HEAVY = 900 + }
 Font weight. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

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. More...
 
PEXPORT ps_font *PICAPI ps_font_create_copy (const ps_font *font)
 Create a copy from an existing font object. More...
 
PEXPORT ps_font *PICAPI ps_font_ref (ps_font *font)
 Increases the reference count of the font by 1. More...
 
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, the font is freed. More...
 
PEXPORT void PICAPI ps_font_set_size (ps_font *font, float size)
 Set size for a font object. More...
 
PEXPORT void PICAPI ps_font_set_weight (ps_font *font, int weight)
 Set weight for a font object. More...
 
PEXPORT void PICAPI ps_font_set_italic (ps_font *font, ps_bool italic)
 Set italic for a font object. More...
 
PEXPORT void PICAPI ps_font_set_charset (ps_font *font, ps_charset charset)
 Set charset for a font object. More...
 
PEXPORT void PICAPI ps_font_set_hint (ps_font *font, ps_bool hint)
 Set hiting for a font object. More...
 
PEXPORT void PICAPI ps_font_set_flip (ps_font *font, ps_bool flip)
 Set flip for a font object. More...
 
PEXPORT ps_bool PICAPI ps_get_font_info (ps_context *ctx, ps_font_info *info)
 Return the font information from the graphics context. More...
 
PEXPORT ps_font *PICAPI ps_set_font (ps_context *ctx, const ps_font *font)
 Set a new font to graphics context. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_charset

+ +
+
+ + + + +
enum _ps_charset
+
+ +

Charset for a font.

+ + + +
Enumerator
CHARSET_ANSI 

Ansi ISO-8859-x charset

+
CHARSET_UNICODE 

Unicode UCS-2 charset

+
+ +

Definition at line 1919 of file picasso.h.

+ +
+
+ +

◆ _ps_font_weight

+ +
+
+ + + + +
enum _ps_font_weight
+
+ +

Font weight.

+ + + + + +
Enumerator
FONT_WEIGHT_REGULAR 

Regular weight.

+
FONT_WEIGHT_MEDIUM 

Medium weight.

+
FONT_WEIGHT_BOLD 

Bold weight.

+
FONT_WEIGHT_HEAVY 

Heavy weight.

+
+ +

Definition at line 1933 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_font_create()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_font * ps_font_create (const char * name,
ps_charset charset,
float size,
int weight,
ps_bool italic 
)
+
+ +

Create a font object using the given parameters.

+
Parameters
+ + + + + + +
nameThe font family name.
charsetThe charset type.
sizeThe font size.
weightThe font weight.
italicWhether or not it is italic.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new font object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_font_create_copy, ps_font_ref, ps_font_unref
+ +
+
+ +

◆ ps_font_create_copy()

+ +
+
+ + + + + + + + +
ps_font * ps_font_create_copy (const ps_fontfont)
+
+ +

Create a copy from an existing font object.

+
Parameters
+ + +
fontPointer to an existing font object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new font object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_font_create, ps_font_ref, ps_font_unref
+ +
+
+ +

◆ ps_font_ref()

+ +
+
+ + + + + + + + +
ps_font * ps_font_ref (ps_fontfont)
+
+ +

Increases the reference count of the font by 1.

+
Parameters
+ + +
fontPointer to an existing font object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the font object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_font_create, ps_font_create_copy, ps_font_unref
+ +
+
+ +

◆ ps_font_set_charset()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_font_set_charset (ps_fontfont,
ps_charset charset 
)
+
+ +

Set charset for a font object.

+
Parameters
+ + + +
fontPointer to an existing font object.
charsetCharset for the font.
+
+
+
See also
ps_font_set_size, ps_font_set_weight, ps_font_set_italic, ps_font_set_hint, ps_font_set_flip
+ +
+
+ +

◆ ps_font_set_flip()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_font_set_flip (ps_fontfont,
ps_bool flip 
)
+
+ +

Set flip for a font object.

+
Parameters
+ + + +
fontPointer to an existing font object.
flipWhether or not flip y for the font. (False default)
+
+
+
See also
ps_font_set_size, ps_font_set_weight, ps_font_set_italic, ps_font_set_charset, ps_font_set_hint
+ +
+
+ +

◆ ps_font_set_hint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_font_set_hint (ps_fontfont,
ps_bool hint 
)
+
+ +

Set hiting for a font object.

+
Parameters
+ + + +
fontPointer to an existing font object.
hintWhether or not auto hiting for the font. (True default)
+
+
+
See also
ps_font_set_size, ps_font_set_weight, ps_font_set_italic, ps_font_set_charset, ps_font_set_flip
+ +
+
+ +

◆ ps_font_set_italic()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_font_set_italic (ps_fontfont,
ps_bool italic 
)
+
+ +

Set italic for a font object.

+
Parameters
+ + + +
fontPointer to an existing font object.
italicWhether or not italic for the font. (False default)
+
+
+
See also
ps_font_set_size, ps_font_set_weight, ps_font_set_charset, ps_font_set_hint, ps_font_set_flip
+ +
+
+ +

◆ ps_font_set_size()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_font_set_size (ps_fontfont,
float size 
)
+
+ +

Set size for a font object.

+
Parameters
+ + + +
fontPointer to an existing font object.
sizeSize for the font.
+
+
+
See also
ps_font_set_weight, ps_font_set_italic, ps_font_set_charset, ps_font_set_hint, ps_font_set_flip
+ +
+
+ +

◆ ps_font_set_weight()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_font_set_weight (ps_fontfont,
int weight 
)
+
+ +

Set weight for a font object.

+
Parameters
+ + + +
fontPointer to an existing font object.
weightWeight for the font.
+
+
+
See also
ps_font_set_size, ps_font_set_italic, ps_font_set_charset, ps_font_set_hint, ps_font_set_flip
+ +
+
+ +

◆ ps_font_unref()

+ +
+
+ + + + + + + + +
void ps_font_unref (ps_fontfont)
+
+ +

Decrements the reference count for the font object. If the reference count on the font falls to 0, the font is freed.

+
Parameters
+ + +
fontPointer to an existing font object.
+
+
+
See also
ps_font_create, ps_font_create_copy, ps_font_ref
+ +
+
+ +

◆ ps_get_font_info()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_bool ps_get_font_info (ps_contextctx,
ps_font_infoinfo 
)
+
+ +

Return the font information from the graphics context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
infoPointer to a structure to receiving the font information.
+
+
+
Returns
True if is success, otherwise False.
+
See also
ps_set_font
+ +
+
+ +

◆ ps_set_font()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_font * ps_set_font (ps_contextctx,
const ps_fontfont 
)
+
+ +

Set a new font to graphics context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
fontThe new font to be set.
+
+
+
Returns
If the function succeeds, the return value is the pointer to old font object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_get_font_info
+ +
+
+
+ + + + diff --git a/doc/html/group__functions.html b/doc/html/group__functions.html new file mode 100644 index 0000000..0755e27 --- /dev/null +++ b/doc/html/group__functions.html @@ -0,0 +1,431 @@ + + + + + + + +Picasso API: XImage Functions + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
XImage Functions
+
+
+ + + + + +

+Typedefs

+typedef int(* image_writer_fn) (void *param, const ps_byte *data, size_t length)
 Callback function for saving image data.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT int PICAPI psx_image_init (void)
 Initialze the library and load resources. More...
 
PEXPORT int PICAPI psx_image_shutdown (void)
 Release resources and shutdoen. More...
 
PEXPORT psx_image *PICAPI psx_image_create_from_data (ps_byte *data, ps_color_format fmt, int width, int height, int pitch, int *err_code)
 Create a new psx_image using a copy of given address in memory. More...
 
PEXPORT psx_image *PICAPI psx_image_load (const char *file_name, int *err_code)
 Create a new psx_image object and load from file. More...
 
PEXPORT psx_image *PICAPI psx_image_load_from_memory (const ps_byte *data, size_t length, int *err_code)
 Create a new psx_image object and load data from memory. More...
 
PEXPORT int PICAPI psx_image_save (const psx_image *image, image_writer_fn func, void *param, const char *type, float quality)
 Encoding psx_image to a gaving format and output it. More...
 
PEXPORT int PICAPI psx_image_save_to_file (const psx_image *image, const char *file_name, const char *type, float quality)
 Encoding psx_image to a gaving format and output to a file. More...
 
PEXPORT int PICAPI psx_image_destroy (psx_image *image)
 Destroy the psx_image object and release resources. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ psx_image_create_from_data()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
psx_image * psx_image_create_from_data (ps_bytedata,
ps_color_format fmt,
int width,
int height,
int pitch,
int * err_code 
)
+
+ +

Create a new psx_image using a copy of given address in memory.

+
Parameters
+ + + + + + + +
dataA pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch * height) bytes.
fmtThe Pixel format to use for the image.
widthThe width, in pixels, of the required image.
heightThe height, in pixels, of the required image.
pitchThe number of bytes per row, of the required image.
err_codePointer to a value to receiving the result code. can be NULL.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new psx_image object. If the function fails, the return value is NULL.
+
See also
psx_image_load psx_image_load_from_memory psx_image_destroy
+ +
+
+ +

◆ psx_image_destroy()

+ +
+
+ + + + + + + + +
int psx_image_destroy (psx_imageimage)
+
+ +

Destroy the psx_image object and release resources.

+
Parameters
+ + +
imagePointer to an existing psx_image object.
+
+
+
Returns
Result code returned.
+
See also
psx_image_load psx_image_load_from_memory
+ +
+
+ +

◆ psx_image_init()

+ +
+
+ + + + + + + + +
int psx_image_init (void )
+
+ +

Initialze the library and load resources.

+
Returns
Result code returned.
+
See also
psx_image_shutdown
+ +
+
+ +

◆ psx_image_load()

+ +
+
+ + + + + + + + + + + + + + + + + + +
psx_image * psx_image_load (const char * file_name,
int * err_code 
)
+
+ +

Create a new psx_image object and load from file.

+
Parameters
+ + + +
file_nameThe image file path which will be loaded, which is encoded by utf8.
err_codePointer to a value to receiving the result code. can be NULL.
+
+
+
Returns
If successs, the return value is the pointer to new psx_image object. If fails, the return value is NULL, and result will be return by err_code.
+
See also
psx_image_destroy psx_image_load_from_memory psx_image_create_from_data
+ +
+
+ +

◆ psx_image_load_from_memory()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
psx_image * psx_image_load_from_memory (const ps_bytedata,
size_t length,
int * err_code 
)
+
+ +

Create a new psx_image object and load data from memory.

+
Parameters
+ + + + +
dataPointer to data buffer in memeory.
lengthData length bytes.
err_codePointer to a value to receiving the result code. can be NULL.
+
+
+
Returns
If successs, the return value is the pointer to new psx_image object. If fails, the return value is NULL, and result will be return by err_code.
+
See also
psx_image_destroy psx_image_load
+ +
+
+ +

◆ psx_image_save()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int psx_image_save (const psx_imageimage,
image_writer_fn func,
void * param,
const char * type,
float quality 
)
+
+ +

Encoding psx_image to a gaving format and output it.

+
Parameters
+ + + + + + +
imagePointer to an psx_image object.
funcUser define saving callback function.
paramUser define saving callback param.
typeImage type short name. (i.e "png" "jpg" "bmp")
qualityImage encoding quality. (0.1 ~ 1.0)
+
+
+
Returns
Result code returned.
+
See also
psx_image_save_to_file
+ +
+
+ +

◆ psx_image_save_to_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int psx_image_save_to_file (const psx_imageimage,
const char * file_name,
const char * type,
float quality 
)
+
+ +

Encoding psx_image to a gaving format and output to a file.

+
Parameters
+ + + + + +
imagePointer to an psx_image object.
file_nameThe image file path which will be output, which is encoded by utf8.
typeImage type short name. (i.e "png" "jpg" "bmp")
qualityImage encoding quality. (0.1 ~ 1.0)
+
+
+
Returns
Result code returned.
+
See also
psx_image_save
+ +
+
+ +

◆ psx_image_shutdown()

+ +
+
+ + + + + + + + +
int psx_image_shutdown (void )
+
+ +

Release resources and shutdoen.

+
Returns
Result code returned.
+
See also
psx_image_init
+ +
+
+
+ + + + diff --git a/doc/html/group__geometry.html b/doc/html/group__geometry.html new file mode 100644 index 0000000..421f555 --- /dev/null +++ b/doc/html/group__geometry.html @@ -0,0 +1,764 @@ + + + + + + + +Picasso API: Geometry + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT void PICAPI ps_new_path (ps_context *ctx)
 Create a new empty path in the graphic context, clear the old one. More...
 
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. More...
 
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. More...
 
PEXPORT void PICAPI ps_set_path (ps_context *ctx, const ps_path *path)
 Replace the current path in the graphic context. More...
 
PEXPORT ps_bool PICAPI ps_get_path (ps_context *ctx, ps_path *path)
 Get the current path in the graphic context. More...
 
PEXPORT void PICAPI ps_close_path (ps_context *ctx)
 Close the current path in the graphic context. More...
 
PEXPORT void PICAPI ps_move_to (ps_context *ctx, const ps_point *point)
 Begin a new sub path, and set the current point. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
PEXPORT void PICAPI ps_rectangle (ps_context *ctx, const ps_rect *rect)
 Add a rectangle to the current path. More...
 
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. More...
 
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. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_add_sub_path()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_add_sub_path (ps_contextctx,
const ps_pathpath 
)
+
+ +

Add a new sub path to current path in the graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
pathThe path will be add to graphic context.
+
+
+
See also
ps_new_path, ps_new_sub_path, ps_set_path, ps_get_path, ps_close_path
+ +
+
+ +

◆ ps_arc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_arc (ps_contextctx,
const ps_pointcp,
float radius,
float sangle,
float eangle,
ps_bool clockwise 
)
+
+ +

Add a circular arc to the current path.

+
Parameters
+ + + + + + + +
ctxPointer to an existing context object.
cpThe center point of the arc.
radiusThe radius of the arc.
sangleThe start angle, in radians.
eangleThe end angle, in radians.
clockwiseTrue is clockwise, False is counter clockwise.
+
+
+
See also
ps_move_to, ps_line_to, ps_bezier_curve_to, ps_quad_curve_to, ps_tangent_arc, ps_rectangle, ps_rounded_rect, ps_ellipse
+ +
+
+ +

◆ ps_bezier_curve_to()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_bezier_curve_to (ps_contextctx,
const ps_pointfcp,
const ps_pointscp,
const ps_pointep 
)
+
+ +

Add a cubic bezier spline to the current path from current point to end point.

+
Parameters
+ + + + + +
ctxPointer to an existing context object.
fcpThe first control point of the curve.
scpThe second control point of the curve.
epThe end point of the curve.
+
+
+
See also
ps_move_to, ps_line_to, ps_quad_curve_to, ps_arc, ps_tangent_arc, ps_rectangle, ps_rounded_rect, ps_ellipse
+ +
+
+ +

◆ ps_close_path()

+ +
+
+ + + + + + + + +
void ps_close_path (ps_contextctx)
+
+ +

Close the current path in the graphic context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_new_path, ps_new_sub_path, ps_set_path, ps_get_path, ps_add_sub_path
+ +
+
+ +

◆ ps_ellipse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_ellipse (ps_contextctx,
const ps_rectrect 
)
+
+ +

Adds an ellipse to the current path which fits inside the specified rectangle.

+
Parameters
+ + + +
ctxPointer to an existing context object.
rectThe rectangle which the ellipse to fit in.
+
+
+
See also
ps_move_to, ps_line_to, ps_bezier_curve_to, ps_quad_curve_to, ps_arc, ps_tangent_arc, ps_rectangle, ps_rounded_rect
+ +
+
+ +

◆ ps_get_path()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_bool ps_get_path (ps_contextctx,
ps_pathpath 
)
+
+ +

Get the current path in the graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
pathPointer to a object to receiving the path.
+
+
+
Returns
True if is success, otherwise False.
+
See also
ps_new_path, ps_new_sub_path, ps_close_path, ps_set_path, ps_add_sub_path
+ +
+
+ +

◆ ps_line_to()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_line_to (ps_contextctx,
const ps_pointpoint 
)
+
+ +

Add a line to the current path from the current point to given point.

+
Parameters
+ + + +
ctxPointer to an existing context object.
pointThe point which will line to.
+
+
+
See also
ps_move_to, ps_bezier_curve_to, ps_quad_curve_to ps_arc, ps_tangent_arc, ps_rectangle, ps_rounded_rect, ps_ellipse
+ +
+
+ +

◆ ps_move_to()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_move_to (ps_contextctx,
const ps_pointpoint 
)
+
+ +

Begin a new sub path, and set the current point.

+
Parameters
+ + + +
ctxPointer to an existing context object.
pointThe point which will be set.
+
+
+
See also
ps_line_to, ps_bezier_curve_to, ps_quad_curve_to ps_arc, ps_tangent_arc, ps_rectangle, ps_rounded_rect, ps_ellipse
+ +
+
+ +

◆ ps_new_path()

+ +
+
+ + + + + + + + +
void ps_new_path (ps_contextctx)
+
+ +

Create a new empty path in the graphic context, clear the old one.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_new_sub_path, ps_set_path, ps_get_path, ps_close_path, ps_add_sub_path
+ +
+
+ +

◆ ps_new_sub_path()

+ +
+
+ + + + + + + + +
void ps_new_sub_path (ps_contextctx)
+
+ +

Close the current path, and add a new empty sub path in the graphic context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_new_path, ps_set_path, ps_get_path, ps_close_path, ps_add_sub_path
+ +
+
+ +

◆ ps_quad_curve_to()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_quad_curve_to (ps_contextctx,
const ps_pointcp,
const ps_pointep 
)
+
+ +

Add a quadratic bezier spline to the current path from current point to end point.

+
Parameters
+ + + + +
ctxPointer to an existing context object.
cpThe control point of the curve.
epThe end point of the curve.
+
+
+
See also
ps_move_to, ps_line_to, ps_bezier_curve_to, ps_arc, ps_tangent_arc, ps_rectangle, ps_rounded_rect, ps_ellipse
+ +
+
+ +

◆ ps_rectangle()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_rectangle (ps_contextctx,
const ps_rectrect 
)
+
+ +

Add a rectangle to the current path.

+
Parameters
+ + + +
ctxPointer to an existing context object.
rectThe rectangle which will be added.
+
+
+
See also
ps_move_to, ps_line_to, ps_bezier_curve_to, ps_quad_curve_to, ps_arc, ps_tangent_arc, ps_rounded_rect, ps_ellipse
+ +
+
+ +

◆ ps_rounded_rect()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_rounded_rect (ps_contextctx,
const ps_rectrect,
float ltx,
float lty,
float rtx,
float rty,
float lbx,
float lby,
float rbx,
float rby 
)
+
+ +

Add a rounded rectangle to the current path.

+
Parameters
+ + + + + + + + + + + +
ctxPointer to an existing context object.
rectThe rectangle which will be added.
ltxThe left top horizontal radius.
ltyThe left top vertical radius.
rtxThe right top horizontal radius.
rtyThe right top vertical radius.
lbxThe left bottom horizontal radius.
lbyThe left bottom vertical radius.
rbxThe right bottom horizontal radius.
rbyThe right bottom vertical radius.
+
+
+
See also
ps_move_to, ps_line_to, ps_bezier_curve_to, ps_quad_curve_to, ps_arc, ps_tangent_arc, ps_rectangle, ps_ellipse
+ +
+
+ +

◆ ps_set_path()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_path (ps_contextctx,
const ps_pathpath 
)
+
+ +

Replace the current path in the graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
pathThe path will be set to graphic context.
+
+
+
See also
ps_new_path, ps_new_sub_path, ps_get_path, ps_close_path, ps_add_sub_path
+ +
+
+ +

◆ ps_tangent_arc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_tangent_arc (ps_contextctx,
const ps_rectrect,
float sangle,
float sweep 
)
+
+ +

Add a circular arc which is inner tangent from a rectangle.

+
Parameters
+ + + + + +
ctxPointer to an existing context object.
rectThe rectangle which the arc to fit in.
sangleThe start angle, in radians.
sweepThe sweep angle, in radians.
+
+
+
See also
ps_move_to, ps_line_to, ps_bezier_curve_to, ps_quad_curve_to, ps_arc, ps_rectangle, ps_rounded_rect, ps_ellipse
+ +
+
+
+ + + + diff --git a/doc/html/group__gradient.html b/doc/html/group__gradient.html new file mode 100644 index 0000000..6a5532a --- /dev/null +++ b/doc/html/group__gradient.html @@ -0,0 +1,452 @@ + + + + + + + +Picasso API: Gradient + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + +

+Typedefs

+typedef enum _ps_gradient_spread ps_gradient_spread
 Fill type of outside the gradient area.
 
+ + + + +

+Enumerations

enum  _ps_gradient_spread { GRADIENT_SPREAD_PAD, +GRADIENT_SPREAD_REPEAT, +GRADIENT_SPREAD_REFLECT + }
 Fill type of outside the gradient area. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

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. More...
 
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. More...
 
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. More...
 
PEXPORT void PICAPI ps_gradient_transform (ps_gradient *gradient, const ps_matrix *matrix)
 Transform the gradient object. More...
 
PEXPORT ps_gradient *PICAPI ps_gradient_ref (ps_gradient *gradient)
 Increases the reference count of the gradient by 1. More...
 
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 to 0, the gradient is freed. More...
 
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. More...
 
PEXPORT void PICAPI ps_gradient_clear_color_stops (ps_gradient *gradient)
 Clear color stops from gradient's control vector. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_gradient_spread

+ +
+
+ + + + +
enum _ps_gradient_spread
+
+ +

Fill type of outside the gradient area.

+ + + + +
Enumerator
GRADIENT_SPREAD_PAD 

Spread pad, the area is filled with closest stop color.

+
GRADIENT_SPREAD_REPEAT 

Spread repeat, the gradient is repeated outside the area.

+
GRADIENT_SPREAD_REFLECT 

Spread reflect, the gradient is reflected outside the area.

+
+ +

Definition at line 942 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_gradient_add_color_stop()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_gradient_add_color_stop (ps_gradientgradient,
float offset,
const ps_colorcolor 
)
+
+ +

Add a color stop to a gradient. The offset specifies the location along the gradient's control vector.

+
Parameters
+ + + + +
gradientPointer to an existing gradient object.
offsetAn offset position in control vector (range 0 ~ 1).
colorColor for the stop.
+
+
+
See also
ps_gradient_clear_color_stops
+ +
+
+ +

◆ ps_gradient_clear_color_stops()

+ +
+
+ + + + + + + + +
void ps_gradient_clear_color_stops (ps_gradientgradient)
+
+ +

Clear color stops from gradient's control vector.

+
Parameters
+ + +
gradientPointer to an existing gradient object.
+
+
+
See also
ps_gradient_add_color_stop
+ +
+
+ +

◆ ps_gradient_create_conic()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_gradient * ps_gradient_create_conic (ps_gradient_spread spread,
const ps_pointorigin,
float sangle 
)
+
+ +

Create a new gradient that varies along the area defined by provided concentric circles.

+
Parameters
+ + + + +
spreadThe spread type of the gradient.
originThe center point of conic, of the required gradient.
sangleThe angle, int radians, which the first color.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new gradient object. If the function fails, the return value is NULL.
+
Note
Conic Gradient support reflect and pad mode only, paramter spread repeat will be supposed pad. To get extended error information, call ps_last_status.
+
See also
ps_gradient_create_linear, ps_gradient_create_radial, ps_gradient_ref, ps_gradient_unref
+ +
+
+ +

◆ ps_gradient_create_linear()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_gradient * ps_gradient_create_linear (ps_gradient_spread spread,
const ps_pointstart,
const ps_pointend 
)
+
+ +

Create a new gradient that varies along the line defined by provided starting and ending points.

+
Parameters
+ + + + +
spreadThe spread type of the gradient.
startThe starting point , of the required gradient.
endThe ending point, of the required gradient.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new gradient object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_gradient_create_radial, ps_gradient_create_conic, ps_gradient_ref, ps_gradient_unref
+ +
+
+ +

◆ ps_gradient_create_radial()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_gradient * ps_gradient_create_radial (ps_gradient_spread spread,
const ps_pointstart,
float sradius,
const ps_pointend,
float eradius 
)
+
+ +

Create a new gradient that varies along the area defined by provided starting and ending circles.

+
Parameters
+ + + + + + +
spreadThe spread type of the gradient.
startThe center point of the starting circle, of the required gradient.
sradiusThe radius of the starting circle, of the required gradient.
endThe center point of the ending circle, of the required gradient.
eradiusThe radius of the ending circle, of the required gradient.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new gradient object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_gradient_create_linear, ps_gradient_create_conic, ps_gradient_ref, ps_gradient_unref
+ +
+
+ +

◆ ps_gradient_ref()

+ +
+
+ + + + + + + + +
ps_gradient * ps_gradient_ref (ps_gradientgradient)
+
+ +

Increases the reference count of the gradient by 1.

+
Parameters
+ + +
gradientPointer to an existing gradient object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the gradient object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_gradient_create_linear, ps_gradient_create_radial, ps_gradient_create_conic, ps_gradient_unref
+ +
+
+ +

◆ ps_gradient_transform()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_gradient_transform (ps_gradientgradient,
const ps_matrixmatrix 
)
+
+ +

Transform the gradient object.

+
Parameters
+ + + +
gradientPointer to an existing gradient object.
matrixPointer to an existing matrix object.
+
+
+
See also
ps_gradient_create_linear, ps_gradient_create_radial, ps_gradient_create_conic, ps_gradient_ref, ps_gradient_unref
+ +
+
+ +

◆ ps_gradient_unref()

+ +
+
+ + + + + + + + +
void ps_gradient_unref (ps_gradientgradient)
+
+ +

Decrements the reference count for the gradient object. If the reference count on the gradient falls to 0, the gradient is freed.

+
Parameters
+ + +
gradientPointer to an existing gradient object.
+
+
+
See also
ps_gradient_create_linear, ps_gradient_create_radial, ps_gradient_create_conic, ps_gradient_ref
+ +
+
+
+ + + + diff --git a/doc/html/group__graphic.html b/doc/html/group__graphic.html new file mode 100644 index 0000000..de9cf6d --- /dev/null +++ b/doc/html/group__graphic.html @@ -0,0 +1,87 @@ + + + + + + + +Picasso API: Graphic Functions + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
Graphic Functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 Context
 
 Canvas
 
 Image
 
 Pattern
 
 Gradient
 
 Mask
 
 Drawing
 
 Font
 
 Text
 
 Transform
 
 Matrix
 
 Geometry
 
 Path
 
+

Detailed Description

+
+ + + + diff --git a/doc/html/group__image.html b/doc/html/group__image.html new file mode 100644 index 0000000..6c9d04d --- /dev/null +++ b/doc/html/group__image.html @@ -0,0 +1,595 @@ + + + + + + + +Picasso API: Image + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT ps_image *PICAPI ps_image_create (ps_color_format fmt, int width, int height)
 Create a new image using the given parameters. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
PEXPORT ps_image *PICAPI ps_image_ref (ps_image *img)
 Increases the reference count of the image by 1. More...
 
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, the image is freed. More...
 
PEXPORT void PICAPI ps_image_set_allow_transparent (ps_image *img, ps_bool allow)
 Set whether the image allowed be transparent, False is default. More...
 
PEXPORT void PICAPI ps_image_set_transparent_color (ps_image *img, const ps_color *color)
 Set the transparent color for the image. More...
 
PEXPORT ps_bool PICAPI ps_image_get_size (const ps_image *img, ps_size *rsize)
 Return the size of the image. More...
 
PEXPORT ps_color_format PICAPI ps_image_get_format (const ps_image *img)
 Return the pixel format of the image. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_image_create()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_image * ps_image_create (ps_color_format fmt,
int width,
int height 
)
+
+ +

Create a new image using the given parameters.

+
Parameters
+ + + + +
fmtThe Pixel format to use for the image.
widthThe width, in pixels, of the required image.
heightThe height, in pixels, of the required image.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_create_with_data, ps_image_create_compatible, ps_image_create_from_canvas, ps_image_create_from_data, ps_image_create_from_image, ps_image_ref, ps_image_unref
+ +
+
+ +

◆ ps_image_create_compatible()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_image * ps_image_create_compatible (const ps_canvascanvas,
int width,
int height 
)
+
+ +

Create a new image to compatible with an existing canvas.

+
Parameters
+ + + + +
canvasA pointer to an existing canvas.
widthThe width, in pixels, of the required canvas. If it is not more than zero, the width will be equal to the width of the reference canvas.
heightThe height, in pixels, of the required canvas. If it is not more than zero, the height will be equal to the height of the reference canvas.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_create, ps_image_create_with_data, ps_image_create_from_canvas, ps_image_create_from_image, ps_image_ref, ps_image_unref
+ +
+
+ +

◆ ps_image_create_from_canvas()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_image * ps_image_create_from_canvas (ps_canvascanvas,
const ps_rectrect 
)
+
+ +

Create a new image using part of an existing canvas in same pixel buffer.

+
Parameters
+ + + +
canvasA pointer to an existing canvas.
rectThe rectangle area of the image from the ps_canvas. If it is NULL, the image's width and height will be equal to the parant canvas.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_create, ps_image_create_with_data, ps_image_create_compatible, ps_image_create_from_data, ps_image_create_from_image, ps_image_ref, ps_image_unref
+ +
+
+ +

◆ ps_image_create_from_data()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_image * ps_image_create_from_data (ps_bytedata,
ps_color_format fmt,
int width,
int height,
int pitch 
)
+
+ +

Create a new image using a copy of given address in memory.

+
Parameters
+ + + + + + +
dataA pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch * height) bytes.
fmtThe Pixel format to use for the image.
widthThe width, in pixels, of the required image.
heightThe height, in pixels, of the required image.
pitchThe number of bytes per row, of the required image.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_create, ps_image_create_compatible, ps_image_create_from_canvas, ps_image_create_with_data, ps_image_create_from_image, ps_image_ref, ps_image_unref
+ +
+
+ +

◆ ps_image_create_from_image()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_image * ps_image_create_from_image (ps_imageimg,
const ps_rectrect 
)
+
+ +

Create a new image using part of an existing ps_image object in same pixel buffer.

+
Parameters
+ + + +
imgA pointer to an existing ps_image object.
rectThe rectangle area of the image from the parent image. If it is NULL, the image's width and height will be equal to parent image object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_create, ps_image_create_with_data, ps_image_create_compatible, ps_image_create_from_data, ps_image_create_from_canvas, ps_image_ref, ps_image_unref
+ +
+
+ +

◆ ps_image_create_with_data()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_image * ps_image_create_with_data (ps_bytedata,
ps_color_format fmt,
int width,
int height,
int pitch 
)
+
+ +

Create a new image using a given address in memory.

+
Parameters
+ + + + + + +
dataA pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch * height) bytes.
fmtThe Pixel format to use for the image.
widthThe width, in pixels, of the required image.
heightThe height, in pixels, of the required image.
pitchThe number of bytes per row, of the required image.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_create, ps_image_create_compatible, ps_image_create_from_canvas, ps_image_create_from_data, ps_image_create_from_image, ps_image_ref, ps_image_unref
+ +
+
+ +

◆ ps_image_get_format()

+ +
+
+ + + + + + + + +
ps_color_format ps_image_get_format (const ps_imageimg)
+
+ +

Return the pixel format of the image.

+
Parameters
+ + +
imgPointer to an existing image object.
+
+
+
Returns
If the function succeeds, the return a valid color format. If the function fails, the return value is COLOR_FORMAT_UNKNOWN.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_get_size, ps_image_set_allow_transparent
+ +
+
+ +

◆ ps_image_get_size()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_bool ps_image_get_size (const ps_imageimg,
ps_sizersize 
)
+
+ +

Return the size of the image.

+
Parameters
+ + + +
imgPointer to an existing image object.
rsizePointer to a buffer to receiving the size.
+
+
+
Returns
True if is success, otherwise False.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_get_format, ps_image_set_allow_transparent
+ +
+
+ +

◆ ps_image_ref()

+ +
+
+ + + + + + + + +
ps_image * ps_image_ref (ps_imageimg)
+
+ +

Increases the reference count of the image by 1.

+
Parameters
+ + +
imgPointer to an existing image object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the image object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_image_create, ps_image_create_with_data, ps_image_create_compatible, ps_image_create_from_data, ps_image_create_from_canvas, ps_image_create_from_image, ps_image_unref
+ +
+
+ +

◆ ps_image_set_allow_transparent()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_image_set_allow_transparent (ps_imageimg,
ps_bool allow 
)
+
+ +

Set whether the image allowed be transparent, False is default.

+
Parameters
+ + + +
imgPointer to an existing image object.
allowBoolean value whether transparent is allowed.
+
+
+
See also
ps_image_get_format, ps_image_get_size
+ +
+
+ +

◆ ps_image_set_transparent_color()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_image_set_transparent_color (ps_imageimg,
const ps_colorcolor 
)
+
+ +

Set the transparent color for the image.

+
Parameters
+ + + +
imgPointer to an existing image object.
colorThe color for the transparent, NULL for disable.
+
+
+
See also
ps_image_get_format, ps_image_get_size
+ +
+
+ +

◆ ps_image_unref()

+ +
+
+ + + + + + + + +
void ps_image_unref (ps_imageimg)
+
+ +

Decrements the reference count for the image object. If the reference count on the image falls to 0, the image is freed.

+
Parameters
+ + +
imgPointer to an existing image object.
+
+
+
See also
ps_image_create, ps_image_create_with_data, ps_image_create_compatible, ps_image_create_from_data, ps_image_create_from_canvas, ps_image_create_from_image, ps_image_ref
+ +
+
+
+ + + + diff --git a/doc/html/group__interface.html b/doc/html/group__interface.html new file mode 100644 index 0000000..211376e --- /dev/null +++ b/doc/html/group__interface.html @@ -0,0 +1,163 @@ + + + + + + + +Picasso API: XImage Coders Register functions + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
XImage Coders Register functions
+
+
+ + + + + + + + +

+Functions

PEXPORT int psx_image_register_operator (const char *type, const ps_byte *signature, size_t sig_offset, size_t sig_len, psx_priority_level level, psx_image_operator *coder)
 Register the image operator. More...
 
PEXPORT int psx_image_unregister_operator (psx_image_operator *coder)
 Unregister the image operator. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ psx_image_register_operator()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int psx_image_register_operator (const char * type,
const ps_bytesignature,
size_t sig_offset,
size_t sig_len,
psx_priority_level level,
psx_image_operatorcoder 
)
+
+ +

Register the image operator.

+
Parameters
+ + + + + + + +
typeThe image operator short name. (i.e "png" "jpg" "gif" "bmp")
signatureThe image signature.
sig_offsetThe image signature offset from the beginning of the image data. (usually is 0)
sig_lenThe image signature length.
levelThe image operator priority level.
coderThe pointer to a image_operator object.
+
+
+
Returns
Result code returned.
+
See also
psx_image_unregister_operator
+ +
+
+ +

◆ psx_image_unregister_operator()

+ +
+
+ + + + + + + + +
int psx_image_unregister_operator (psx_image_operatorcoder)
+
+ +

Unregister the image operator.

+
Parameters
+ + +
coderThe image operator which will be unregister.
+
+
+
Returns
Result code returned.
+
See also
psx_image_register_operator
+ +
+
+
+ + + + diff --git a/doc/html/group__mask.html b/doc/html/group__mask.html new file mode 100644 index 0000000..b963155 --- /dev/null +++ b/doc/html/group__mask.html @@ -0,0 +1,245 @@ + + + + + + + +Picasso API: Mask + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +

+Functions

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. More...
 
PEXPORT ps_mask *PICAPI ps_mask_ref (ps_mask *mask)
 Increases the reference count of the mask by 1. More...
 
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, the mask is freed. More...
 
PEXPORT void PICAPI ps_mask_add_color_filter (ps_mask *mask, const ps_color *color)
 Add a color filter to a mask. More...
 
PEXPORT void PICAPI ps_mask_clear_color_filters (ps_mask *mask)
 Clear all colors from mask's filter. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_mask_add_color_filter()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_mask_add_color_filter (ps_maskmask,
const ps_colorcolor 
)
+
+ +

Add a color filter to a mask.

+
Parameters
+ + + +
maskPointer to an existing mask object.
colorA color for be masked. Only the colors specified by filter can be masked. If no color is specified, all colors can be masked.
+
+
+
See also
ps_mask_clear_color_filters
+ +
+
+ +

◆ ps_mask_clear_color_filters()

+ +
+
+ + + + + + + + +
void ps_mask_clear_color_filters (ps_maskmask)
+
+ +

Clear all colors from mask's filter.

+
Parameters
+ + +
maskPointer to an existing mask object.
+
+
+
See also
ps_mask_add_color_filter
+ +
+
+ +

◆ ps_mask_create_with_data()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_mask * ps_mask_create_with_data (ps_bytedata,
int width,
int height 
)
+
+ +

Create a new mask using a given data block.

+
Parameters
+ + + + +
dataA pointer to the mask data block in memory. Each byte of data is a aplha value, from transparent to opaque (0 ~ 255). The size of this memory block should be at least (width * height) bytes.
widthThe width, in pixels, of the required mask.
heightThe height, in pixels, of the required mask.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new mask object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_mask_ref, ps_mask_unref, ps_canvas_set_mask, ps_canvas_reset_mask
+ +
+
+ +

◆ ps_mask_ref()

+ +
+
+ + + + + + + + +
ps_mask * ps_mask_ref (ps_maskmask)
+
+ +

Increases the reference count of the mask by 1.

+
Parameters
+ + +
maskPointer to an existing mask object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the mask object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_mask_create_with_data, ps_mask_unref, ps_canvas_set_mask, ps_canvas_reset_mask
+ +
+
+ +

◆ ps_mask_unref()

+ +
+
+ + + + + + + + +
void ps_mask_unref (ps_maskmask)
+
+ +

Decrements the reference count for the mask object. If the reference count on the mask falls to 0, the mask is freed.

+
Parameters
+ + +
maskPointer to an existing mask object.
+
+
+
See also
ps_mask_create_with_data, ps_mask_ref, ps_canvas_set_mask, ps_canvas_reset_mask
+ +
+
+
+ + + + diff --git a/doc/html/group__matrix.html b/doc/html/group__matrix.html new file mode 100644 index 0000000..0213798 --- /dev/null +++ b/doc/html/group__matrix.html @@ -0,0 +1,1200 @@ + + + + + + + +Picasso API: Matrix + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT ps_matrix *PICAPI ps_matrix_create (void)
 Create a identity matrix object. More...
 
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. More...
 
PEXPORT ps_matrix *PICAPI ps_matrix_create_copy (const ps_matrix *matrix)
 Create a matrix copy from an exist one. More...
 
PEXPORT ps_matrix *PICAPI ps_matrix_ref (ps_matrix *matrix)
 Increases the reference count of the matrix by 1. More...
 
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, the matrix is freed. More...
 
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. More...
 
PEXPORT void PICAPI ps_matrix_translate (ps_matrix *matrix, float tx, float ty)
 Modify a matrix by translating. More...
 
PEXPORT void PICAPI ps_matrix_scale (ps_matrix *matrix, float sx, float sy)
 Modify a matrix by scaling. More...
 
PEXPORT void PICAPI ps_matrix_rotate (ps_matrix *matrix, float angle)
 Modify a matrix by rotating. More...
 
PEXPORT void PICAPI ps_matrix_shear (ps_matrix *matrix, float shx, float shy)
 Modify a matrix by shearing. More...
 
PEXPORT void PICAPI ps_matrix_invert (ps_matrix *matrix)
 Modify a matrix by inverting. More...
 
PEXPORT void PICAPI ps_matrix_identity (ps_matrix *matrix)
 Reset a matrix to identity matrix. More...
 
PEXPORT void PICAPI ps_matrix_flip_x (ps_matrix *matrix)
 Flip a matrix in the horizontal direction. More...
 
PEXPORT void PICAPI ps_matrix_flip_y (ps_matrix *matrix)
 Flip a matrix in the vertical direction. More...
 
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. More...
 
PEXPORT ps_bool PICAPI ps_matrix_is_identity (const ps_matrix *matrix)
 Checks whether the matrix is the identity transform matrix. More...
 
PEXPORT ps_bool PICAPI ps_matrix_is_equal (const ps_matrix *a, const ps_matrix *b)
 Checks whether two matrix are equal. More...
 
PEXPORT float PICAPI ps_matrix_get_determinant (const ps_matrix *matrix)
 Return the determinant from a matrix. More...
 
PEXPORT void PICAPI ps_matrix_set_translate_factor (ps_matrix *matrix, float tx, float ty)
 Set the translate factors to the matrix. More...
 
PEXPORT ps_bool PICAPI ps_matrix_get_translate_factor (ps_matrix *matrix, float *tx, float *ty)
 Get the translate factors from the matrix. More...
 
PEXPORT void PICAPI ps_matrix_set_scale_factor (ps_matrix *matrix, float sx, float sy)
 Set the scale factors to the matrix. More...
 
PEXPORT ps_bool PICAPI ps_matrix_get_scale_factor (ps_matrix *matrix, float *sx, float *sy)
 Get the scale factors from the matrix. More...
 
PEXPORT void PICAPI ps_matrix_set_shear_factor (ps_matrix *matrix, float shx, float shy)
 Set the shear factors to the matrix. More...
 
PEXPORT ps_bool PICAPI ps_matrix_get_shear_factor (ps_matrix *matrix, float *shx, float *shy)
 Get the shear factors from the matrix. More...
 
PEXPORT void PICAPI ps_matrix_transform_point (const ps_matrix *matrix, ps_point *point)
 Transform an existing point using the matrix. More...
 
PEXPORT void PICAPI ps_matrix_transform_rect (const ps_matrix *matrix, ps_rect *rect)
 Transform an existing rectangle using the matrix. More...
 
PEXPORT void PICAPI ps_matrix_transform_path (const ps_matrix *matrix, ps_path *path)
 Transform an existing path using the matrix. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_matrix_create()

+ +
+
+ + + + + + + + +
ps_matrix * ps_matrix_create (void )
+
+ +

Create a identity matrix object.

+
Returns
If the function succeeds, the return value is the pointer to a new matrix object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_matrix_create_init, ps_matrix_create_copy, ps_matrix_ref, ps_matrix_unref
+ +
+
+ +

◆ ps_matrix_create_copy()

+ +
+
+ + + + + + + + +
ps_matrix * ps_matrix_create_copy (const ps_matrixmatrix)
+
+ +

Create a matrix copy from an exist one.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new matrix object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_matrix_create_init, ps_matrix_create, ps_matrix_ref, ps_matrix_unref
+ +
+
+ +

◆ ps_matrix_create_init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_matrix * ps_matrix_create_init (float sx,
float shy,
float shx,
float sy,
float tx,
float ty 
)
+
+ +

Create a matrix with given parameters.

+
Parameters
+ + + + + + + +
sxThe horizontal scaling factor.
shyThe vertical skewing factor.
shxThe horizontal skewing factor.
syThe vertical scaling factor.
txThe horizontal translating factor.
tyThe vertical translating factor.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new matrix object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_matrix_create, ps_matrix_create_copy, ps_matrix_ref, ps_matrix_unref
+ +
+
+ +

◆ ps_matrix_flip_x()

+ +
+
+ + + + + + + + +
void ps_matrix_flip_x (ps_matrixmatrix)
+
+ +

Flip a matrix in the horizontal direction.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
See also
ps_matrix_identity, ps_matrix_flip_y, ps_matrix_invert
+ +
+
+ +

◆ ps_matrix_flip_y()

+ +
+
+ + + + + + + + +
void ps_matrix_flip_y (ps_matrixmatrix)
+
+ +

Flip a matrix in the vertical direction.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
See also
ps_matrix_identity, ps_matrix_flip_x, ps_matrix_invert
+ +
+
+ +

◆ ps_matrix_get_determinant()

+ +
+
+ + + + + + + + +
float ps_matrix_get_determinant (const ps_matrixmatrix)
+
+ +

Return the determinant from a matrix.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
Returns
The determinant of the matrix.
+
See also
ps_matrix_is_equal, ps_matrix_is_identity, ps_matrix_multiply
+ +
+
+ +

◆ ps_matrix_get_scale_factor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_bool ps_matrix_get_scale_factor (ps_matrixmatrix,
float * sx,
float * sy 
)
+
+ +

Get the scale factors from the matrix.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
sxPointer to a buffer to receiving the scale factor in x dimension.
syPointer to a buffer to receiving the scale factor in y dimension.
+
+
+
Returns
True if is success, otherwise False.
+
See also
ps_matrix_set_scale_factor
+ +
+
+ +

◆ ps_matrix_get_shear_factor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_bool ps_matrix_get_shear_factor (ps_matrixmatrix,
float * shx,
float * shy 
)
+
+ +

Get the shear factors from the matrix.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
shxPointer to a buffer to receiving the shear factor in horizontal.
shyPointer to a buffer to receiving the shear factor in vertical.
+
+
+
Returns
True if is success, otherwise False.
+
See also
ps_matrix_set_shear_factor
+ +
+
+ +

◆ ps_matrix_get_translate_factor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_bool ps_matrix_get_translate_factor (ps_matrixmatrix,
float * tx,
float * ty 
)
+
+ +

Get the translate factors from the matrix.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
txPointer to a buffer to receiving the translate factor in x direction.
tyPointer to a buffer to receiving the translate factor in y direction.
+
+
+
Returns
True if is success, otherwise False.
+
See also
ps_matrix_set_translate_factor
+ +
+
+ +

◆ ps_matrix_identity()

+ +
+
+ + + + + + + + +
void ps_matrix_identity (ps_matrixmatrix)
+
+ +

Reset a matrix to identity matrix.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
See also
ps_matrix_flip_x, ps_matrix_flip_y, ps_matrix_invert
+ +
+
+ +

◆ ps_matrix_init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_matrix_init (ps_matrixmatrix,
float sx,
float shy,
float shx,
float sy,
float tx,
float ty 
)
+
+ +

Initialize an existing matrix object with given parameters.

+
Parameters
+ + + + + + + + +
matrixPointer to an existing matrix object.
sxThe horizontal scaling factor.
shyThe vertical skewing factor.
shxThe horizontal skewing factor.
syThe vertical scaling factor.
txThe horizontal translating factor.
tyThe vertical translating factor.
+
+
+
See also
ps_matrix_translate, ps_matrix_scale, ps_matrix_shear, ps_matrix_rotate
+ +
+
+ +

◆ ps_matrix_invert()

+ +
+
+ + + + + + + + +
void ps_matrix_invert (ps_matrixmatrix)
+
+ +

Modify a matrix by inverting.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
See also
ps_matrix_flip_x, ps_matrix_flip_y, ps_matrix_identity
+ +
+
+ +

◆ ps_matrix_is_equal()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_bool ps_matrix_is_equal (const ps_matrixa,
const ps_matrixb 
)
+
+ +

Checks whether two matrix are equal.

+
Parameters
+ + + +
aPointer to an existing matrix object.
bPointer to an existing matrix object.
+
+
+
Returns
True if a and b are equal, otherwise False.
+
See also
ps_matrix_is_identity, ps_matrix_get_determinant, ps_matrix_multiply
+ +
+
+ +

◆ ps_matrix_is_identity()

+ +
+
+ + + + + + + + +
ps_bool ps_matrix_is_identity (const ps_matrixmatrix)
+
+ +

Checks whether the matrix is the identity transform matrix.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
Returns
True if is identity, otherwise False.
+
See also
ps_matrix_is_equal, ps_matrix_get_determinant, ps_matrix_multiply
+ +
+
+ +

◆ ps_matrix_multiply()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_matrix_multiply (ps_matrixresult,
const ps_matrixa,
const ps_matrixb 
)
+
+ +

Multiplies the matrix in a and b together and stores the result in result.

+
Parameters
+ + + + +
resultPointer to an existing matrix object in which to store the result.
aPointer to an existing matrix object.
bPointer to an existing matrix object.
+
+
+
See also
ps_matrix_is_identity, ps_matrix_is_equal ps_matrix_get_determinant
+ +
+
+ +

◆ ps_matrix_ref()

+ +
+
+ + + + + + + + +
ps_matrix * ps_matrix_ref (ps_matrixmatrix)
+
+ +

Increases the reference count of the matrix by 1.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the matrix object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_matrix_create_init, ps_matrix_create, ps_matrix_create_copy, ps_matrix_unref
+ +
+
+ +

◆ ps_matrix_rotate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_matrix_rotate (ps_matrixmatrix,
float angle 
)
+
+ +

Modify a matrix by rotating.

+
Parameters
+ + + +
matrixPointer to an existing matrix object.
angleThe angle, in radians, which to rotate the specified matrix.
+
+
+
See also
ps_matrix_translate, ps_matrix_shear, ps_matrix_scale
+ +
+
+ +

◆ ps_matrix_scale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_matrix_scale (ps_matrixmatrix,
float sx,
float sy 
)
+
+ +

Modify a matrix by scaling.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
sxThe scale factor for the X dimension.
syThe scale factor for the Y dimension.
+
+
+
See also
ps_matrix_translate, ps_matrix_shear, ps_matrix_rotate
+ +
+
+ +

◆ ps_matrix_set_scale_factor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_matrix_set_scale_factor (ps_matrixmatrix,
float sx,
float sy 
)
+
+ +

Set the scale factors to the matrix.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
sxThe scale factor in x dimension.
syThe scale factor in y dimension.
+
+
+
See also
ps_matrix_get_scale_factor
+ +
+
+ +

◆ ps_matrix_set_shear_factor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_matrix_set_shear_factor (ps_matrixmatrix,
float shx,
float shy 
)
+
+ +

Set the shear factors to the matrix.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
shxThe shear factor for the horizontal.
shyThe shear factor for the vertical.
+
+
+
See also
ps_matrix_get_shear_factor
+ +
+
+ +

◆ ps_matrix_set_translate_factor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_matrix_set_translate_factor (ps_matrixmatrix,
float tx,
float ty 
)
+
+ +

Set the translate factors to the matrix.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
txThe amount, in pixels, which the translate factor in x direction.
tyThe amount, in pixels, which the translate factor in y direction.
+
+
+
See also
ps_matrix_get_translate_factor
+ +
+
+ +

◆ ps_matrix_shear()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_matrix_shear (ps_matrixmatrix,
float shx,
float shy 
)
+
+ +

Modify a matrix by shearing.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
shxThe shear factor for the horizontal.
shyThe shear factor for the vertical.
+
+
+
See also
ps_matrix_translate, ps_matrix_scale, ps_matrix_rotate
+ +
+
+ +

◆ ps_matrix_transform_path()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_matrix_transform_path (const ps_matrixmatrix,
ps_pathpath 
)
+
+ +

Transform an existing path using the matrix.

+
Parameters
+ + + +
matrixPointer to an existing matrix object.
pathAn existing path which will be transformed.
+
+
+
See also
ps_matrix_transform_point, ps_matrix_transform_rect
+ +
+
+ +

◆ ps_matrix_transform_point()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_matrix_transform_point (const ps_matrixmatrix,
ps_pointpoint 
)
+
+ +

Transform an existing point using the matrix.

+
Parameters
+ + + +
matrixPointer to an existing matrix object.
pointAn existing point which will be transformed.
+
+
+
See also
ps_matrix_transform_rect, ps_matrix_transform_path
+ +
+
+ +

◆ ps_matrix_transform_rect()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_matrix_transform_rect (const ps_matrixmatrix,
ps_rectrect 
)
+
+ +

Transform an existing rectangle using the matrix.

+
Parameters
+ + + +
matrixPointer to an existing matrix object.
rectAn existing rectangle which will be transformed.
+
+
+
See also
ps_matrix_transform_point, ps_matrix_transform_path
+ +
+
+ +

◆ ps_matrix_translate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_matrix_translate (ps_matrixmatrix,
float tx,
float ty 
)
+
+ +

Modify a matrix by translating.

+
Parameters
+ + + + +
matrixPointer to an existing matrix object.
txThe amount, in pixels, which to translate in x direction.
tyThe amount, in pixels, which to translate in y direction.
+
+
+
See also
ps_matrix_scale, ps_matrix_shear, ps_matrix_rotate
+ +
+
+ +

◆ ps_matrix_unref()

+ +
+
+ + + + + + + + +
void ps_matrix_unref (ps_matrixmatrix)
+
+ +

Decrements the reference count for the matrix object. If the reference count on the matrix falls to 0, the matrix is freed.

+
Parameters
+ + +
matrixPointer to an existing matrix object.
+
+
+
See also
ps_matrix_create_init, ps_matrix_create, ps_matrix_create_copy, ps_matrix_ref
+ +
+
+
+ + + + diff --git a/doc/html/group__objects.html b/doc/html/group__objects.html new file mode 100644 index 0000000..ae12dc2 --- /dev/null +++ b/doc/html/group__objects.html @@ -0,0 +1,299 @@ + + + + + + + +Picasso API: Graphic Object Types + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
Graphic Object Types
+
+
+ + + + + + + + + + + + + + + + + +

+Data Structures

struct  _ps_glyph
 A character glyph of a font. More...
 
struct  _ps_size
 A structure that contains width and height values. More...
 
struct  _ps_rect
 A structure that contains location and dimensions of a rectangle. More...
 
struct  _ps_point
 A structure that contains a point in a two-dimensional coordinate system. More...
 
struct  _ps_color
 A structure that contains rgba values for a color. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef struct _ps_context ps_context
 An opaque type represents a Picasso drawing environment. More...
 
typedef struct _ps_canvas ps_canvas
 An opaque type represents a pixel buffer. More...
 
typedef struct _ps_image ps_image
 An opaque type represents an image. More...
 
typedef struct _ps_pattern ps_pattern
 An opaque type represents a pattern. More...
 
typedef struct _ps_gradient ps_gradient
 An opaque type represents a gradient. More...
 
typedef struct _ps_matrix ps_matrix
 An opaque type represents a transform matrix. More...
 
typedef struct _ps_path ps_path
 An opaque type represents a graphic path. More...
 
typedef struct _ps_mask ps_mask
 An opaque type represents an alpha mask. More...
 
typedef struct _ps_font ps_font
 An opaque type represents a font. More...
 
+typedef struct _ps_glyph ps_glyph
 A character glyph of a font.
 
+typedef struct _ps_size ps_size
 A structure that contains width and height values.
 
+typedef struct _ps_rect ps_rect
 A structure that contains location and dimensions of a rectangle.
 
+typedef struct _ps_point ps_point
 A structure that contains a point in a two-dimensional coordinate system.
 
+typedef struct _ps_color ps_color
 A structure that contains rgba values for a color.
 
+

Detailed Description

+

Typedef Documentation

+ +

◆ ps_canvas

+ +
+
+ + + + +
ps_canvas
+
+ +

An opaque type represents a pixel buffer.

+
See also
ps_context, ps_image
+ +

Definition at line 116 of file picasso.h.

+ +
+
+ +

◆ ps_context

+ +
+
+ + + + +
ps_context
+
+ +

An opaque type represents a Picasso drawing environment.

+
See also
ps_canvas
+ +

Definition at line 109 of file picasso.h.

+ +
+
+ +

◆ ps_font

+ +
+
+ + + + +
ps_font
+
+ +

An opaque type represents a font.

+
See also
ps_context
+ +

Definition at line 165 of file picasso.h.

+ +
+
+ +

◆ ps_gradient

+ +
+
+ + + + +
ps_gradient
+
+ +

An opaque type represents a gradient.

+
See also
ps_path, ps_matrix
+ +

Definition at line 137 of file picasso.h.

+ +
+
+ +

◆ ps_image

+ +
+
+ + + + +
ps_image
+
+ +

An opaque type represents an image.

+
See also
ps_canvas, ps_pattern
+ +

Definition at line 123 of file picasso.h.

+ +
+
+ +

◆ ps_mask

+ +
+
+ + + + +
ps_mask
+
+ +

An opaque type represents an alpha mask.

+
See also
ps_path, ps_image, ps_canvas
+ +

Definition at line 158 of file picasso.h.

+ +
+
+ +

◆ ps_matrix

+ +
+
+ + + + +
ps_matrix
+
+ +

An opaque type represents a transform matrix.

+
See also
ps_path, ps_context
+ +

Definition at line 144 of file picasso.h.

+ +
+
+ +

◆ ps_path

+ +
+
+ + + + +
ps_path
+
+ +

An opaque type represents a graphic path.

+
See also
ps_matrix, ps_context
+ +

Definition at line 151 of file picasso.h.

+ +
+
+ +

◆ ps_pattern

+ +
+
+ + + + +
ps_pattern
+
+ +

An opaque type represents a pattern.

+
See also
ps_canvas, ps_image
+ +

Definition at line 130 of file picasso.h.

+ +
+
+
+ + + + diff --git a/doc/html/group__paint.html b/doc/html/group__paint.html new file mode 100644 index 0000000..88afc61 --- /dev/null +++ b/doc/html/group__paint.html @@ -0,0 +1,182 @@ + + + + + + + +Picasso API: Paint + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + + + + +

+Functions

PEXPORT void PICAPI ps_stroke (ps_context *ctx)
 Stroke the current path according to the line attributes. After called, the current path will be cleared from the context. More...
 
PEXPORT void PICAPI ps_fill (ps_context *ctx)
 Fill the current path according to the source attributes. After called, the current path will be cleared from the context. More...
 
PEXPORT void PICAPI ps_paint (ps_context *ctx)
 Fill and stroke the current path according to the source and line attributes. After called, the current path will be cleared from the context. More...
 
PEXPORT void PICAPI ps_clear (ps_context *ctx)
 Clear the current context with source color. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_clear()

+ +
+
+ + + + + + + + +
void ps_clear (ps_contextctx)
+
+ +

Clear the current context with source color.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_stroke, ps_fill, ps_paint
+ +
+
+ +

◆ ps_fill()

+ +
+
+ + + + + + + + +
void ps_fill (ps_contextctx)
+
+ +

Fill the current path according to the source attributes. After called, the current path will be cleared from the context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_stroke, ps_paint, ps_clear
+ +
+
+ +

◆ ps_paint()

+ +
+
+ + + + + + + + +
void ps_paint (ps_contextctx)
+
+ +

Fill and stroke the current path according to the source and line attributes. After called, the current path will be cleared from the context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_stroke, ps_fill, ps_clear
+ +
+
+ +

◆ ps_stroke()

+ +
+
+ + + + + + + + +
void ps_stroke (ps_contextctx)
+
+ +

Stroke the current path according to the line attributes. After called, the current path will be cleared from the context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_fill, ps_paint, ps_clear
+ +
+
+
+ + + + diff --git a/doc/html/group__path.html b/doc/html/group__path.html new file mode 100644 index 0000000..b26402d --- /dev/null +++ b/doc/html/group__path.html @@ -0,0 +1,1331 @@ + + + + + + + +Picasso API: Path + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + +

+Typedefs

+typedef enum _ps_path_cmd ps_path_cmd
 Path command for vertices.
 
+typedef enum _ps_path_op ps_path_operation
 Path clipping operations.
 
+ + + + + + + +

+Enumerations

enum  _ps_path_cmd {
+  PATH_CMD_STOP = 0, +PATH_CMD_MOVE_TO = 1, +PATH_CMD_LINE_TO = 2, +PATH_CMD_CURVE3 = 3, +
+  PATH_CMD_CURVE4 = 4, +PATH_CMD_END_POLY = 0x0F +
+ }
 Path command for vertices. More...
 
enum  _ps_path_op { PATH_OP_UNION, +PATH_OP_INTERSECT, +PATH_OP_XOR, +PATH_OP_DIFF + }
 Path clipping operations. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT ps_path *PICAPI ps_path_create (void)
 Create a new empty path object. More...
 
PEXPORT ps_path *PICAPI ps_path_create_copy (const ps_path *path)
 Create a copy from an existing path object. More...
 
PEXPORT ps_path *PICAPI ps_path_ref (ps_path *path)
 Increases the reference count of the path by 1. More...
 
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, the path is freed. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
PEXPORT void PICAPI ps_path_sub_close (ps_path *path)
 Close the sub path, and begin a new one. More...
 
PEXPORT float PICAPI ps_path_get_length (const ps_path *path)
 Return The length of the path. More...
 
PEXPORT void PICAPI ps_path_clear (ps_path *path)
 Clear the path to empty. More...
 
PEXPORT ps_bool PICAPI ps_path_is_empty (const ps_path *path)
 Checks whether the path is empty. More...
 
PEXPORT unsigned int PICAPI ps_path_get_vertex_count (const ps_path *path)
 Return the count of vertices in the path. More...
 
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. More...
 
PEXPORT ps_bool PICAPI ps_path_bounding_rect (const ps_path *path, ps_rect *rect)
 Get the bounding rectangle of the path. More...
 
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. More...
 
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. More...
 
PEXPORT void PICAPI ps_path_add_line (ps_path *path, const ps_point *p1, const ps_point *p2)
 Add a line to the path. More...
 
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. More...
 
PEXPORT void PICAPI ps_path_add_rect (ps_path *path, const ps_rect *rect)
 Add a rectangle to the path. More...
 
PEXPORT void PICAPI ps_path_add_ellipse (ps_path *path, const ps_rect *rect)
 Add an ellipse to the path. More...
 
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. More...
 
PEXPORT void PICAPI ps_path_add_sub_path (ps_path *path, const ps_path *spath)
 Add an sub path to the path. More...
 
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. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_path_cmd

+ +
+
+ + + + +
enum _ps_path_cmd
+
+ +

Path command for vertices.

+ + + + + + + +
Enumerator
PATH_CMD_STOP 

Stop command.

+
PATH_CMD_MOVE_TO 

Move to command.

+
PATH_CMD_LINE_TO 

Line to command.

+
PATH_CMD_CURVE3 

Quad curve to command.

+
PATH_CMD_CURVE4 

Bezier curve to command.

+
PATH_CMD_END_POLY 

End polyline command.

+
+ +

Definition at line 3301 of file picasso.h.

+ +
+
+ +

◆ _ps_path_op

+ +
+
+ + + + +
enum _ps_path_op
+
+ +

Path clipping operations.

+ + + + + +
Enumerator
PATH_OP_UNION 

Union.

+
PATH_OP_INTERSECT 

Intersection.

+
PATH_OP_XOR 

Exclusive or.

+
PATH_OP_DIFF 

Difference.

+
+ +

Definition at line 3477 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_path_add_arc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_path_add_arc (ps_pathpath,
const ps_pointcp,
float radius,
float sangle,
float eangle,
ps_bool clockwise 
)
+
+ +

Add a arc to the path.

+
Parameters
+ + + + + + + +
pathPointer to an existing path object.
cpThe center point of the arc.
radiusThe radius of the arc.
sangleThe start angle, in radians.
eangleThe end angle, in radians.
clockwiseTrue is clockwise, False is counter clockwise.
+
+
+
See also
ps_path_add_line, ps_path_add_rect, ps_path_add_ellipse, ps_path_add_rounded_rect, ps_path_add_sub_path
+ +
+
+ +

◆ ps_path_add_ellipse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_path_add_ellipse (ps_pathpath,
const ps_rectrect 
)
+
+ +

Add an ellipse to the path.

+
Parameters
+ + + +
pathPointer to an existing path object.
rectThe rectangle to enclose the ellipse.
+
+
+
See also
ps_path_add_arc, ps_path_add_line, ps_path_add_rect, ps_path_add_rounded_rect, ps_path_add_sub_path
+ +
+
+ +

◆ ps_path_add_line()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_path_add_line (ps_pathpath,
const ps_pointp1,
const ps_pointp2 
)
+
+ +

Add a line to the path.

+
Parameters
+ + + + +
pathPointer to an existing path object.
p1The start point for the line.
p2The end point for the line.
+
+
+
See also
ps_path_add_arc, ps_path_add_rect, ps_path_add_ellipse, ps_path_add_rounded_rect, ps_path_add_sub_path
+ +
+
+ +

◆ ps_path_add_rect()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_path_add_rect (ps_pathpath,
const ps_rectrect 
)
+
+ +

Add a rectangle to the path.

+
Parameters
+ + + +
pathPointer to an existing path object.
rectThe rectangle to be added.
+
+
+
See also
ps_path_add_arc, ps_path_add_line, ps_path_add_ellipse, ps_path_add_rounded_rect, ps_path_add_sub_path
+ +
+
+ +

◆ ps_path_add_rounded_rect()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_path_add_rounded_rect (ps_pathpath,
const ps_rectrect,
float ltx,
float lty,
float rtx,
float rty,
float lbx,
float lby,
float rbx,
float rby 
)
+
+ +

Add a rounded rectangle to the path.

+
Parameters
+ + + + + + + + + + + +
pathPointer to an existing path object.
rectThe rectangle which will be added.
ltxThe left top horizontal radius.
ltyThe left top vertical radius.
rtxThe right top horizontal radius.
rtyThe right top vertical radius.
lbxThe left bottom horizontal radius.
lbyThe left bottom vertical radius.
rbxThe right bottom horizontal radius.
rbyThe right bottom vertical radius.
+
+
+
See also
ps_path_add_arc, ps_path_add_line, ps_path_add_rect, ps_path_add_ellipse, ps_path_add_sub_path
+ +
+
+ +

◆ ps_path_add_sub_path()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_path_add_sub_path (ps_pathpath,
const ps_pathspath 
)
+
+ +

Add an sub path to the path.

+
Parameters
+ + + +
pathPointer to an existing path object.
spathThe path will be added.
+
+
+
See also
ps_path_add_arc, ps_path_add_line, ps_path_add_rect, ps_path_add_rounded_rect, ps_path_add_ellipse
+ +
+
+ +

◆ ps_path_arc_to()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_path_arc_to (ps_pathpath,
float radiusX,
float radiusY,
float angle,
ps_bool large_arc,
ps_bool clockwise,
const ps_pointep 
)
+
+ +

Add an arc to the path, using radius, angle and end point.

+
Parameters
+ + + + + + + + +
pathPointer to an existing path object.
radiusXThe horizontal radius of arc.
radiusYThe vertical radius of arc.
angleThe angle of arc, in radians.
large_arcTrue is large arc, False is small arc.
clockwiseTrue is clockwise, False is counter clockwise.
epThe end point of the arc.
+
+
+
See also
ps_path_move_to, ps_path_bezier_to, ps_path_quad_to ps_path_tangent_arc_to, ps_path_line_to
+ +
+
+ +

◆ ps_path_bezier_to()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_path_bezier_to (ps_pathpath,
const ps_pointfcp,
const ps_pointscp,
const ps_pointep 
)
+
+ +

Add a cubic bezier spline to the path from current point to end point.

+
Parameters
+ + + + + +
pathPointer to an existing path object.
fcpThe first control point of the curve.
scpThe second control point of the curve.
epThe end point of the curve.
+
+
+
See also
ps_path_move_to, ps_path_arc_to, ps_path_quad_to ps_path_tangent_arc_to, ps_path_line_to
+ +
+
+ +

◆ ps_path_bounding_rect()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_bool ps_path_bounding_rect (const ps_pathpath,
ps_rectrect 
)
+
+ +

Get the bounding rectangle of the path.

+
Parameters
+ + + +
pathPointer to an existing path object.
rectPointer to a buffer to receiving the rect.
+
+
+
Returns
True if is success, otherwise False.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_path_get_vertex_count, ps_path_get_vertex, ps_path_contains, ps_path_stroke_contains
+ +
+
+ +

◆ ps_path_clear()

+ +
+
+ + + + + + + + +
void ps_path_clear (ps_pathpath)
+
+ +

Clear the path to empty.

+
Parameters
+ + +
pathPointer to an existing path object.
+
+
+
See also
ps_path_sub_close, ps_path_get_length, ps_path_is_empty
+ +
+
+ +

◆ ps_path_clipping()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_path_clipping (ps_pathresult,
ps_path_operation op,
const ps_patha,
const ps_pathb 
)
+
+ +

Clipping two path with the operation and get the result path.

+
Parameters
+ + + + + +
resultPointer to an existing path object for result.
opThe specified operation for clipping.
aThe source path for clipping.
bThe path which will be clipping.
+
+
+
See also
ps_path_get_vertex, ps_path_get_vertex_count
+ +
+
+ +

◆ ps_path_contains()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_bool ps_path_contains (const ps_pathpath,
const ps_pointpoint,
ps_fill_rule rule 
)
+
+ +

Check whether a point is contained in the path by fill method.

+
Parameters
+ + + + +
pathPointer to an existing path object.
pointThe point to be checked.
ruleThe filling rule for the path.
+
+
+
Returns
True if the point is contained, otherwise False.
+
See also
ps_path_get_vertex_count, ps_path_get_vertex, ps_path_bounding_rect, ps_path_stroke_contains
+ +
+
+ +

◆ ps_path_create()

+ +
+
+ + + + + + + + +
ps_path * ps_path_create (void )
+
+ +

Create a new empty path object.

+
Returns
If the function succeeds, the return value is the pointer to a new path object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_path_create_copy, ps_path_ref, ps_path_unref
+ +
+
+ +

◆ ps_path_create_copy()

+ +
+
+ + + + + + + + +
ps_path * ps_path_create_copy (const ps_pathpath)
+
+ +

Create a copy from an existing path object.

+
Parameters
+ + +
pathPointer to an existing path object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new path object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_path_create, ps_path_ref, ps_path_unref
+ +
+
+ +

◆ ps_path_get_length()

+ +
+
+ + + + + + + + +
float ps_path_get_length (const ps_pathpath)
+
+ +

Return The length of the path.

+
Parameters
+ + +
pathPointer to an existing path object.
+
+
+
Returns
If the function succeeds, the return value is the length of the path object. If the function fails, the return value is 0.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_path_sub_close, ps_path_clear, ps_path_is_empty
+ +
+
+ +

◆ ps_path_get_vertex()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_path_cmd ps_path_get_vertex (const ps_pathpath,
unsigned int index,
ps_pointpoint 
)
+
+ +

Get a vertex from the path by index, and return the vertex command.

+
Parameters
+ + + + +
pathPointer to an existing path object.
indexThe index of the vertex.
pointPointer to a structure to receiving the vertex.
+
+
+
Returns
If the function succeeds, the return value is the command of the vertex. If the function fails, the return value is PATH_CMD_STOP.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_path_get_vertex_count, ps_path_bounding_rect, ps_path_contains, ps_path_stroke_contains
+ +
+
+ +

◆ ps_path_get_vertex_count()

+ +
+
+ + + + + + + + +
unsigned int ps_path_get_vertex_count (const ps_pathpath)
+
+ +

Return the count of vertices in the path.

+
Parameters
+ + +
pathPointer to an existing path object.
+
+
+
Returns
If the function succeeds, the return value is the vertices count in the path object. If the function fails, the return value is 0.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_path_get_vertex, ps_path_bounding_rect, ps_path_contains, ps_path_stroke_contains
+ +
+
+ +

◆ ps_path_is_empty()

+ +
+
+ + + + + + + + +
ps_bool ps_path_is_empty (const ps_pathpath)
+
+ +

Checks whether the path is empty.

+
Parameters
+ + +
pathPointer to an existing path object.
+
+
+
See also
ps_path_sub_close, ps_path_get_length, ps_path_clear
+ +
+
+ +

◆ ps_path_line_to()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_path_line_to (ps_pathpath,
const ps_pointpoint 
)
+
+ +

Add a line to the path from the current point to given point.

+
Parameters
+ + + +
pathPointer to an existing path object.
pointThe point which will be set.
+
+
+
See also
ps_path_move_to, ps_path_bezier_to, ps_path_quad_to ps_path_arc_to, ps_path_tangent_arc_to
+ +
+
+ +

◆ ps_path_move_to()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_path_move_to (ps_pathpath,
const ps_pointpoint 
)
+
+ +

Begin a new sub path, and set the current point in the path.

+
Parameters
+ + + +
pathPointer to an existing path object.
pointThe point which will be set.
+
+
+
See also
ps_path_line_to, ps_path_bezier_to, ps_path_quad_to ps_path_arc_to, ps_path_tangent_arc_to
+ +
+
+ +

◆ ps_path_quad_to()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_path_quad_to (ps_pathpath,
const ps_pointcp,
const ps_pointep 
)
+
+ +

Add a quadratic bezier spline to the path from current point to end point.

+
Parameters
+ + + + +
pathPointer to an existing path object.
cpThe control point of the curve.
epThe end point of the curve.
+
+
+
See also
ps_path_move_to, ps_path_arc_to, ps_path_bezier_to ps_path_tangent_arc_to, ps_path_line_to
+ +
+
+ +

◆ ps_path_ref()

+ +
+
+ + + + + + + + +
ps_path * ps_path_ref (ps_pathpath)
+
+ +

Increases the reference count of the path by 1.

+
Parameters
+ + +
pathPointer to an existing path object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the path object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_path_create, ps_path_create_copy, ps_path_unref
+ +
+
+ +

◆ ps_path_stroke_contains()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_bool ps_path_stroke_contains (const ps_pathpath,
const ps_pointpoint,
float width 
)
+
+ +

Check whether a point is contained in the path by stroke method.

+
Parameters
+ + + + +
pathPointer to an existing path object.
pointThe point to be checked.
widthThe line width to use, in pixels, must be greater than 0.
+
+
+
Returns
True if the point is contained, otherwise False.
+
See also
ps_path_get_vertex_count, ps_path_get_vertex, ps_path_bounding_rect, ps_path_contains
+ +
+
+ +

◆ ps_path_sub_close()

+ +
+
+ + + + + + + + +
void ps_path_sub_close (ps_pathpath)
+
+ +

Close the sub path, and begin a new one.

+
Parameters
+ + +
pathPointer to an existing path object.
+
+
+
See also
ps_path_get_length, ps_path_clear, ps_path_is_empty
+ +
+
+ +

◆ ps_path_tangent_arc_to()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_path_tangent_arc_to (ps_pathpath,
float radius,
const ps_pointtp,
const ps_pointep 
)
+
+ +

Add an arc to the path which tangent at two line.

+
Parameters
+ + + + + +
pathPointer to an existing path object.
radiusThe radius of the arc.
tpThe point which the first tangent line from current point to.
epThe point which the second tangent line from tp to.
+
+
+
See also
ps_path_move_to, ps_path_bezier_to, ps_path_quad_to ps_path_arc_to, ps_path_line_to
+ +
+
+ +

◆ ps_path_unref()

+ +
+
+ + + + + + + + +
void ps_path_unref (ps_pathpath)
+
+ +

Decrements the reference count for the path object. If the reference count on the path falls to 0, the path is freed.

+
Parameters
+ + +
pathPointer to an existing path object.
+
+
+
See also
ps_path_create, ps_path_create_copy, ps_path_ref
+ +
+
+
+ + + + diff --git a/doc/html/group__pattern.html b/doc/html/group__pattern.html new file mode 100644 index 0000000..87a3280 --- /dev/null +++ b/doc/html/group__pattern.html @@ -0,0 +1,264 @@ + + + + + + + +Picasso API: Pattern + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + +

+Typedefs

+typedef enum _ps_wrap_type ps_wrap_type
 Fill type of pattern.
 
+ + + + +

+Enumerations

enum  _ps_wrap_type { WRAP_TYPE_REPEAT, +WRAP_TYPE_REFLECT + }
 Fill type of pattern. More...
 
+ + + + + + + + + + + + + +

+Functions

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. More...
 
PEXPORT void PICAPI ps_pattern_transform (ps_pattern *pattern, const ps_matrix *matrix)
 Transform the pattern object. More...
 
PEXPORT ps_pattern *PICAPI ps_pattern_ref (ps_pattern *pattern)
 Increases the reference count of the pattern by 1. More...
 
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 0, the pattern is freed. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_wrap_type

+ +
+
+ + + + +
enum _ps_wrap_type
+
+ +

Fill type of pattern.

+ + + +
Enumerator
WRAP_TYPE_REPEAT 

Wrap repeat, the pattern is repeated.

+
WRAP_TYPE_REFLECT 

Wrap reflect the pattern is reflected.

+
+ +

Definition at line 864 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_pattern_create_image()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_pattern * ps_pattern_create_image (const ps_imageimg,
ps_wrap_type x_wrap,
ps_wrap_type y_wrap,
const ps_matrixtransform 
)
+
+ +

Create a new pattern with an existing image.

+
Parameters
+ + + + + +
imgAn existing image object which will be a tiled of pattern object.
x_wrapThe horizontal wrap type, of the required pattern.
y_wrapThe vertical wrap type, of the required pattern.
transformA matrix that represents a transform for every tiled. If no transform needed, pass NULL.
+
+
+
Returns
If the function succeeds, the return value is the pointer to a new pattern object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_pattern_ref, ps_pattern_unref
+ +
+
+ +

◆ ps_pattern_ref()

+ +
+
+ + + + + + + + +
ps_pattern * ps_pattern_ref (ps_patternpattern)
+
+ +

Increases the reference count of the pattern by 1.

+
Parameters
+ + +
patternPointer to an existing pattern object.
+
+
+
Returns
If the function succeeds, the return value is the pointer to the pattern object. If the function fails, the return value is NULL.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_pattern_create_image, ps_pattern_unref
+ +
+
+ +

◆ ps_pattern_transform()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_pattern_transform (ps_patternpattern,
const ps_matrixmatrix 
)
+
+ +

Transform the pattern object.

+
Parameters
+ + + +
patternPointer to an existing pattern object.
matrixPointer to an existing matrix object.
+
+
+
See also
ps_pattern_create_image, ps_pattern_ref, ps_pattern_unref
+ +
+
+ +

◆ ps_pattern_unref()

+ +
+
+ + + + + + + + +
void ps_pattern_unref (ps_patternpattern)
+
+ +

Decrements the reference count for the pattern object. If the reference count on the pattern falls to 0, the pattern is freed.

+
Parameters
+ + +
patternPointer to an existing pattern object.
+
+
+
See also
ps_pattern_create_image, ps_pattern_ref
+ +
+
+
+ + + + diff --git a/doc/html/group__shadow.html b/doc/html/group__shadow.html new file mode 100644 index 0000000..3431c6c --- /dev/null +++ b/doc/html/group__shadow.html @@ -0,0 +1,188 @@ + + + + + + + +Picasso API: Shadow + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + +

+Functions

PEXPORT void PICAPI ps_set_shadow (ps_context *ctx, float x_offset, float y_offset, float blur)
 Enables shadowing in a context. More...
 
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. More...
 
PEXPORT void PICAPI ps_reset_shadow (ps_context *ctx)
 Disables shadowing in a context. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_reset_shadow()

+ +
+
+ + + + + + + + +
void ps_reset_shadow (ps_contextctx)
+
+ +

Disables shadowing in a context.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_set_shadow_color, ps_set_shadow
+ +
+
+ +

◆ ps_set_shadow()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_set_shadow (ps_contextctx,
float x_offset,
float y_offset,
float blur 
)
+
+ +

Enables shadowing in a context.

+
Parameters
+ + + + + +
ctxPointer to an existing context object.
x_offsetOffset on horizontal from origin (0,0).
y_offsetOffset on vertical from origin (0,0).
blurSpecifying the amount of blur (0 ~ 1).
+
+
+
See also
ps_set_shadow_color, ps_reset_shadow
+ +
+
+ +

◆ ps_set_shadow_color()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_shadow_color (ps_contextctx,
const ps_colorcolor 
)
+
+ +

Set the color of shadow. Default is a black color with 1/3 alpha.

+
Parameters
+ + + +
ctxPointer to an existing context object.
colorSpecifies the color of the shadow.
+
+
+
See also
ps_set_shadow, ps_reset_shadow
+ +
+
+
+ + + + diff --git a/doc/html/group__state.html b/doc/html/group__state.html new file mode 100644 index 0000000..2157c86 --- /dev/null +++ b/doc/html/group__state.html @@ -0,0 +1,143 @@ + + + + + + + +Picasso API: State + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + +

+Functions

PEXPORT void PICAPI ps_save (ps_context *ctx)
 Pushes a copy of the current graphics state on to stack for context. More...
 
PEXPORT void PICAPI ps_restore (ps_context *ctx)
 Set the current graphics state to the state most recently saved. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_restore()

+ +
+
+ + + + + + + + +
void ps_restore (ps_contextctx)
+
+ +

Set the current graphics state to the state most recently saved.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_save
+ +
+
+ +

◆ ps_save()

+ +
+
+ + + + + + + + +
void ps_save (ps_contextctx)
+
+ +

Pushes a copy of the current graphics state on to stack for context.

+
Parameters
+ + +
ctxPointer to an existing context object. The graphics state saved are:
    +
  • Image filter
  • +
  • Font object
  • +
  • Gamma value
  • +
  • Alpha value
  • +
  • Blur value
  • +
  • Text stroke color
  • +
  • Text fill color
  • +
  • Compositing method
  • +
  • Transform matrix
  • +
  • Line width
  • +
  • Line cap
  • +
  • Line join
  • +
  • Line dash
  • +
  • Stroke object
  • +
  • Source object
  • +
  • Fill color
  • +
  • Fill rule
  • +
  • Clip region
  • +
  • Shadow parameters
  • +
+
+
+
+
See also
ps_restore
+ +
+
+
+ + + + diff --git a/doc/html/group__stroke.html b/doc/html/group__stroke.html new file mode 100644 index 0000000..9befeaa --- /dev/null +++ b/doc/html/group__stroke.html @@ -0,0 +1,690 @@ + + + + + + + +Picasso API: Stroke + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + +

+Typedefs

+typedef enum _ps_line_cap ps_line_cap
 Styles for rendering the endpoint of a stroked line.
 
+typedef enum _ps_line_join ps_line_join
 Junction types for stroked lines.
 
+typedef enum _ps_line_inner_join ps_line_inner_join
 Inner junction types for stroked lines.
 
+ + + + + + + + + + +

+Enumerations

enum  _ps_line_cap { LINE_CAP_BUTT, +LINE_CAP_ROUND, +LINE_CAP_SQUARE + }
 Styles for rendering the endpoint of a stroked line. More...
 
enum  _ps_line_join {
+  LINE_JOIN_MITER, +LINE_JOIN_MITER_REVERT, +LINE_JOIN_MITER_ROUND, +LINE_JOIN_ROUND, +
+  LINE_JOIN_BEVEL +
+ }
 Junction types for stroked lines. More...
 
enum  _ps_line_inner_join { LINE_INNER_MITER, +LINE_INNER_BEVEL, +LINE_INNER_JAG, +LINE_INNER_ROUND + }
 Inner junction types for stroked lines. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

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. More...
 
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. More...
 
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. More...
 
PEXPORT float PICAPI ps_set_line_width (ps_context *ctx, float width)
 Set the line width for a graphics context. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
PEXPORT void PICAPI ps_reset_line_dash (ps_context *ctx)
 Clear the dashs from the context, and set to solid. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_line_cap

+ +
+
+ + + + +
enum _ps_line_cap
+
+ +

Styles for rendering the endpoint of a stroked line.

+ + + + +
Enumerator
LINE_CAP_BUTT 

A line with a squared-off end. The line to extend only to the endpoint.(Default)

+
LINE_CAP_ROUND 

A line with a rounded end. The line to extend beyond the endpoint.

+
LINE_CAP_SQUARE 

A line with a squared-off end. The line to extend beyond the endpoint.

+
+ +

Definition at line 1231 of file picasso.h.

+ +
+
+ +

◆ _ps_line_inner_join

+ +
+
+ + + + +
enum _ps_line_inner_join
+
+ +

Inner junction types for stroked lines.

+ + + + + +
Enumerator
LINE_INNER_MITER 

A inner join with a sharp corner.(Default)

+
LINE_INNER_BEVEL 

A inner join with a squared-off end.

+
LINE_INNER_JAG 

A inner join with a jag end.

+
LINE_INNER_ROUND 

A inner join with a rounded end.

+
+ +

Definition at line 1299 of file picasso.h.

+ +
+
+ +

◆ _ps_line_join

+ +
+
+ + + + +
enum _ps_line_join
+
+ +

Junction types for stroked lines.

+ + + + + + +
Enumerator
LINE_JOIN_MITER 

A join with a sharp corner.(Default)

+
LINE_JOIN_MITER_REVERT 

A join with a sharp corner revert.

+
LINE_JOIN_MITER_ROUND 

A join with a miter rounded end.

+
LINE_JOIN_ROUND 

A join with a rounded end.

+
LINE_JOIN_BEVEL 

A join with a squared-off end.

+
+ +

Definition at line 1261 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_reset_line_dash()

+ +
+
+ + + + + + + + +
void ps_reset_line_dash (ps_contextctx)
+
+ +

Clear the dashs from the context, and set to solid.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_line_width, ps_set_miter_limit, ps_set_stroke_color, ps_set_line_dash, ps_set_line_inner_join
+ +
+
+ +

◆ ps_set_line_cap()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_line_cap (ps_contextctx,
ps_line_cap line_cap 
)
+
+ +

Set the style for the endpoint of lines in a graphics context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
line_capThe cap style of the lines.
+
+
+
See also
ps_set_line_join, ps_set_line_width, ps_set_miter_limit, ps_set_stroke_color, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join
+ +
+
+ +

◆ ps_set_line_dash()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_set_line_dash (ps_contextctx,
float start,
const float * dashes,
unsigned int num_dashes 
)
+
+ +

Set the pattern for dashed lines in the context.

+
Parameters
+ + + + + +
ctxPointer to an existing context object.
startA value that specifies how far into the dash pattern the line start.
dashesAn array of values that specify the length of the painted segments and unpainted segments.
num_dashesThe number of elements in the array.
+
+
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_line_width, ps_set_miter_limit, ps_set_stroke_color, ps_reset_line_dash, ps_set_line_inner_join
+ +
+
+ +

◆ ps_set_line_inner_join()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_line_inner_join (ps_contextctx,
ps_line_inner_join line_inner_join 
)
+
+ +

Set the style for the inner joins of connected lines in a graphics context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
line_inner_joinThe inner join style of the lines.
+
+
+
See also
ps_set_line_cap, ps_set_line_width, ps_set_miter_limit, ps_set_stroke_color, ps_set_line_dash, ps_reset_line_dash, ps_set_line_join
+ +
+
+ +

◆ ps_set_line_join()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_line_join (ps_contextctx,
ps_line_join line_join 
)
+
+ +

Set the style for the joins of connected lines in a graphics context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
line_joinThe join style of the lines.
+
+
+
See also
ps_set_line_cap, ps_set_line_width, ps_set_miter_limit, ps_set_stroke_color, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join
+ +
+
+ +

◆ ps_set_line_width()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float ps_set_line_width (ps_contextctx,
float width 
)
+
+ +

Set the line width for a graphics context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
widthThe line width to use, in pixels, must be greater than 0. Default value is 1.
+
+
+
Returns
If the function succeeds, the return value is the old width. If the function fails, the return value is 0.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_miter_limit, ps_set_stroke_color, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join
+ +
+
+ +

◆ ps_set_miter_limit()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float ps_set_miter_limit (ps_contextctx,
float limit 
)
+
+ +

Set the miter limit for the joins of connected lines in a graphics context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
limitThe miter limit to use, must be greater than 0. Default value is 4.
+
+
+
Returns
If the function succeeds, the return value is the old miter limit. If the function fails, the return value is 0.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_line_width, ps_set_stroke_color, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join
+ +
+
+ +

◆ ps_set_stroke_canvas()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_stroke_canvas (ps_contextctx,
const ps_canvascanvas 
)
+
+ +

Set a canvas to the context, it is used to stroke a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
canvasThe canvas to be set.
+
+
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_line_width, ps_set_miter_limit, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join, ps_set_stroke_color ps_set_stroke_image, ps_set_stroke_pattern, ps_set_stroke_gradient
+ +
+
+ +

◆ ps_set_stroke_color()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_stroke_color (ps_contextctx,
const ps_colorcolor 
)
+
+ +

Set a color to the context, it is used to stroke a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
colorThe color to be set.
+
+
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_line_width, ps_set_miter_limit, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join, ps_set_stroke_image ps_set_stroke_pattern, ps_set_stroke_gradient, ps_set_stroke_canvas
+ +
+
+ +

◆ ps_set_stroke_gradient()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_stroke_gradient (ps_contextctx,
const ps_gradientgradient 
)
+
+ +

Set a gradient to the context, it is used to stroke a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
gradientThe gradient to be set.
+
+
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_line_width, ps_set_miter_limit, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join, ps_set_stroke_color ps_set_stroke_image, ps_set_stroke_pattern, ps_set_stroke_canvas
+ +
+
+ +

◆ ps_set_stroke_image()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_stroke_image (ps_contextctx,
const ps_imageimage 
)
+
+ +

Set a image to the context, it is used to stroke a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
imageThe image to be set.
+
+
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_line_width, ps_set_miter_limit, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join, ps_set_stroke_color ps_set_stroke_pattern, ps_set_stroke_gradient, ps_set_stroke_canvas
+ +
+
+ +

◆ ps_set_stroke_pattern()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_stroke_pattern (ps_contextctx,
const ps_patternpattern 
)
+
+ +

Set a pattern to the context, it is used to stroke a graphic object.

+
Parameters
+ + + +
ctxPointer to an existing context object.
patternThe pattern to be set.
+
+
+
See also
ps_set_line_cap, ps_set_line_join, ps_set_line_width, ps_set_miter_limit, ps_set_line_dash, ps_reset_line_dash, ps_set_line_inner_join, ps_set_stroke_color ps_set_stroke_image, ps_set_stroke_gradient, ps_set_stroke_canvas
+ +
+
+
+ + + + diff --git a/doc/html/group__text.html b/doc/html/group__text.html new file mode 100644 index 0000000..2b5d809 --- /dev/null +++ b/doc/html/group__text.html @@ -0,0 +1,928 @@ + + + + + + + +Picasso API: Text + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + +

+Typedefs

+typedef enum _ps_text_type ps_text_type
 Text rendering type.
 
+typedef enum _ps_draw_text_type ps_draw_text_type
 Draw mode for rending text.
 
+typedef enum _ps_text_align ps_text_align
 Text align mode for drawing text.
 
+ + + + + + + + + + +

+Enumerations

enum  _ps_text_type { TEXT_TYPE_SMOOTH, +TEXT_TYPE_MONO, +TEXT_TYPE_STROKE + }
 Text rendering type. More...
 
enum  _ps_draw_text_type { DRAW_TEXT_FILL, +DRAW_TEXT_STROKE, +DRAW_TEXT_BOTH + }
 Draw mode for rending text. More...
 
enum  _ps_text_align {
+  TEXT_ALIGN_CENTER = 0, +TEXT_ALIGN_TOP = 1, +TEXT_ALIGN_BOTTOM = 2, +TEXT_ALIGN_LEFT = 4, +
+  TEXT_ALIGN_RIGHT = 8 +
+ }
 Text align mode for drawing text. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

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. More...
 
PEXPORT void PICAPI ps_set_text_color (ps_context *ctx, const ps_color *color)
 Set the text fill color for the graphic context. More...
 
PEXPORT void PICAPI ps_set_text_stroke_color (ps_context *ctx, const ps_color *color)
 Set the text stroke color for the graphic context. More...
 
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 – saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. More...
 
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 restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. More...
 
PEXPORT void PICAPI ps_set_text_render_type (ps_context *ctx, ps_text_type type)
 Set rendering type for text. More...
 
PEXPORT void PICAPI ps_set_text_antialias (ps_context *ctx, ps_bool antialias)
 Set whether the font allowed be anti-aliasing. More...
 
PEXPORT void PICAPI ps_set_text_kerning (ps_context *ctx, ps_bool kerning)
 Set whether the font auto kerning is allowed. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
PEXPORT ps_bool PICAPI ps_glyph_get_extent (const ps_glyph *glyph, ps_size *rsize)
 Get extent for a glyph object. More...
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ _ps_draw_text_type

+ +
+
+ + + + +
enum _ps_draw_text_type
+
+ +

Draw mode for rending text.

+ + + + +
Enumerator
DRAW_TEXT_FILL 

Perform a fill operation on the text.

+
DRAW_TEXT_STROKE 

Perform a stroke operation on the text.

+
DRAW_TEXT_BOTH 

Perform fill,then stroke operation on the text.

+
+ +

Definition at line 2302 of file picasso.h.

+ +
+
+ +

◆ _ps_text_align

+ +
+
+ + + + +
enum _ps_text_align
+
+ +

Text align mode for drawing text.

+ + + + + + +
Enumerator
TEXT_ALIGN_CENTER 

Centers text horizontally in the rectangle.

+
TEXT_ALIGN_TOP 

Justifies the text to the top of the rectangle.

+
TEXT_ALIGN_BOTTOM 

Justifies the text to the bottom of the rectangle.

+
TEXT_ALIGN_LEFT 

Aligns text to left.

+
TEXT_ALIGN_RIGHT 

Aligns text to right.

+
+ +

Definition at line 2320 of file picasso.h.

+ +
+
+ +

◆ _ps_text_type

+ +
+
+ + + + +
enum _ps_text_type
+
+ +

Text rendering type.

+ + + + +
Enumerator
TEXT_TYPE_SMOOTH 

Smooth rendering.

+
TEXT_TYPE_MONO 

Mono rendering.

+
TEXT_TYPE_STROKE 

OutLine rendering.

+
+ +

Definition at line 2150 of file picasso.h.

+ +
+
+

Function Documentation

+ +

◆ ps_draw_text()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_draw_text (ps_contextctx,
const ps_rectarea,
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.

+
Parameters
+ + + + + + + +
ctxPointer to an existing context object.
areaThe rectangle area which text to be drawn.
textThe unicode text string to be draw.
lengthThe length of the text string.
typeThe rending type of text.
alignThe text align mode.
+
+
+
See also
ps_text_out_length, ps_wide_text_out_length
+ +
+
+ +

◆ ps_get_glyph()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_bool ps_get_glyph (ps_contextctx,
int ch,
ps_glyphglyph 
)
+
+ +

Get the glyph from a given character, using font object which is selected in graphic context.

+
Parameters
+ + + + +
ctxPointer to an existing context object.
chThe character value.
glyphPointer to a structure to receiving the glyph.
+
+
+
Returns
True if is success, otherwise False.
+
See also
ps_show_glyphs, ps_get_path_from_glyph
+ +
+
+ +

◆ ps_get_path_from_glyph()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ps_bool ps_get_path_from_glyph (ps_contextctx,
const ps_glyphglyph,
ps_pathpath 
)
+
+ +

Get the path from a given glyph object.

+
Parameters
+ + + + +
ctxPointer to an existing context object.
glyphThe glyph object.
pathPointer to a structure to receiving the path.
+
+
+
Returns
True if is success, otherwise False.
+
See also
ps_show_glyphs
+ +
+
+ +

◆ ps_get_text_extent()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ps_bool ps_get_text_extent (ps_contextctx,
const void * text,
unsigned int length,
ps_sizersize 
)
+
+ +

Get extent for text using current font which selected to graphic context.

+
Parameters
+ + + + + +
ctxPointer to an existing context object.
textText which being tested. It can be latin-1 or unicode encoding.
lengthLength of the text.
rsizePointer to a buffer to receiving the size.
+
+
+
Returns
True if is success, otherwise False.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_glyph_get_extent
+ +
+
+ +

◆ ps_glyph_get_extent()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_bool ps_glyph_get_extent (const ps_glyphglyph,
ps_sizersize 
)
+
+ +

Get extent for a glyph object.

+
Parameters
+ + + +
glyphPointer to an existing glyph object.
rsizePointer to a buffer to receiving the size.
+
+
+
Returns
True if is success, otherwise False.
+
Note
To get extended error information, call ps_last_status.
+
See also
ps_get_text_extent
+ +
+
+ +

◆ ps_set_text_antialias()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_text_antialias (ps_contextctx,
ps_bool antialias 
)
+
+ +

Set whether the font allowed be anti-aliasing.

+
Parameters
+ + + +
ctxPointer to an existing context object.
antialiasBoolean value whether anti-aliasing is allowed. (True default)
+
+
+
See also
ps_set_text_matrix, ps_set_text_color, ps_set_text_stroke_color, ps_set_text_render_type, ps_text_transform, ps_set_text_kerning
+ +
+
+ +

◆ ps_set_text_color()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_text_color (ps_contextctx,
const ps_colorcolor 
)
+
+ +

Set the text fill color for the graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
colorThe text fill color.
+
+
+
See also
ps_transform, ps_set_text_matrix, ps_set_text_antialias, ps_set_text_stroke_color, ps_set_text_render_type, ps_set_text_kerning
+ +
+
+ +

◆ ps_set_text_kerning()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_text_kerning (ps_contextctx,
ps_bool kerning 
)
+
+ +

Set whether the font auto kerning is allowed.

+
Parameters
+ + + +
ctxPointer to an existing context object.
kerningBoolean value whether auto kerning is allowed. (True default)
+
+
+
See also
ps_set_text_matrix, ps_set_text_color, ps_set_text_stroke_color, ps_set_text_render_type, ps_text_transform, ps_set_text_antialias
+ +
+
+ +

◆ ps_set_text_matrix()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_text_matrix (ps_contextctx,
const ps_matrixmatrix 
)
+
+ +

Set text matrix for the graphic context. The text matrix is not a part of graphic state – saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
matrixPointer to an existing matrix object.
+
+
+
See also
ps_text_transform, ps_set_text_antialias, ps_set_text_color, ps_set_text_stroke_color, ps_set_text_render_type, ps_set_text_kerning
+ +
+
+ +

◆ ps_set_text_render_type()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_text_render_type (ps_contextctx,
ps_text_type type 
)
+
+ +

Set rendering type for text.

+
Parameters
+ + + +
ctxPointer to an existing context object.
typeRendering type for the text.
+
+
+
See also
ps_set_text_matrix, ps_set_text_color, ps_set_text_stroke_color, ps_set_text_antialias, ps_text_transform, ps_set_text_kerning
+ +
+
+ +

◆ ps_set_text_stroke_color()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_text_stroke_color (ps_contextctx,
const ps_colorcolor 
)
+
+ +

Set the text stroke color for the graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
colorThe text stroke color.
+
+
+
See also
ps_set_text_color, ps_set_text_matrix, ps_set_text_antialias, ps_text_transform, ps_set_text_render_type, ps_set_text_kerning
+ +
+
+ +

◆ ps_show_glyphs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_show_glyphs (ps_contextctx,
float x,
float y,
ps_glyphglyphs,
unsigned int length 
)
+
+ +

Draw an array of glyphs at location in user space.

+
Parameters
+ + + + + + +
ctxPointer to an existing context object.
xThe X-coordinate at which to draw the glyphs.
yThe Y-coordinate at which to draw the glyphs.
glyphsThe array of glyphs.
lengthThe length of array.
+
+
+
See also
ps_get_path_from_glyph
+ +
+
+ +

◆ ps_text_out_length()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_text_out_length (ps_contextctx,
float x,
float y,
const char * text,
unsigned int length 
)
+
+ +

Draw single byte characters (latin-1) at location in user space.

+
Parameters
+ + + + + + +
ctxPointer to an existing context object.
xThe X-coordinate at which to draw the text.
yThe Y-coordinate at which to draw the text.
textThe text string to be draw.
lengthThe length of the text string.
+
+
+
See also
ps_wide_text_out_length, ps_draw_text
+ +
+
+ +

◆ ps_text_transform()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_text_transform (ps_contextctx,
const ps_matrixmatrix 
)
+
+ +

Transform text matrix for the graphic context. The text matrix is not a part of graphic state – saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
matrixPointer to an existing matrix object.
+
+
+
See also
ps_set_text_matrix, ps_set_text_antialias, ps_set_text_color, ps_set_text_stroke_color, ps_set_text_render_type, ps_set_text_kerning
+ +
+
+ +

◆ ps_wide_text_out_length()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ps_wide_text_out_length (ps_contextctx,
float x,
float y,
const ps_uchar16text,
unsigned int length 
)
+
+ +

Draw unicode characters (ucs-2) at location in user space.

+
Parameters
+ + + + + + +
ctxPointer to an existing context object.
xThe X-coordinate at which to draw the text.
yThe Y-coordinate at which to draw the text.
textThe unicode text string to be draw.
lengthThe length of the text string.
+
+
+
See also
ps_text_out_length, ps_draw_text
+ +
+
+
+ + + + diff --git a/doc/html/group__transform.html b/doc/html/group__transform.html new file mode 100644 index 0000000..bd7bd5c --- /dev/null +++ b/doc/html/group__transform.html @@ -0,0 +1,483 @@ + + + + + + + +Picasso API: Transform + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

PEXPORT void PICAPI ps_translate (ps_context *ctx, float tx, float ty)
 Changes the origin of the user coordinate system in graphic context. More...
 
PEXPORT void PICAPI ps_scale (ps_context *ctx, float sx, float sy)
 Changes the scale of the user coordinate system in graphic context. More...
 
PEXPORT void PICAPI ps_shear (ps_context *ctx, float shx, float shy)
 Changes the shear of the user coordinate system in graphic context. More...
 
PEXPORT void PICAPI ps_rotate (ps_context *ctx, float angle)
 Rotates the user coordinate system in graphic context. More...
 
PEXPORT void PICAPI ps_identity (ps_context *ctx)
 Reset the current transformation matrix to identity matrix. More...
 
PEXPORT void PICAPI ps_transform (ps_context *ctx, const ps_matrix *matrix)
 Transforms the user coordinate system in graphic context using a specified matrix. More...
 
PEXPORT void PICAPI ps_set_matrix (ps_context *ctx, const ps_matrix *matrix)
 Modifies the current transformation matrix to the given matrix. More...
 
PEXPORT ps_bool PICAPI ps_get_matrix (ps_context *ctx, ps_matrix *matrix)
 Get the current transformation matrix from graphic context. More...
 
PEXPORT void PICAPI ps_world_to_viewport (ps_context *ctx, ps_point *point)
 Transform a coordinate from device space to user space. More...
 
PEXPORT void PICAPI ps_viewport_to_world (ps_context *ctx, ps_point *point)
 Transform a coordinate from user space to device space. More...
 
+

Detailed Description

+

Function Documentation

+ +

◆ ps_get_matrix()

+ +
+
+ + + + + + + + + + + + + + + + + + +
ps_bool ps_get_matrix (ps_contextctx,
ps_matrixmatrix 
)
+
+ +

Get the current transformation matrix from graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
matrixPointer to a matrix object to receiving the current transformation.
+
+
+
Returns
True if is success, otherwise False.
+
See also
ps_set_matrix
+ +
+
+ +

◆ ps_identity()

+ +
+
+ + + + + + + + +
void ps_identity (ps_contextctx)
+
+ +

Reset the current transformation matrix to identity matrix.

+
Parameters
+ + +
ctxPointer to an existing context object.
+
+
+
See also
ps_translate, ps_scale, ps_shear, ps_rotate, ps_transform
+ +
+
+ +

◆ ps_rotate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_rotate (ps_contextctx,
float angle 
)
+
+ +

Rotates the user coordinate system in graphic context.

+
Parameters
+ + + +
ctxPointer to an existing context object.
angleThe angle, in radians, which to rotate the specified context.
+
+
+
See also
ps_translate, ps_scale, ps_shear, ps_identity, ps_transform
+ +
+
+ +

◆ ps_scale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_scale (ps_contextctx,
float sx,
float sy 
)
+
+ +

Changes the scale of the user coordinate system in graphic context.

+
Parameters
+ + + + +
ctxPointer to an existing context object.
sxThe scale factor for the X dimension.
syThe scale factor for the Y dimension.
+
+
+
See also
ps_translate, ps_shear, ps_rotate, ps_identity, ps_transform
+ +
+
+ +

◆ ps_set_matrix()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_set_matrix (ps_contextctx,
const ps_matrixmatrix 
)
+
+ +

Modifies the current transformation matrix to the given matrix.

+
Parameters
+ + + +
ctxPointer to an existing context object.
matrixThe transformation matrix to be set.
+
+
+
See also
ps_get_matrix
+ +
+
+ +

◆ ps_shear()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_shear (ps_contextctx,
float shx,
float shy 
)
+
+ +

Changes the shear of the user coordinate system in graphic context.

+
Parameters
+ + + + +
ctxPointer to an existing context object.
shxThe shear factor for the horizontal.
shyThe shear factor for the vertical.
+
+
+
See also
ps_translate, ps_scale, ps_rotate, ps_identity, ps_transform
+ +
+
+ +

◆ ps_transform()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_transform (ps_contextctx,
const ps_matrixmatrix 
)
+
+ +

Transforms the user coordinate system in graphic context using a specified matrix.

+
Parameters
+ + + +
ctxPointer to an existing context object.
matrixThe matrix to apply to the specified context's current transformation matrix.
+
+
+
See also
ps_translate, ps_scale, ps_shear, ps_rotate, ps_identity
+ +
+
+ +

◆ ps_translate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ps_translate (ps_contextctx,
float tx,
float ty 
)
+
+ +

Changes the origin of the user coordinate system in graphic context.

+
Parameters
+ + + + +
ctxPointer to an existing context object.
txThe amount, in pixels, which to translate in x direction.
tyThe amount, in pixels, which to translate in y direction.
+
+
+
See also
ps_scale, ps_shear, ps_rotate, ps_identity, ps_transform
+ +
+
+ +

◆ ps_viewport_to_world()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_viewport_to_world (ps_contextctx,
ps_pointpoint 
)
+
+ +

Transform a coordinate from user space to device space.

+
Parameters
+ + + +
ctxPointer to an existing context object.
pointThe point which to be transformed.
+
+
+
See also
ps_world_to_viewport
+ +
+
+ +

◆ ps_world_to_viewport()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ps_world_to_viewport (ps_contextctx,
ps_pointpoint 
)
+
+ +

Transform a coordinate from device space to user space.

+
Parameters
+ + + +
ctxPointer to an existing context object.
pointThe point which to be transformed.
+
+
+
See also
ps_viewport_to_world
+ +
+
+
+ + + + diff --git a/doc/html/group__types.html b/doc/html/group__types.html new file mode 100644 index 0000000..2660979 --- /dev/null +++ b/doc/html/group__types.html @@ -0,0 +1,439 @@ + + + + + + + +Picasso API: XImage Object Types + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+ +
+
XImage Object Types
+
+
+ + + + + + + + + + + + + + +

+Data Structures

struct  _psx_image_frame
 A frame image data. More...
 
struct  _psx_image
 A image object. More...
 
struct  _psx_image_header
 Image reader header define. More...
 
struct  _psx_image_operator
 The image operator define. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define IMG_OBJ(image)   IMG_OBJ_AT_INDEX(image, 0)
 Get first ps_image obj. More...
 
#define IMG_DATA(image)   IMG_DATA_AT_INDEX(image, 0)
 Get first image frame data. More...
 
#define IMG_DATA_SIZE(image)   IMG_DATA_SIZE_AT_INDEX(image, 0)
 Get first image frame data size. More...
 
#define IMG_OBJ_AT_INDEX(image, idx)   (image->frames[idx].img)
 Get ps_image obj at index. More...
 
#define IMG_DATA_AT_INDEX(image, idx)   (image->frames[idx].data)
 Get image frame data at index. More...
 
#define IMG_DATA_SIZE_AT_INDEX(img, idx)   (img->frames[idx].size)
 Get image frame data size at index. More...
 
#define IMG_DURATION_AT_INDEX(img, idx)   (img->frames[idx].duration)
 Get image frame duration at index. More...
 
+ + + + + + + + + + + + + + + + +

+Typedefs

+typedef struct _psx_image_frame psx_image_frame
 A frame image data.
 
+typedef struct _psx_image psx_image
 A image object.
 
+typedef struct _psx_image_header psx_image_header
 Image reader header define.
 
typedef struct _psx_image_operator psx_image_operator
 The image operator define. More...
 
typedef enum _psx_priority_level psx_priority_level
 Priority level for image_operator. More...
 
+ + + + + + + +

+Enumerations

enum  {
+  S_OK = 0, +S_BAD_PARAMS = 1, +S_NOT_SUPPORT = 2, +S_OUT_OF_MEMORY = 3, +
+  S_INIT_FAILURE = 4, +S_FAILURE = 5 +
+ }
 Status code return by call APIs. More...
 
enum  _psx_priority_level { PRIORITY_EXTENTED = -1, +PRIORITY_DEFAULT = 0, +PRIORITY_MASTER = 1 + }
 Priority level for image_operator. More...
 
+

Detailed Description

+

Macro Definition Documentation

+ +

◆ IMG_DATA

+ +
+
+ + + + + + + + +
#define IMG_DATA( image)   IMG_DATA_AT_INDEX(image, 0)
+
+ +

Get first image frame data.

+
See also
IMG_DATA_AT_INDEX
+ +

Definition at line 84 of file psx_image.h.

+ +
+
+ +

◆ IMG_DATA_AT_INDEX

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define IMG_DATA_AT_INDEX( image,
 idx 
)   (image->frames[idx].data)
+
+ +

Get image frame data at index.

+
See also
IMG_DATA
+ +

Definition at line 105 of file psx_image.h.

+ +
+
+ +

◆ IMG_DATA_SIZE

+ +
+
+ + + + + + + + +
#define IMG_DATA_SIZE( image)   IMG_DATA_SIZE_AT_INDEX(image, 0)
+
+ +

Get first image frame data size.

+
See also
IMG_DATA_SIZE_AT_INDEX
+ +

Definition at line 91 of file psx_image.h.

+ +
+
+ +

◆ IMG_DATA_SIZE_AT_INDEX

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define IMG_DATA_SIZE_AT_INDEX( img,
 idx 
)   (img->frames[idx].size)
+
+ +

Get image frame data size at index.

+
See also
IMG_DATA_SIZE
+ +

Definition at line 112 of file psx_image.h.

+ +
+
+ +

◆ IMG_DURATION_AT_INDEX

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define IMG_DURATION_AT_INDEX( img,
 idx 
)   (img->frames[idx].duration)
+
+ +

Get image frame duration at index.

+
See also
IMG_DATA_SIZE, IMG_DATA
+ +

Definition at line 119 of file psx_image.h.

+ +
+
+ +

◆ IMG_OBJ

+ +
+
+ + + + + + + + +
#define IMG_OBJ( image)   IMG_OBJ_AT_INDEX(image, 0)
+
+ +

Get first ps_image obj.

+
See also
IMG_OBJ_AT_INDEX
+ +

Definition at line 77 of file psx_image.h.

+ +
+
+ +

◆ IMG_OBJ_AT_INDEX

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define IMG_OBJ_AT_INDEX( image,
 idx 
)   (image->frames[idx].img)
+
+ +

Get ps_image obj at index.

+
See also
IMG_OBJ
+ +

Definition at line 98 of file psx_image.h.

+ +
+
+

Typedef Documentation

+ +

◆ psx_image_operator

+ +
+
+ + + + +
typedef struct _psx_image_operator psx_image_operator
+
+ +

The image operator define.

+
See also
psx_image_register_operator psx_image_unregister_operator
+ +
+
+ +

◆ psx_priority_level

+ +
+
+ + + + +
typedef enum _psx_priority_level psx_priority_level
+
+ +

Priority level for image_operator.

+
See also
psx_image_register_operator
+ +
+
+

Enumeration Type Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + +
anonymous enum
+
+ +

Status code return by call APIs.

+ + + + + + + +
Enumerator
S_OK 

Successful no errors.

+
S_BAD_PARAMS 

Invalid params input.

+
S_NOT_SUPPORT 

Not support format or decoder module not found.

+
S_OUT_OF_MEMORY 

Not enough memory.

+
S_INIT_FAILURE 

Not initialize system.

+
S_FAILURE 

Operation failed by internal errors.

+
+ +

Definition at line 124 of file psx_image.h.

+ +
+
+ +

◆ _psx_priority_level

+ +
+
+ + + + +
enum _psx_priority_level
+
+ +

Priority level for image_operator.

+
See also
psx_image_register_operator
+ + + + +
Enumerator
PRIORITY_EXTENTED 

Low level operator.

+
PRIORITY_DEFAULT 

Default level operator.

+
PRIORITY_MASTER 

High level operator.

+
+ +

Definition at line 89 of file psx_image_plugin.h.

+ +
+
+
+ + + + diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 0000000..f0edadf --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,54 @@ + + + + + + + +Picasso API: Main Page + + + + + + +
+
+ + + + + + +
+
Picasso API +  2.8 +
+
+
+ + + + + + +
+
+
+
Picasso API Documentation
+
+
+
+ + + + diff --git a/doc/html/jquery.js b/doc/html/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/doc/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/html/menu.js b/doc/html/menu.js new file mode 100644 index 0000000..433c15b --- /dev/null +++ b/doc/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/html/menudata.js b/doc/html/menudata.js new file mode 100644 index 0000000..47127f9 --- /dev/null +++ b/doc/html/menudata.js @@ -0,0 +1,97 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"n",url:"functions.html#index_n"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"u",url:"functions.html#index_u"}, +{text:"w",url:"functions.html#index_w"}, +{text:"x",url:"functions.html#index_x"}, +{text:"y",url:"functions.html#index_y"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"g",url:"functions_vars.html#index_g"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"w",url:"functions_vars.html#index_w"}, +{text:"x",url:"functions_vars.html#index_x"}, +{text:"y",url:"functions_vars.html#index_y"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"_",url:"globals.html#index__5F"}, +{text:"c",url:"globals_c.html#index_c"}, +{text:"d",url:"globals_d.html#index_d"}, +{text:"f",url:"globals_f.html#index_f"}, +{text:"g",url:"globals_g.html#index_g"}, +{text:"i",url:"globals_i.html#index_i"}, +{text:"l",url:"globals_l.html#index_l"}, +{text:"m",url:"globals_m.html#index_m"}, +{text:"p",url:"globals_p.html#index_p"}, +{text:"s",url:"globals_s.html#index_s"}, +{text:"t",url:"globals_t.html#index_t"}, +{text:"w",url:"globals_w.html#index_w"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html",children:[ +{text:"i",url:"globals_type.html#index_i"}, +{text:"p",url:"globals_type.html#index_p"}]}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html",children:[ +{text:"c",url:"globals_eval.html#index_c"}, +{text:"d",url:"globals_eval.html#index_d"}, +{text:"f",url:"globals_eval.html#index_f"}, +{text:"g",url:"globals_eval.html#index_g"}, +{text:"l",url:"globals_eval.html#index_l"}, +{text:"p",url:"globals_eval.html#index_p"}, +{text:"s",url:"globals_eval.html#index_s"}, +{text:"t",url:"globals_eval.html#index_t"}, +{text:"w",url:"globals_eval.html#index_w"}]}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/doc/html/modules.html b/doc/html/modules.html new file mode 100644 index 0000000..617b176 --- /dev/null +++ b/doc/html/modules.html @@ -0,0 +1,88 @@ + + + + + + + +Picasso API: Modules + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    +
    +
    Modules
    +
    + + + + + diff --git a/doc/html/nav_f.png b/doc/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/html/nav_g.png b/doc/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +Picasso API: include/picasso.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    picasso.h File Reference
    +
    +
    +
    #include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  _ps_glyph
     A character glyph of a font. More...
     
    struct  _ps_size
     A structure that contains width and height values. More...
     
    struct  _ps_rect
     A structure that contains location and dimensions of a rectangle. More...
     
    struct  _ps_point
     A structure that contains a point in a two-dimensional coordinate system. More...
     
    struct  _ps_color
     A structure that contains rgba values for a color. More...
     
    struct  _ps_font_info
     A structure that contains font information. More...
     
    + + + + + + + +

    +Macros

    #define True   1
     define true value More...
     
    #define False   0
     define false value More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef int ps_bool
     boolean type More...
     
    typedef uint16_t ps_uchar16
     16 bit unsigned unicode character More...
     
    typedef int16_t ps_schar16
     16 bit signed unicode character More...
     
    typedef uint8_t ps_byte
     byte data type More...
     
    typedef struct _ps_context ps_context
     An opaque type represents a Picasso drawing environment. More...
     
    typedef struct _ps_canvas ps_canvas
     An opaque type represents a pixel buffer. More...
     
    typedef struct _ps_image ps_image
     An opaque type represents an image. More...
     
    typedef struct _ps_pattern ps_pattern
     An opaque type represents a pattern. More...
     
    typedef struct _ps_gradient ps_gradient
     An opaque type represents a gradient. More...
     
    typedef struct _ps_matrix ps_matrix
     An opaque type represents a transform matrix. More...
     
    typedef struct _ps_path ps_path
     An opaque type represents a graphic path. More...
     
    typedef struct _ps_mask ps_mask
     An opaque type represents an alpha mask. More...
     
    typedef struct _ps_font ps_font
     An opaque type represents a font. More...
     
    +typedef struct _ps_glyph ps_glyph
     A character glyph of a font.
     
    +typedef struct _ps_size ps_size
     A structure that contains width and height values.
     
    +typedef struct _ps_rect ps_rect
     A structure that contains location and dimensions of a rectangle.
     
    +typedef struct _ps_point ps_point
     A structure that contains a point in a two-dimensional coordinate system.
     
    +typedef struct _ps_color ps_color
     A structure that contains rgba values for a color.
     
    +typedef enum _ps_status ps_status
     Status code return by call ps_last_status function.
     
    +typedef enum _ps_color_format ps_color_format
     Pixel formats of canvas or image.
     
    +typedef enum _ps_wrap_type ps_wrap_type
     Fill type of pattern.
     
    +typedef enum _ps_gradient_spread ps_gradient_spread
     Fill type of outside the gradient area.
     
    +typedef enum _ps_line_cap ps_line_cap
     Styles for rendering the endpoint of a stroked line.
     
    +typedef enum _ps_line_join ps_line_join
     Junction types for stroked lines.
     
    +typedef enum _ps_line_inner_join ps_line_inner_join
     Inner junction types for stroked lines.
     
    +typedef enum _ps_composite ps_composite
     Compositing operations for graphics context.
     
    +typedef enum _ps_filter ps_filter
     Graphics quality for rendering an image.
     
    +typedef enum _ps_fill_rule ps_fill_rule
     Fill rules for graphics.
     
    +typedef enum _ps_charset ps_charset
     Charset for a font.
     
    +typedef enum _ps_font_weight ps_font_weight
     Font weight.
     
    +typedef struct _ps_font_info ps_font_info
     A structure that contains font information.
     
    +typedef enum _ps_text_type ps_text_type
     Text rendering type.
     
    +typedef enum _ps_draw_text_type ps_draw_text_type
     Draw mode for rending text.
     
    +typedef enum _ps_text_align ps_text_align
     Text align mode for drawing text.
     
    +typedef enum _ps_path_cmd ps_path_cmd
     Path command for vertices.
     
    +typedef enum _ps_path_op ps_path_operation
     Path clipping operations.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Enumerations

    enum  _ps_status {
    +  STATUS_SUCCEED, +STATUS_OUT_OF_MEMORY, +STATUS_INVALID_ARGUMENT, +STATUS_NOT_SUPPORT, +
    +  STATUS_DEVICE_ERROR, +STATUS_MISMATCHING_FORMAT, +STATUS_UNKNOWN_ERROR +
    + }
     Status code return by call ps_last_status function. More...
     
    enum  _ps_color_format {
    +  COLOR_FORMAT_RGBA, +COLOR_FORMAT_ARGB, +COLOR_FORMAT_ABGR, +COLOR_FORMAT_BGRA, +
    +  COLOR_FORMAT_RGB, +COLOR_FORMAT_BGR, +COLOR_FORMAT_RGB565, +COLOR_FORMAT_RGB555, +
    +  COLOR_FORMAT_UNKNOWN +
    + }
     Pixel formats of canvas or image. More...
     
    enum  _ps_wrap_type { WRAP_TYPE_REPEAT, +WRAP_TYPE_REFLECT + }
     Fill type of pattern. More...
     
    enum  _ps_gradient_spread { GRADIENT_SPREAD_PAD, +GRADIENT_SPREAD_REPEAT, +GRADIENT_SPREAD_REFLECT + }
     Fill type of outside the gradient area. More...
     
    enum  _ps_line_cap { LINE_CAP_BUTT, +LINE_CAP_ROUND, +LINE_CAP_SQUARE + }
     Styles for rendering the endpoint of a stroked line. More...
     
    enum  _ps_line_join {
    +  LINE_JOIN_MITER, +LINE_JOIN_MITER_REVERT, +LINE_JOIN_MITER_ROUND, +LINE_JOIN_ROUND, +
    +  LINE_JOIN_BEVEL +
    + }
     Junction types for stroked lines. More...
     
    enum  _ps_line_inner_join { LINE_INNER_MITER, +LINE_INNER_BEVEL, +LINE_INNER_JAG, +LINE_INNER_ROUND + }
     Inner junction types for stroked lines. More...
     
    enum  _ps_composite {
    +  COMPOSITE_CLEAR, +COMPOSITE_SRC, +COMPOSITE_SRC_OVER, +COMPOSITE_SRC_IN, +
    +  COMPOSITE_SRC_OUT, +COMPOSITE_SRC_ATOP, +COMPOSITE_DST, +COMPOSITE_DST_OVER, +
    +  COMPOSITE_DST_IN, +COMPOSITE_DST_OUT, +COMPOSITE_DST_ATOP, +COMPOSITE_XOR, +
    +  COMPOSITE_DARKEN, +COMPOSITE_LIGHTEN, +COMPOSITE_OVERLAY, +COMPOSITE_SCREEN, +
    +  COMPOSITE_MULTIPLY, +COMPOSITE_PLUS, +COMPOSITE_MINUS, +COMPOSITE_EXCLUSION, +
    +  COMPOSITE_DIFFERENCE, +COMPOSITE_SOFTLIGHT, +COMPOSITE_HARDLIGHT, +COMPOSITE_BURN, +
    +  COMPOSITE_DODGE, +COMPOSITE_CONTRAST, +COMPOSITE_INVERT, +COMPOSITE_INVERT_BLEND, +
    +  COMPOSITE_HUE, +COMPOSITE_SATURATION, +COMPOSITE_COLOR, +COMPOSITE_LUMINOSITY, +
    +  COMPOSITE_ERROR +
    + }
     Compositing operations for graphics context. More...
     
    enum  _ps_filter {
    +  FILTER_NEAREST, +FILTER_BILINEAR, +FILTER_GAUSSIAN, +FILTER_BICUBIC, +
    +  FILTER_QUADRIC, +FILTER_UNKNOWN +
    + }
     Graphics quality for rendering an image. More...
     
    enum  _ps_fill_rule { FILL_RULE_WINDING, +FILL_RULE_EVEN_ODD, +FILL_RULE_ERROR + }
     Fill rules for graphics. More...
     
    enum  _ps_charset { CHARSET_ANSI, +CHARSET_UNICODE + }
     Charset for a font. More...
     
    enum  _ps_font_weight { FONT_WEIGHT_REGULAR = 400, +FONT_WEIGHT_MEDIUM = 500, +FONT_WEIGHT_BOLD = 700, +FONT_WEIGHT_HEAVY = 900 + }
     Font weight. More...
     
    enum  _ps_text_type { TEXT_TYPE_SMOOTH, +TEXT_TYPE_MONO, +TEXT_TYPE_STROKE + }
     Text rendering type. More...
     
    enum  _ps_draw_text_type { DRAW_TEXT_FILL, +DRAW_TEXT_STROKE, +DRAW_TEXT_BOTH + }
     Draw mode for rending text. More...
     
    enum  _ps_text_align {
    +  TEXT_ALIGN_CENTER = 0, +TEXT_ALIGN_TOP = 1, +TEXT_ALIGN_BOTTOM = 2, +TEXT_ALIGN_LEFT = 4, +
    +  TEXT_ALIGN_RIGHT = 8 +
    + }
     Text align mode for drawing text. More...
     
    enum  _ps_path_cmd {
    +  PATH_CMD_STOP = 0, +PATH_CMD_MOVE_TO = 1, +PATH_CMD_LINE_TO = 2, +PATH_CMD_CURVE3 = 3, +
    +  PATH_CMD_CURVE4 = 4, +PATH_CMD_END_POLY = 0x0F +
    + }
     Path command for vertices. More...
     
    enum  _ps_path_op { PATH_OP_UNION, +PATH_OP_INTERSECT, +PATH_OP_XOR, +PATH_OP_DIFF + }
     Path clipping operations. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    PEXPORT int PICAPI ps_version (void)
     Return current version of picasso. More...
     
    PEXPORT ps_bool PICAPI ps_initialize (void)
     Initialize the picasso drawing environment. More...
     
    PEXPORT void PICAPI ps_shutdown (void)
     Shutdown the picasso drawing environment. More...
     
    PEXPORT ps_status PICAPI ps_last_status (void)
     Return the last status code of picasso. More...
     
    PEXPORT ps_context *PICAPI ps_context_create (ps_canvas *canvas, ps_context *shared_context)
     Create a new graphic context for a canvas. More...
     
    PEXPORT ps_context *PICAPI ps_context_ref (ps_context *ctx)
     Increases the reference count of the context by 1. More...
     
    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 0, the context is freed. More...
     
    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. More...
     
    PEXPORT ps_canvas *PICAPI ps_context_get_canvas (ps_context *ctx)
     Get the canvas from the context. More...
     
    PEXPORT ps_canvas *PICAPI ps_canvas_create (ps_color_format fmt, int width, int height)
     Create a new canvas using the given parameters. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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_canvas_create_with_data. More...
     
    PEXPORT ps_canvas *PICAPI ps_canvas_ref (ps_canvas *canvas)
     Increases the reference count of the canvas by 1. More...
     
    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, the canvas is freed. More...
     
    PEXPORT ps_bool PICAPI ps_canvas_get_size (const ps_canvas *canvas, ps_size *rsize)
     Return the size of the canvas. More...
     
    PEXPORT ps_color_format PICAPI ps_canvas_get_format (const ps_canvas *canvas)
     Return the pixel format of the canvas. More...
     
    PEXPORT void PICAPI ps_canvas_set_mask (ps_canvas *canvas, const ps_mask *mask)
     Set a new mask into an existing canvas object. More...
     
    PEXPORT void PICAPI ps_canvas_reset_mask (ps_canvas *canvas)
     Clear the mask from the canvas object. More...
     
    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. More...
     
    PEXPORT ps_image *PICAPI ps_image_create (ps_color_format fmt, int width, int height)
     Create a new image using the given parameters. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    PEXPORT ps_image *PICAPI ps_image_ref (ps_image *img)
     Increases the reference count of the image by 1. More...
     
    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, the image is freed. More...
     
    PEXPORT void PICAPI ps_image_set_allow_transparent (ps_image *img, ps_bool allow)
     Set whether the image allowed be transparent, False is default. More...
     
    PEXPORT void PICAPI ps_image_set_transparent_color (ps_image *img, const ps_color *color)
     Set the transparent color for the image. More...
     
    PEXPORT ps_bool PICAPI ps_image_get_size (const ps_image *img, ps_size *rsize)
     Return the size of the image. More...
     
    PEXPORT ps_color_format PICAPI ps_image_get_format (const ps_image *img)
     Return the pixel format of the image. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_pattern_transform (ps_pattern *pattern, const ps_matrix *matrix)
     Transform the pattern object. More...
     
    PEXPORT ps_pattern *PICAPI ps_pattern_ref (ps_pattern *pattern)
     Increases the reference count of the pattern by 1. More...
     
    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 0, the pattern is freed. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_gradient_transform (ps_gradient *gradient, const ps_matrix *matrix)
     Transform the gradient object. More...
     
    PEXPORT ps_gradient *PICAPI ps_gradient_ref (ps_gradient *gradient)
     Increases the reference count of the gradient by 1. More...
     
    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 to 0, the gradient is freed. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_gradient_clear_color_stops (ps_gradient *gradient)
     Clear color stops from gradient's control vector. More...
     
    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. More...
     
    PEXPORT ps_mask *PICAPI ps_mask_ref (ps_mask *mask)
     Increases the reference count of the mask by 1. More...
     
    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, the mask is freed. More...
     
    PEXPORT void PICAPI ps_mask_add_color_filter (ps_mask *mask, const ps_color *color)
     Add a color filter to a mask. More...
     
    PEXPORT void PICAPI ps_mask_clear_color_filters (ps_mask *mask)
     Clear all colors from mask's filter. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    PEXPORT float PICAPI ps_set_line_width (ps_context *ctx, float width)
     Set the line width for a graphics context. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_reset_line_dash (ps_context *ctx)
     Clear the dashs from the context, and set to solid. More...
     
    PEXPORT void PICAPI ps_set_shadow (ps_context *ctx, float x_offset, float y_offset, float blur)
     Enables shadowing in a context. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_reset_shadow (ps_context *ctx)
     Disables shadowing in a context. More...
     
    PEXPORT ps_composite PICAPI ps_set_composite_operator (ps_context *ctx, ps_composite composite)
     Set composites opertaions for graphics context. More...
     
    PEXPORT ps_filter PICAPI ps_set_filter (ps_context *ctx, ps_filter filter)
     Set interpolation filter for graphic context. More...
     
    PEXPORT ps_fill_rule PICAPI ps_set_fill_rule (ps_context *ctx, ps_fill_rule rule)
     Set fill rule for graphic context. More...
     
    PEXPORT float PICAPI ps_set_alpha (ps_context *ctx, float alpha)
     Set the opacity level for objects drawn in graphic context. More...
     
    PEXPORT float PICAPI ps_set_gamma (ps_context *ctx, float gamma)
     Set the gamma value for the graphic context. More...
     
    PEXPORT void PICAPI ps_set_antialias (ps_context *ctx, ps_bool antialias)
     Set whether the Anti-aliasing should be turn on. More...
     
    PEXPORT float PICAPI ps_set_blur (ps_context *ctx, float blur)
     Set the blur level for the graphic context. More...
     
    PEXPORT void PICAPI ps_stroke (ps_context *ctx)
     Stroke the current path according to the line attributes. After called, the current path will be cleared from the context. More...
     
    PEXPORT void PICAPI ps_fill (ps_context *ctx)
     Fill the current path according to the source attributes. After called, the current path will be cleared from the context. More...
     
    PEXPORT void PICAPI ps_paint (ps_context *ctx)
     Fill and stroke the current path according to the source and line attributes. After called, the current path will be cleared from the context. More...
     
    PEXPORT void PICAPI ps_clear (ps_context *ctx)
     Clear the current context with source color. More...
     
    PEXPORT void PICAPI ps_clip (ps_context *ctx)
     Clipping the current path, using the current fill rule. After called, the current path will be cleared from the context. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_clip_rect (ps_context *ctx, const ps_rect *rect)
     Clipping specified rectangle. More...
     
    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. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_reset_clip (ps_context *ctx)
     Clear the clipping area from the context. More...
     
    PEXPORT void PICAPI ps_save (ps_context *ctx)
     Pushes a copy of the current graphics state on to stack for context. More...
     
    PEXPORT void PICAPI ps_restore (ps_context *ctx)
     Set the current graphics state to the state most recently saved. More...
     
    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. More...
     
    PEXPORT ps_font *PICAPI ps_font_create_copy (const ps_font *font)
     Create a copy from an existing font object. More...
     
    PEXPORT ps_font *PICAPI ps_font_ref (ps_font *font)
     Increases the reference count of the font by 1. More...
     
    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, the font is freed. More...
     
    PEXPORT void PICAPI ps_font_set_size (ps_font *font, float size)
     Set size for a font object. More...
     
    PEXPORT void PICAPI ps_font_set_weight (ps_font *font, int weight)
     Set weight for a font object. More...
     
    PEXPORT void PICAPI ps_font_set_italic (ps_font *font, ps_bool italic)
     Set italic for a font object. More...
     
    PEXPORT void PICAPI ps_font_set_charset (ps_font *font, ps_charset charset)
     Set charset for a font object. More...
     
    PEXPORT void PICAPI ps_font_set_hint (ps_font *font, ps_bool hint)
     Set hiting for a font object. More...
     
    PEXPORT void PICAPI ps_font_set_flip (ps_font *font, ps_bool flip)
     Set flip for a font object. More...
     
    PEXPORT ps_bool PICAPI ps_get_font_info (ps_context *ctx, ps_font_info *info)
     Return the font information from the graphics context. More...
     
    PEXPORT ps_font *PICAPI ps_set_font (ps_context *ctx, const ps_font *font)
     Set a new font to graphics context. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_set_text_color (ps_context *ctx, const ps_color *color)
     Set the text fill color for the graphic context. More...
     
    PEXPORT void PICAPI ps_set_text_stroke_color (ps_context *ctx, const ps_color *color)
     Set the text stroke color for the graphic context. More...
     
    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 – saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. More...
     
    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 restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. More...
     
    PEXPORT void PICAPI ps_set_text_render_type (ps_context *ctx, ps_text_type type)
     Set rendering type for text. More...
     
    PEXPORT void PICAPI ps_set_text_antialias (ps_context *ctx, ps_bool antialias)
     Set whether the font allowed be anti-aliasing. More...
     
    PEXPORT void PICAPI ps_set_text_kerning (ps_context *ctx, ps_bool kerning)
     Set whether the font auto kerning is allowed. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    PEXPORT ps_bool PICAPI ps_glyph_get_extent (const ps_glyph *glyph, ps_size *rsize)
     Get extent for a glyph object. More...
     
    PEXPORT void PICAPI ps_translate (ps_context *ctx, float tx, float ty)
     Changes the origin of the user coordinate system in graphic context. More...
     
    PEXPORT void PICAPI ps_scale (ps_context *ctx, float sx, float sy)
     Changes the scale of the user coordinate system in graphic context. More...
     
    PEXPORT void PICAPI ps_shear (ps_context *ctx, float shx, float shy)
     Changes the shear of the user coordinate system in graphic context. More...
     
    PEXPORT void PICAPI ps_rotate (ps_context *ctx, float angle)
     Rotates the user coordinate system in graphic context. More...
     
    PEXPORT void PICAPI ps_identity (ps_context *ctx)
     Reset the current transformation matrix to identity matrix. More...
     
    PEXPORT void PICAPI ps_transform (ps_context *ctx, const ps_matrix *matrix)
     Transforms the user coordinate system in graphic context using a specified matrix. More...
     
    PEXPORT void PICAPI ps_set_matrix (ps_context *ctx, const ps_matrix *matrix)
     Modifies the current transformation matrix to the given matrix. More...
     
    PEXPORT ps_bool PICAPI ps_get_matrix (ps_context *ctx, ps_matrix *matrix)
     Get the current transformation matrix from graphic context. More...
     
    PEXPORT void PICAPI ps_world_to_viewport (ps_context *ctx, ps_point *point)
     Transform a coordinate from device space to user space. More...
     
    PEXPORT void PICAPI ps_viewport_to_world (ps_context *ctx, ps_point *point)
     Transform a coordinate from user space to device space. More...
     
    PEXPORT ps_matrix *PICAPI ps_matrix_create (void)
     Create a identity matrix object. More...
     
    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. More...
     
    PEXPORT ps_matrix *PICAPI ps_matrix_create_copy (const ps_matrix *matrix)
     Create a matrix copy from an exist one. More...
     
    PEXPORT ps_matrix *PICAPI ps_matrix_ref (ps_matrix *matrix)
     Increases the reference count of the matrix by 1. More...
     
    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, the matrix is freed. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_matrix_translate (ps_matrix *matrix, float tx, float ty)
     Modify a matrix by translating. More...
     
    PEXPORT void PICAPI ps_matrix_scale (ps_matrix *matrix, float sx, float sy)
     Modify a matrix by scaling. More...
     
    PEXPORT void PICAPI ps_matrix_rotate (ps_matrix *matrix, float angle)
     Modify a matrix by rotating. More...
     
    PEXPORT void PICAPI ps_matrix_shear (ps_matrix *matrix, float shx, float shy)
     Modify a matrix by shearing. More...
     
    PEXPORT void PICAPI ps_matrix_invert (ps_matrix *matrix)
     Modify a matrix by inverting. More...
     
    PEXPORT void PICAPI ps_matrix_identity (ps_matrix *matrix)
     Reset a matrix to identity matrix. More...
     
    PEXPORT void PICAPI ps_matrix_flip_x (ps_matrix *matrix)
     Flip a matrix in the horizontal direction. More...
     
    PEXPORT void PICAPI ps_matrix_flip_y (ps_matrix *matrix)
     Flip a matrix in the vertical direction. More...
     
    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. More...
     
    PEXPORT ps_bool PICAPI ps_matrix_is_identity (const ps_matrix *matrix)
     Checks whether the matrix is the identity transform matrix. More...
     
    PEXPORT ps_bool PICAPI ps_matrix_is_equal (const ps_matrix *a, const ps_matrix *b)
     Checks whether two matrix are equal. More...
     
    PEXPORT float PICAPI ps_matrix_get_determinant (const ps_matrix *matrix)
     Return the determinant from a matrix. More...
     
    PEXPORT void PICAPI ps_matrix_set_translate_factor (ps_matrix *matrix, float tx, float ty)
     Set the translate factors to the matrix. More...
     
    PEXPORT ps_bool PICAPI ps_matrix_get_translate_factor (ps_matrix *matrix, float *tx, float *ty)
     Get the translate factors from the matrix. More...
     
    PEXPORT void PICAPI ps_matrix_set_scale_factor (ps_matrix *matrix, float sx, float sy)
     Set the scale factors to the matrix. More...
     
    PEXPORT ps_bool PICAPI ps_matrix_get_scale_factor (ps_matrix *matrix, float *sx, float *sy)
     Get the scale factors from the matrix. More...
     
    PEXPORT void PICAPI ps_matrix_set_shear_factor (ps_matrix *matrix, float shx, float shy)
     Set the shear factors to the matrix. More...
     
    PEXPORT ps_bool PICAPI ps_matrix_get_shear_factor (ps_matrix *matrix, float *shx, float *shy)
     Get the shear factors from the matrix. More...
     
    PEXPORT void PICAPI ps_matrix_transform_point (const ps_matrix *matrix, ps_point *point)
     Transform an existing point using the matrix. More...
     
    PEXPORT void PICAPI ps_matrix_transform_rect (const ps_matrix *matrix, ps_rect *rect)
     Transform an existing rectangle using the matrix. More...
     
    PEXPORT void PICAPI ps_matrix_transform_path (const ps_matrix *matrix, ps_path *path)
     Transform an existing path using the matrix. More...
     
    PEXPORT void PICAPI ps_new_path (ps_context *ctx)
     Create a new empty path in the graphic context, clear the old one. More...
     
    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. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_set_path (ps_context *ctx, const ps_path *path)
     Replace the current path in the graphic context. More...
     
    PEXPORT ps_bool PICAPI ps_get_path (ps_context *ctx, ps_path *path)
     Get the current path in the graphic context. More...
     
    PEXPORT void PICAPI ps_close_path (ps_context *ctx)
     Close the current path in the graphic context. More...
     
    PEXPORT void PICAPI ps_move_to (ps_context *ctx, const ps_point *point)
     Begin a new sub path, and set the current point. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_rectangle (ps_context *ctx, const ps_rect *rect)
     Add a rectangle to the current path. More...
     
    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. More...
     
    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. More...
     
    PEXPORT ps_path *PICAPI ps_path_create (void)
     Create a new empty path object. More...
     
    PEXPORT ps_path *PICAPI ps_path_create_copy (const ps_path *path)
     Create a copy from an existing path object. More...
     
    PEXPORT ps_path *PICAPI ps_path_ref (ps_path *path)
     Increases the reference count of the path by 1. More...
     
    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, the path is freed. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_path_sub_close (ps_path *path)
     Close the sub path, and begin a new one. More...
     
    PEXPORT float PICAPI ps_path_get_length (const ps_path *path)
     Return The length of the path. More...
     
    PEXPORT void PICAPI ps_path_clear (ps_path *path)
     Clear the path to empty. More...
     
    PEXPORT ps_bool PICAPI ps_path_is_empty (const ps_path *path)
     Checks whether the path is empty. More...
     
    PEXPORT unsigned int PICAPI ps_path_get_vertex_count (const ps_path *path)
     Return the count of vertices in the path. More...
     
    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. More...
     
    PEXPORT ps_bool PICAPI ps_path_bounding_rect (const ps_path *path, ps_rect *rect)
     Get the bounding rectangle of the path. More...
     
    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. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_path_add_line (ps_path *path, const ps_point *p1, const ps_point *p2)
     Add a line to the path. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_path_add_rect (ps_path *path, const ps_rect *rect)
     Add a rectangle to the path. More...
     
    PEXPORT void PICAPI ps_path_add_ellipse (ps_path *path, const ps_rect *rect)
     Add an ellipse to the path. More...
     
    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. More...
     
    PEXPORT void PICAPI ps_path_add_sub_path (ps_path *path, const ps_path *spath)
     Add an sub path to the path. More...
     
    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. More...
     
    +

    Detailed Description

    +
    Author
    Zhang Ji Peng oneco.nosp@m.olx@.nosp@m.gmail.nosp@m..com
    +
    Date
    2014/6/16
    +

    This file includes all interfaces of Picasso

    +
       Copyright (C) 2008 ~ 2024  Zhang Ji Peng
    +
    +   All rights reserved.
    +
    +   Picasso is a vector graphic library.
    +

    Definition in file picasso.h.

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

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  _psx_image_frame
     A frame image data. More...
     
    struct  _psx_image
     A image object. More...
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define IMG_OBJ(image)   IMG_OBJ_AT_INDEX(image, 0)
     Get first ps_image obj. More...
     
    #define IMG_DATA(image)   IMG_DATA_AT_INDEX(image, 0)
     Get first image frame data. More...
     
    #define IMG_DATA_SIZE(image)   IMG_DATA_SIZE_AT_INDEX(image, 0)
     Get first image frame data size. More...
     
    #define IMG_OBJ_AT_INDEX(image, idx)   (image->frames[idx].img)
     Get ps_image obj at index. More...
     
    #define IMG_DATA_AT_INDEX(image, idx)   (image->frames[idx].data)
     Get image frame data at index. More...
     
    #define IMG_DATA_SIZE_AT_INDEX(img, idx)   (img->frames[idx].size)
     Get image frame data size at index. More...
     
    #define IMG_DURATION_AT_INDEX(img, idx)   (img->frames[idx].duration)
     Get image frame duration at index. More...
     
    + + + + + + + + + + +

    +Typedefs

    +typedef struct _psx_image_frame psx_image_frame
     A frame image data.
     
    +typedef struct _psx_image psx_image
     A image object.
     
    +typedef int(* image_writer_fn) (void *param, const ps_byte *data, size_t length)
     Callback function for saving image data.
     
    + + + + +

    +Enumerations

    enum  {
    +  S_OK = 0, +S_BAD_PARAMS = 1, +S_NOT_SUPPORT = 2, +S_OUT_OF_MEMORY = 3, +
    +  S_INIT_FAILURE = 4, +S_FAILURE = 5 +
    + }
     Status code return by call APIs. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    PEXPORT int PICAPI psx_image_init (void)
     Initialze the library and load resources. More...
     
    PEXPORT int PICAPI psx_image_shutdown (void)
     Release resources and shutdoen. More...
     
    PEXPORT psx_image *PICAPI psx_image_create_from_data (ps_byte *data, ps_color_format fmt, int width, int height, int pitch, int *err_code)
     Create a new psx_image using a copy of given address in memory. More...
     
    PEXPORT psx_image *PICAPI psx_image_load (const char *file_name, int *err_code)
     Create a new psx_image object and load from file. More...
     
    PEXPORT psx_image *PICAPI psx_image_load_from_memory (const ps_byte *data, size_t length, int *err_code)
     Create a new psx_image object and load data from memory. More...
     
    PEXPORT int PICAPI psx_image_save (const psx_image *image, image_writer_fn func, void *param, const char *type, float quality)
     Encoding psx_image to a gaving format and output it. More...
     
    PEXPORT int PICAPI psx_image_save_to_file (const psx_image *image, const char *file_name, const char *type, float quality)
     Encoding psx_image to a gaving format and output to a file. More...
     
    PEXPORT int PICAPI psx_image_destroy (psx_image *image)
     Destroy the psx_image object and release resources. More...
     
    +

    Detailed Description

    +
    Author
    Zhang Ji Peng oneco.nosp@m.olx@.nosp@m.gmail.nosp@m..com
    +
    Date
    2012/1/31
    +

    This file includes all interfaces of picasso extended image decoders.

       Copyright (C) 2008 ~ 2024  Zhang Ji Peng
    +
    +   All rights reserved.
    +
    +   Picasso is a vector graphic library.
    +

    Definition in file psx_image.h.

    +
    + + + + diff --git a/doc/html/psx__image_8h_source.html b/doc/html/psx__image_8h_source.html new file mode 100644 index 0000000..2ff21e1 --- /dev/null +++ b/doc/html/psx__image_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +Picasso API: include/images/psx_image.h Source File + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + + +
    +
    +
    +
    psx_image.h
    +
    +
    +Go to the documentation of this file.
    1 
    +
    18 #ifndef _PSX_IMAGE_DECODERS_H_
    +
    19 #define _PSX_IMAGE_DECODERS_H_
    +
    20 
    +
    21 #include "picasso.h"
    +
    22 
    +
    23 #ifdef __cplusplus
    +
    24 extern "C" {
    +
    25 #endif
    +
    26 
    +
    43 typedef struct _psx_image_frame {
    + + +
    49  size_t size;
    +
    51  int duration;
    + +
    53 
    +
    57 typedef struct _psx_image {
    +
    59  int width;
    +
    61  int height;
    +
    63  int pitch;
    + + +
    69  size_t num_frames;
    +
    70 } psx_image;
    +
    71 
    +
    77 #define IMG_OBJ(image) IMG_OBJ_AT_INDEX(image, 0)
    +
    78 
    +
    84 #define IMG_DATA(image) IMG_DATA_AT_INDEX(image, 0)
    +
    85 
    +
    91 #define IMG_DATA_SIZE(image) IMG_DATA_SIZE_AT_INDEX(image, 0)
    +
    92 
    +
    98 #define IMG_OBJ_AT_INDEX(image, idx) (image->frames[idx].img)
    +
    99 
    +
    105 #define IMG_DATA_AT_INDEX(image, idx) (image->frames[idx].data)
    +
    106 
    +
    112 #define IMG_DATA_SIZE_AT_INDEX(img, idx) (img->frames[idx].size)
    +
    113 
    +
    119 #define IMG_DURATION_AT_INDEX(img, idx) (img->frames[idx].duration)
    +
    120 
    +
    124 enum {
    +
    126  S_OK = 0,
    + + + + + +
    137 };
    +
    138 
    +
    154 PEXPORT int PICAPI psx_image_init(void);
    +
    155 
    +
    164 PEXPORT int PICAPI psx_image_shutdown(void);
    +
    165 
    + +
    185  int width, int height, int pitch, int* err_code);
    +
    186 
    +
    199 PEXPORT psx_image* PICAPI psx_image_load(const char* file_name, int* err_code);
    +
    200 
    +
    214 PEXPORT psx_image* PICAPI psx_image_load_from_memory(const ps_byte* data, size_t length, int* err_code);
    +
    215 
    +
    219 typedef int (*image_writer_fn)(void* param, const ps_byte* data, size_t length);
    +
    220 
    +
    235 PEXPORT int PICAPI psx_image_save(const psx_image* image, image_writer_fn func,
    +
    236  void* param, const char* type, float quality);
    +
    237 
    +
    251 PEXPORT int PICAPI psx_image_save_to_file(const psx_image* image, const char* file_name,
    +
    252  const char* type, float quality);
    +
    253 
    +
    264 PEXPORT int PICAPI psx_image_destroy(psx_image* image);
    +
    269 #ifdef __cplusplus
    +
    270 }
    +
    271 #endif
    +
    272 
    +
    273 #endif /*_PSX_IMAGE_DECODERS_H_*/
    +
    +
    @ S_NOT_SUPPORT
    Definition: psx_image.h:130
    +
    PEXPORT int PICAPI psx_image_init(void)
    Initialze the library and load resources.
    +
    struct _ps_image ps_image
    An opaque type represents an image.
    Definition: picasso.h:123
    +
    PEXPORT int PICAPI psx_image_save_to_file(const psx_image *image, const char *file_name, const char *type, float quality)
    Encoding psx_image to a gaving format and output to a file.
    +
    ps_byte * data
    Definition: psx_image.h:47
    + +
    int height
    Definition: psx_image.h:61
    + +
    PEXPORT psx_image *PICAPI psx_image_load(const char *file_name, int *err_code)
    Create a new psx_image object and load from file.
    +
    ps_color_format format
    Definition: psx_image.h:65
    +
    struct _psx_image_frame psx_image_frame
    A frame image data.
    +
    int(* image_writer_fn)(void *param, const ps_byte *data, size_t length)
    Callback function for saving image data.
    Definition: psx_image.h:219
    +
    int width
    Definition: psx_image.h:59
    +
    int pitch
    Definition: psx_image.h:63
    +
    @ S_OK
    Definition: psx_image.h:126
    +
    PEXPORT int PICAPI psx_image_save(const psx_image *image, image_writer_fn func, void *param, const char *type, float quality)
    Encoding psx_image to a gaving format and output it.
    +
    A image object.
    Definition: psx_image.h:57
    +
    @ S_INIT_FAILURE
    Definition: psx_image.h:134
    +
    PEXPORT int PICAPI psx_image_destroy(psx_image *image)
    Destroy the psx_image object and release resources.
    + +
    A frame image data.
    Definition: psx_image.h:43
    +
    @ S_BAD_PARAMS
    Definition: psx_image.h:128
    +
    uint8_t ps_byte
    byte data type
    Definition: picasso.h:95
    +
    ps_image * img
    Definition: psx_image.h:45
    +
    struct _psx_image psx_image
    A image object.
    +
    @ S_FAILURE
    Definition: psx_image.h:136
    +
    PEXPORT psx_image *PICAPI psx_image_load_from_memory(const ps_byte *data, size_t length, int *err_code)
    Create a new psx_image object and load data from memory.
    +
    PEXPORT int PICAPI psx_image_shutdown(void)
    Release resources and shutdoen.
    +
    size_t num_frames
    Definition: psx_image.h:69
    +
    psx_image_frame * frames
    Definition: psx_image.h:67
    +
    @ S_OUT_OF_MEMORY
    Definition: psx_image.h:132
    +
    PEXPORT psx_image *PICAPI psx_image_create_from_data(ps_byte *data, ps_color_format fmt, int width, int height, int pitch, int *err_code)
    Create a new psx_image using a copy of given address in memory.
    +
    enum _ps_color_format ps_color_format
    Pixel formats of canvas or image.
    + + + + diff --git a/doc/html/psx__image__plugin_8h.html b/doc/html/psx__image__plugin_8h.html new file mode 100644 index 0000000..5dc84df --- /dev/null +++ b/doc/html/psx__image__plugin_8h.html @@ -0,0 +1,134 @@ + + + + + + + +Picasso API: include/images/psx_image_plugin.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    psx_image_plugin.h File Reference
    +
    +
    +
    #include "picasso.h"
    +#include "psx_image.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  _psx_image_header
     Image reader header define. More...
     
    struct  _psx_image_operator
     The image operator define. More...
     
    + + + + +

    +Macros

    +#define MODULE_NAME   1
     Get module name.
     
    + + + + + + + + + + +

    +Typedefs

    +typedef struct _psx_image_header psx_image_header
     Image reader header define.
     
    typedef struct _psx_image_operator psx_image_operator
     The image operator define. More...
     
    typedef enum _psx_priority_level psx_priority_level
     Priority level for image_operator. More...
     
    + + + + +

    +Enumerations

    enum  _psx_priority_level { PRIORITY_EXTENTED = -1, +PRIORITY_DEFAULT = 0, +PRIORITY_MASTER = 1 + }
     Priority level for image_operator. More...
     
    + + + + + + + + + + + + + + + + +

    +Functions

    PEXPORT int psx_image_register_operator (const char *type, const ps_byte *signature, size_t sig_offset, size_t sig_len, psx_priority_level level, psx_image_operator *coder)
     Register the image operator. More...
     
    PEXPORT int psx_image_unregister_operator (psx_image_operator *coder)
     Unregister the image operator. More...
     
    PEXPORT void psx_image_module_init (void)
     Initialze the image module. More...
     
    PEXPORT void psx_image_module_shutdown (void)
     Shutdown the image module. More...
     
    const PEXPORT char * psx_image_module_get_string (int id)
     Get the string info about module. More...
     
    +

    Detailed Description

    +
    Author
    Zhang Ji Peng oneco.nosp@m.olx@.nosp@m.gmail.nosp@m..com
    +
    Date
    2012/1/31
    +

    This file includes all interfaces of image decoder backend.

       Copyright (C) 2008 ~ 2024  Zhang Ji Peng
    +
    +   All rights reserved.
    +
    +   Picasso is a vector graphic library.
    +

    Definition in file psx_image_plugin.h.

    +
    + + + + diff --git a/doc/html/psx__image__plugin_8h_source.html b/doc/html/psx__image__plugin_8h_source.html new file mode 100644 index 0000000..48494ca --- /dev/null +++ b/doc/html/psx__image__plugin_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +Picasso API: include/images/psx_image_plugin.h Source File + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + + +
    +
    +
    +
    psx_image_plugin.h
    +
    +
    +Go to the documentation of this file.
    1 
    +
    18 #ifndef _PSX_IMAGE_PLUGININ_INTERFACE_H_
    +
    19 #define _PSX_IMAGE_PLUGININ_INTERFACE_H_
    +
    20 
    +
    21 #include "picasso.h"
    +
    22 #include "psx_image.h"
    +
    23 
    +
    24 #ifdef __cplusplus
    +
    25 extern "C" {
    +
    26 #endif
    +
    27 
    +
    44 typedef struct _psx_image_header {
    +
    46  void* priv;
    +
    48  int width;
    +
    50  int height;
    +
    52  int pitch;
    +
    54  int depth;
    +
    56  int bpp;
    +
    58  int format;
    +
    60  int alpha;
    +
    62  int frames;
    + +
    64 
    +
    69 typedef struct _psx_image_operator {
    +
    71  int (*read_header_info)(const ps_byte* data, size_t data_len, psx_image_header* header);
    +
    73  int (*decode_image_data)(psx_image_header* header, const psx_image* image, psx_image_frame* frame, int idx, ps_byte* buffer, size_t buffer_len);
    + +
    77  int (*write_header_info)(const psx_image* image, image_writer_fn func,
    +
    78  void* param, float quality, psx_image_header* header);
    +
    80  int (*encode_image_data)(psx_image_header* header, const psx_image* image, psx_image_frame* frame, int idx, const ps_byte* buffer, size_t buffer_len, int* ret);
    + + +
    84 
    +
    89 typedef enum _psx_priority_level {
    + + + + +
    97 
    +
    121 PEXPORT int psx_image_register_operator(const char* type, const ps_byte* signature, size_t sig_offset, size_t sig_len,
    +
    122  psx_priority_level level, psx_image_operator* coder);
    +
    123 
    + +
    135 
    +
    149 PEXPORT void psx_image_module_init(void);
    +
    150 
    +
    157 PEXPORT void psx_image_module_shutdown(void);
    +
    158 
    +
    163 #define MODULE_NAME 1
    +
    164 
    +
    176 PEXPORT const char* psx_image_module_get_string(int id);
    +
    177 
    +
    182 #ifdef __cplusplus
    +
    183 }
    +
    184 #endif
    +
    185 
    +
    186 #endif /*_PSX_IMAGE_PLUGININ_INTERFACE_H_*/
    +
    + + +
    @ PRIORITY_DEFAULT
    + +
    int(* decode_image_data)(psx_image_header *header, const psx_image *image, psx_image_frame *frame, int idx, ps_byte *buffer, size_t buffer_len)
    + + +
    struct _psx_image_operator psx_image_operator
    The image operator define.
    +
    int(* encode_image_data)(psx_image_header *header, const psx_image *image, psx_image_frame *frame, int idx, const ps_byte *buffer, size_t buffer_len, int *ret)
    +
    int(* read_header_info)(const ps_byte *data, size_t data_len, psx_image_header *header)
    + + +
    PEXPORT void psx_image_module_init(void)
    Initialze the image module.
    + +
    @ PRIORITY_MASTER
    +
    int(* image_writer_fn)(void *param, const ps_byte *data, size_t length)
    Callback function for saving image data.
    Definition: psx_image.h:219
    +
    int(* release_read_header_info)(psx_image_header *header)
    + +
    Image reader header define.
    +
    enum _psx_priority_level psx_priority_level
    Priority level for image_operator.
    +
    _psx_priority_level
    Priority level for image_operator.
    + +
    PEXPORT void psx_image_module_shutdown(void)
    Shutdown the image module.
    +
    @ PRIORITY_EXTENTED
    +
    A image object.
    Definition: psx_image.h:57
    + +
    int(* write_header_info)(const psx_image *image, image_writer_fn func, void *param, float quality, psx_image_header *header)
    +
    The image operator define.
    +
    A frame image data.
    Definition: psx_image.h:43
    +
    uint8_t ps_byte
    byte data type
    Definition: picasso.h:95
    +
    const PEXPORT char * psx_image_module_get_string(int id)
    Get the string info about module.
    +
    PEXPORT int psx_image_unregister_operator(psx_image_operator *coder)
    Unregister the image operator.
    +
    int(* release_write_header_info)(psx_image_header *header)
    +
    PEXPORT int psx_image_register_operator(const char *type, const ps_byte *signature, size_t sig_offset, size_t sig_len, psx_priority_level level, psx_image_operator *coder)
    Register the image operator.
    +
    struct _psx_image_header psx_image_header
    Image reader header define.
    + + + + diff --git a/doc/html/splitbar.png b/doc/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/html/struct__ps__color.html b/doc/html/struct__ps__color.html new file mode 100644 index 0000000..9e0c7d2 --- /dev/null +++ b/doc/html/struct__ps__color.html @@ -0,0 +1,149 @@ + + + + + + + +Picasso API: _ps_color Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _ps_color Struct Reference
    +
    +
    + +

    A structure that contains rgba values for a color. + More...

    + +

    #include <picasso.h>

    + + + + + + + + + + +

    +Data Fields

    float r
     
    float g
     
    float b
     
    float a
     
    +

    Detailed Description

    +

    A structure that contains rgba values for a color.

    + +

    Definition at line 212 of file picasso.h.

    +

    Field Documentation

    + +

    ◆ a

    + +
    +
    + + + + +
    float _ps_color::a
    +
    +

    the alpha component for a color (0 ~ 1).

    + +

    Definition at line 220 of file picasso.h.

    + +
    +
    + +

    ◆ b

    + +
    +
    + + + + +
    float _ps_color::b
    +
    +

    the blue component for a color (0 ~ 1).

    + +

    Definition at line 218 of file picasso.h.

    + +
    +
    + +

    ◆ g

    + +
    +
    + + + + +
    float _ps_color::g
    +
    +

    the green component for a color (0 ~ 1).

    + +

    Definition at line 216 of file picasso.h.

    + +
    +
    + +

    ◆ r

    + +
    +
    + + + + +
    float _ps_color::r
    +
    +

    the red component for a color (0 ~ 1).

    + +

    Definition at line 214 of file picasso.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__ps__font__info.html b/doc/html/struct__ps__font__info.html new file mode 100644 index 0000000..abd90b9 --- /dev/null +++ b/doc/html/struct__ps__font__info.html @@ -0,0 +1,168 @@ + + + + + + + +Picasso API: _ps_font_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _ps_font_info Struct Reference
    +
    +
    + +

    A structure that contains font information. + More...

    + +

    #include <picasso.h>

    + + + + + + + + + + + + +

    +Data Fields

    float size
     
    float ascent
     
    float descent
     
    float leading
     
    unsigned int unitsEM
     
    +

    Detailed Description

    +

    A structure that contains font information.

    + +

    Definition at line 2088 of file picasso.h.

    +

    Field Documentation

    + +

    ◆ ascent

    + +
    +
    + + + + +
    float _ps_font_info::ascent
    +
    +

    Ascent, maximum distance above the baseline.

    + +

    Definition at line 2096 of file picasso.h.

    + +
    +
    + +

    ◆ descent

    + +
    +
    + + + + +
    float _ps_font_info::descent
    +
    +

    Descent, maximum distance below the baseline.

    + +

    Definition at line 2100 of file picasso.h.

    + +
    +
    + +

    ◆ leading

    + +
    +
    + + + + +
    float _ps_font_info::leading
    +
    +

    Leading, the spaceing between consecutive lines of text.

    + +

    Definition at line 2104 of file picasso.h.

    + +
    +
    + +

    ◆ size

    + +
    +
    + + + + +
    float _ps_font_info::size
    +
    +

    Size, the height of glyph.

    + +

    Definition at line 2092 of file picasso.h.

    + +
    +
    + +

    ◆ unitsEM

    + +
    +
    + + + + +
    unsigned int _ps_font_info::unitsEM
    +
    +

    UnitsEm, the number of glyph space units per em.

    + +

    Definition at line 2108 of file picasso.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__ps__glyph.html b/doc/html/struct__ps__glyph.html new file mode 100644 index 0000000..f19c9b3 --- /dev/null +++ b/doc/html/struct__ps__glyph.html @@ -0,0 +1,92 @@ + + + + + + + +Picasso API: _ps_glyph Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _ps_glyph Struct Reference
    +
    +
    + +

    A character glyph of a font. + More...

    + +

    #include <picasso.h>

    + + + + +

    +Data Fields

    void * glyph
     
    +

    Detailed Description

    +

    A character glyph of a font.

    + +

    Definition at line 170 of file picasso.h.

    +

    Field Documentation

    + +

    ◆ glyph

    + +
    +
    + + + + +
    void* _ps_glyph::glyph
    +
    +

    private glyph data.

    + +

    Definition at line 172 of file picasso.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__ps__point.html b/doc/html/struct__ps__point.html new file mode 100644 index 0000000..a3f3bc4 --- /dev/null +++ b/doc/html/struct__ps__point.html @@ -0,0 +1,111 @@ + + + + + + + +Picasso API: _ps_point Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _ps_point Struct Reference
    +
    +
    + +

    A structure that contains a point in a two-dimensional coordinate system. + More...

    + +

    #include <picasso.h>

    + + + + + + +

    +Data Fields

    float x
     
    float y
     
    +

    Detailed Description

    +

    A structure that contains a point in a two-dimensional coordinate system.

    + +

    Definition at line 202 of file picasso.h.

    +

    Field Documentation

    + +

    ◆ x

    + +
    +
    + + + + +
    float _ps_point::x
    +
    +

    the x coordinate of the point.

    + +

    Definition at line 204 of file picasso.h.

    + +
    +
    + +

    ◆ y

    + +
    +
    + + + + +
    float _ps_point::y
    +
    +

    the y coordinate of the point.

    + +

    Definition at line 206 of file picasso.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__ps__rect.html b/doc/html/struct__ps__rect.html new file mode 100644 index 0000000..f3f819a --- /dev/null +++ b/doc/html/struct__ps__rect.html @@ -0,0 +1,149 @@ + + + + + + + +Picasso API: _ps_rect Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _ps_rect Struct Reference
    +
    +
    + +

    A structure that contains location and dimensions of a rectangle. + More...

    + +

    #include <picasso.h>

    + + + + + + + + + + +

    +Data Fields

    float x
     
    float y
     
    float w
     
    float h
     
    +

    Detailed Description

    +

    A structure that contains location and dimensions of a rectangle.

    + +

    Definition at line 188 of file picasso.h.

    +

    Field Documentation

    + +

    ◆ h

    + +
    +
    + + + + +
    float _ps_rect::h
    +
    +

    the height of the rectangle.

    + +

    Definition at line 196 of file picasso.h.

    + +
    +
    + +

    ◆ w

    + +
    +
    + + + + +
    float _ps_rect::w
    +
    +

    the width of the rectangle.

    + +

    Definition at line 194 of file picasso.h.

    + +
    +
    + +

    ◆ x

    + +
    +
    + + + + +
    float _ps_rect::x
    +
    +

    locate left of the rectangle.

    + +

    Definition at line 190 of file picasso.h.

    + +
    +
    + +

    ◆ y

    + +
    +
    + + + + +
    float _ps_rect::y
    +
    +

    locate top of the rectangle.

    + +

    Definition at line 192 of file picasso.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__ps__size.html b/doc/html/struct__ps__size.html new file mode 100644 index 0000000..8a1fdf9 --- /dev/null +++ b/doc/html/struct__ps__size.html @@ -0,0 +1,111 @@ + + + + + + + +Picasso API: _ps_size Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _ps_size Struct Reference
    +
    +
    + +

    A structure that contains width and height values. + More...

    + +

    #include <picasso.h>

    + + + + + + +

    +Data Fields

    float w
     
    float h
     
    +

    Detailed Description

    +

    A structure that contains width and height values.

    + +

    Definition at line 178 of file picasso.h.

    +

    Field Documentation

    + +

    ◆ h

    + +
    +
    + + + + +
    float _ps_size::h
    +
    +

    height value.

    + +

    Definition at line 182 of file picasso.h.

    + +
    +
    + +

    ◆ w

    + +
    +
    + + + + +
    float _ps_size::w
    +
    +

    width value.

    + +

    Definition at line 180 of file picasso.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__psx__image.html b/doc/html/struct__psx__image.html new file mode 100644 index 0000000..a8e9f23 --- /dev/null +++ b/doc/html/struct__psx__image.html @@ -0,0 +1,187 @@ + + + + + + + +Picasso API: _psx_image Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _psx_image Struct Reference
    +
    +
    + +

    A image object. + More...

    + +

    #include <psx_image.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    int width
     
    int height
     
    int pitch
     
    ps_color_format format
     
    psx_image_frameframes
     
    size_t num_frames
     
    +

    Detailed Description

    +

    A image object.

    + +

    Definition at line 57 of file psx_image.h.

    +

    Field Documentation

    + +

    ◆ format

    + +
    +
    + + + + +
    ps_color_format _psx_image::format
    +
    +

    image format

    + +

    Definition at line 65 of file psx_image.h.

    + +
    +
    + +

    ◆ frames

    + +
    +
    + + + + +
    psx_image_frame* _psx_image::frames
    +
    +

    image data frames

    + +

    Definition at line 67 of file psx_image.h.

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    int _psx_image::height
    +
    +

    image height

    + +

    Definition at line 61 of file psx_image.h.

    + +
    +
    + +

    ◆ num_frames

    + +
    +
    + + + + +
    size_t _psx_image::num_frames
    +
    +

    number of frame

    + +

    Definition at line 69 of file psx_image.h.

    + +
    +
    + +

    ◆ pitch

    + +
    +
    + + + + +
    int _psx_image::pitch
    +
    +

    bytes of a scanline

    + +

    Definition at line 63 of file psx_image.h.

    + +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    int _psx_image::width
    +
    +

    image width

    + +

    Definition at line 59 of file psx_image.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__psx__image__frame.html b/doc/html/struct__psx__image__frame.html new file mode 100644 index 0000000..5ba964d --- /dev/null +++ b/doc/html/struct__psx__image__frame.html @@ -0,0 +1,149 @@ + + + + + + + +Picasso API: _psx_image_frame Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _psx_image_frame Struct Reference
    +
    +
    + +

    A frame image data. + More...

    + +

    #include <psx_image.h>

    + + + + + + + + + + +

    +Data Fields

    ps_imageimg
     
    ps_bytedata
     
    size_t size
     
    int duration
     
    +

    Detailed Description

    +

    A frame image data.

    + +

    Definition at line 43 of file psx_image.h.

    +

    Field Documentation

    + +

    ◆ data

    + +
    +
    + + + + +
    ps_byte* _psx_image_frame::data
    +
    +

    image data buffer

    + +

    Definition at line 47 of file psx_image.h.

    + +
    +
    + +

    ◆ duration

    + +
    +
    + + + + +
    int _psx_image_frame::duration
    +
    +

    current frame duration (in milliseconds, 0 ignore)

    + +

    Definition at line 51 of file psx_image.h.

    + +
    +
    + +

    ◆ img

    + +
    +
    + + + + +
    ps_image* _psx_image_frame::img
    +
    +

    picasso image object wrap

    + +

    Definition at line 45 of file psx_image.h.

    + +
    +
    + +

    ◆ size

    + +
    +
    + + + + +
    size_t _psx_image_frame::size
    +
    +

    sizeof image data in bytes

    + +

    Definition at line 49 of file psx_image.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__psx__image__header.html b/doc/html/struct__psx__image__header.html new file mode 100644 index 0000000..47852c4 --- /dev/null +++ b/doc/html/struct__psx__image__header.html @@ -0,0 +1,244 @@ + + + + + + + +Picasso API: _psx_image_header Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _psx_image_header Struct Reference
    +
    +
    + +

    Image reader header define. + More...

    + +

    #include <psx_image_plugin.h>

    + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    void * priv
     
    int width
     
    int height
     
    int pitch
     
    int depth
     
    int bpp
     
    int format
     
    int alpha
     
    int frames
     
    +

    Detailed Description

    +

    Image reader header define.

    + +

    Definition at line 44 of file psx_image_plugin.h.

    +

    Field Documentation

    + +

    ◆ alpha

    + +
    +
    + + + + +
    int _psx_image_header::alpha
    +
    +

    Image has alpha channel. (false: 0, true: 1)

    + +

    Definition at line 60 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ bpp

    + +
    +
    + + + + +
    int _psx_image_header::bpp
    +
    +

    Image bpp

    + +

    Definition at line 56 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ depth

    + +
    +
    + + + + +
    int _psx_image_header::depth
    +
    +

    Image depth.

    + +

    Definition at line 54 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ format

    + +
    +
    + + + + +
    int _psx_image_header::format
    +
    +

    Image color format

    + +

    Definition at line 58 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ frames

    + +
    +
    + + + + +
    int _psx_image_header::frames
    +
    +

    Image frame count.

    + +

    Definition at line 62 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    int _psx_image_header::height
    +
    +

    Image height.

    + +

    Definition at line 50 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ pitch

    + +
    +
    + + + + +
    int _psx_image_header::pitch
    +
    +

    Image pitch of scanline.

    + +

    Definition at line 52 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ priv

    + +
    +
    + + + + +
    void* _psx_image_header::priv
    +
    +

    Private data for operator.

    + +

    Definition at line 46 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    int _psx_image_header::width
    +
    +

    Image width.

    + +

    Definition at line 48 of file psx_image_plugin.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/struct__psx__image__operator.html b/doc/html/struct__psx__image__operator.html new file mode 100644 index 0000000..200fa80 --- /dev/null +++ b/doc/html/struct__psx__image__operator.html @@ -0,0 +1,188 @@ + + + + + + + +Picasso API: _psx_image_operator Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    Picasso API +  2.8 +
    +
    +
    + + + + + + +
    +
    + +
    +
    _psx_image_operator Struct Reference
    +
    +
    + +

    The image operator define. + More...

    + +

    #include <psx_image_plugin.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    int(* read_header_info )(const ps_byte *data, size_t data_len, psx_image_header *header)
     
    int(* decode_image_data )(psx_image_header *header, const psx_image *image, psx_image_frame *frame, int idx, ps_byte *buffer, size_t buffer_len)
     
    int(* release_read_header_info )(psx_image_header *header)
     
    int(* write_header_info )(const psx_image *image, image_writer_fn func, void *param, float quality, psx_image_header *header)
     
    int(* encode_image_data )(psx_image_header *header, const psx_image *image, psx_image_frame *frame, int idx, const ps_byte *buffer, size_t buffer_len, int *ret)
     
    int(* release_write_header_info )(psx_image_header *header)
     
    +

    Detailed Description

    +

    The image operator define.

    +
    See also
    psx_image_register_operator psx_image_unregister_operator
    + +

    Definition at line 69 of file psx_image_plugin.h.

    +

    Field Documentation

    + +

    ◆ decode_image_data

    + +
    +
    + + + + +
    int(* _psx_image_operator::decode_image_data) (psx_image_header *header, const psx_image *image, psx_image_frame *frame, int idx, ps_byte *buffer, size_t buffer_len)
    +
    +

    Read a frame of raw data.

    + +

    Definition at line 73 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ encode_image_data

    + +
    +
    + + + + +
    int(* _psx_image_operator::encode_image_data) (psx_image_header *header, const psx_image *image, psx_image_frame *frame, int idx, const ps_byte *buffer, size_t buffer_len, int *ret)
    +
    +

    Write image data frames.

    + +

    Definition at line 80 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ read_header_info

    + +
    +
    + + + + +
    int(* _psx_image_operator::read_header_info) (const ps_byte *data, size_t data_len, psx_image_header *header)
    +
    +

    Create a image reader header.

    + +

    Definition at line 71 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ release_read_header_info

    + +
    +
    + + + + +
    int(* _psx_image_operator::release_read_header_info) (psx_image_header *header)
    +
    +

    Release reader resources.

    + +

    Definition at line 75 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ release_write_header_info

    + +
    +
    + + + + +
    int(* _psx_image_operator::release_write_header_info) (psx_image_header *header)
    +
    +

    Release writer resources.

    + +

    Definition at line 82 of file psx_image_plugin.h.

    + +
    +
    + +

    ◆ write_header_info

    + +
    +
    + + + + +
    int(* _psx_image_operator::write_header_info) (const psx_image *image, image_writer_fn func, void *param, float quality, psx_image_header *header)
    +
    +

    Create a image writer header.

    + +

    Definition at line 77 of file psx_image_plugin.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doc/html/sync_off.png b/doc/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/html/sync_on.png b/doc/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/html/tab_a.png b/doc/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/html/tab_b.png b/doc/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/html/tabs.css b/doc/html/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/doc/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/doc/latex/Makefile b/doc/latex/Makefile new file mode 100644 index 0000000..877c9cc --- /dev/null +++ b/doc/latex/Makefile @@ -0,0 +1,23 @@ +LATEX_CMD=pdflatex + +all: refman.pdf + +pdf: refman.pdf + +refman.pdf: clean refman.tex + $(LATEX_CMD) refman + makeindex refman.idx + $(LATEX_CMD) refman + latex_count=8 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + $(LATEX_CMD) refman ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + makeindex refman.idx + $(LATEX_CMD) refman + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/doc/latex/annotated.tex b/doc/latex/annotated.tex new file mode 100644 index 0000000..80769f5 --- /dev/null +++ b/doc/latex/annotated.tex @@ -0,0 +1,13 @@ +\doxysection{Data Structures} +Here are the data structures with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{\textbf{ \+\_\+ps\+\_\+color} \\*A structure that contains rgba values for a color }{\pageref{struct__ps__color}}{} +\item\contentsline{section}{\textbf{ \+\_\+ps\+\_\+font\+\_\+info} \\*A structure that contains font information }{\pageref{struct__ps__font__info}}{} +\item\contentsline{section}{\textbf{ \+\_\+ps\+\_\+glyph} \\*A character glyph of a font }{\pageref{struct__ps__glyph}}{} +\item\contentsline{section}{\textbf{ \+\_\+ps\+\_\+point} \\*A structure that contains a point in a two-\/dimensional coordinate system }{\pageref{struct__ps__point}}{} +\item\contentsline{section}{\textbf{ \+\_\+ps\+\_\+rect} \\*A structure that contains location and dimensions of a rectangle }{\pageref{struct__ps__rect}}{} +\item\contentsline{section}{\textbf{ \+\_\+ps\+\_\+size} \\*A structure that contains width and height values }{\pageref{struct__ps__size}}{} +\item\contentsline{section}{\textbf{ \+\_\+psx\+\_\+image} \\*A image object }{\pageref{struct__psx__image}}{} +\item\contentsline{section}{\textbf{ \+\_\+psx\+\_\+image\+\_\+frame} \\*A frame image data }{\pageref{struct__psx__image__frame}}{} +\item\contentsline{section}{\textbf{ \+\_\+psx\+\_\+image\+\_\+header} \\*Image reader header define }{\pageref{struct__psx__image__header}}{} +\item\contentsline{section}{\textbf{ \+\_\+psx\+\_\+image\+\_\+operator} \\*The image operator define }{\pageref{struct__psx__image__operator}}{} +\end{DoxyCompactList} diff --git a/doc/latex/doxygen.sty b/doc/latex/doxygen.sty new file mode 100644 index 0000000..78a5254 --- /dev/null +++ b/doc/latex/doxygen.sty @@ -0,0 +1,576 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{calc} +\RequirePackage{float} +%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{longtable_doxygen} +\RequirePackage{tabu_doxygen} +\RequirePackage{fancyvrb} +\RequirePackage{tabularx} +\RequirePackage{multirow} +\RequirePackage{hanging} +\RequirePackage{ifpdf} +\RequirePackage{adjustbox} +\RequirePackage{amssymb} +\RequirePackage{stackengine} +\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyHorRuler}[1]{% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{#1=0}% + {% + \hrule% + }% + {% + \hrulefilll% + }% +} +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + %\setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
     ... 
    +\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} +% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. +\newlength{\CodeWidthChar} +\newlength{\CodeHeightChar} +\settowidth{\CodeWidthChar}{?} +\settoheight{\CodeHeightChar}{?} +% Necessary for hanging indent +\newlength{\DoxyCodeWidth} + +\newcommand\DoxyCodeLine[1]{\hangpara{\DoxyCodeWidth}{1}{#1}\par} + +\newcommand\NiceSpace{% + \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}[1]{% + \par% + \scriptsize% + \normalfont\ttfamily% + \rightskip0pt plus 1fil% + \settowidth{\DoxyCodeWidth}{000000}% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{\equal{#1}{0}} + { + {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% + } + { + {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% + } + +}{% + \normalfont% + \normalsize% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% +} + +% Redefining not defined characters, i.e. "Replacement Character" in tex output. +\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% + \textcolor{white}{\sffamily\bfseries\small ?}}{% + \rotatebox{45}{$\blacksquare$}}}} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}[1]{% + \DoxyCode{#1}% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
      ...
    ) +\newenvironment{DoxyEnumerate}{% + \enumerate% +}{% + \endenumerate% +} + +% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) +\newenvironment{DoxyItemize}{% + \itemize% +}{% + \enditemize% +} + +% Used by description lists (using
    ...
    ) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \begin{center}% +}{% + \end{center}% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% +}{% + \end{center}% +} + +% Used by @image +% (only if inline is specified) +\newenvironment{DoxyInlineImage}{% +}{% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \tabulinesep=1mm% + \par% + \ifthenelse{\equal{#1}{}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm +\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% +{\end{longtabu*}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% +{\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% possibility to have sections etc. be within the margins +% unfortunately had to copy part of book.cls and add \raggedright +\makeatletter +\newcommand\doxysection{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\raggedright\normalfont\Large\bfseries}} +\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\large\bfseries}} +\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxyparagraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\raggedright\normalfont\normalsize\bfseries}} +\makeatother +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% +\refstepcounter{figure}% +\@dblarg{\@caption{figure}}} +\makeatother diff --git a/doc/latex/files.tex b/doc/latex/files.tex new file mode 100644 index 0000000..a072509 --- /dev/null +++ b/doc/latex/files.tex @@ -0,0 +1,6 @@ +\doxysection{File List} +Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{include/\textbf{ picasso.\+h} }{\pageref{picasso_8h}}{} +\item\contentsline{section}{include/images/\textbf{ psx\+\_\+image.\+h} }{\pageref{psx__image_8h}}{} +\item\contentsline{section}{include/images/\textbf{ psx\+\_\+image\+\_\+plugin.\+h} }{\pageref{psx__image__plugin_8h}}{} +\end{DoxyCompactList} diff --git a/doc/latex/group__attr.tex b/doc/latex/group__attr.tex new file mode 100644 index 0000000..f1fc8f0 --- /dev/null +++ b/doc/latex/group__attr.tex @@ -0,0 +1,494 @@ +\doxysection{Attribute} +\label{group__attr}\index{Attribute@{Attribute}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__attr_ga1fca7fa05148f8fc45f2f192d9dcd7ab}} +typedef enum \textbf{ \+\_\+ps\+\_\+composite} \textbf{ ps\+\_\+composite} +\begin{DoxyCompactList}\small\item\em Compositing operations for graphics context. \end{DoxyCompactList}\item +\mbox{\label{group__attr_gac758e5cc216b548e1ed9f7dca348d70e}} +typedef enum \textbf{ \+\_\+ps\+\_\+filter} \textbf{ ps\+\_\+filter} +\begin{DoxyCompactList}\small\item\em Graphics quality for rendering an image. \end{DoxyCompactList}\item +\mbox{\label{group__attr_gaba85cf17ab39df549c492afc7f72ac33}} +typedef enum \textbf{ \+\_\+ps\+\_\+fill\+\_\+rule} \textbf{ ps\+\_\+fill\+\_\+rule} +\begin{DoxyCompactList}\small\item\em Fill rules for graphics. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+composite} \{ \newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+L\+E\+AR}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+RC}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+O\+V\+ER}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+IN}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+O\+UT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+A\+T\+OP}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+ST}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+O\+V\+ER}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+IN}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+O\+UT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+A\+T\+OP}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+X\+OR}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+A\+R\+K\+EN}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+L\+I\+G\+H\+T\+EN}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+O\+V\+E\+R\+L\+AY}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+C\+R\+E\+EN}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+M\+U\+L\+T\+I\+P\+LY}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+P\+L\+US}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+M\+I\+N\+US}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+E\+X\+C\+L\+U\+S\+I\+ON}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+I\+F\+F\+E\+R\+E\+N\+CE}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+O\+F\+T\+L\+I\+G\+HT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+H\+A\+R\+D\+L\+I\+G\+HT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+B\+U\+RN}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+O\+D\+GE}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+O\+N\+T\+R\+A\+ST}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+I\+N\+V\+E\+RT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+I\+N\+V\+E\+R\+T\+\_\+\+B\+L\+E\+ND}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+H\+UE}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+A\+T\+U\+R\+A\+T\+I\+ON}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+O\+L\+OR}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+L\+U\+M\+I\+N\+O\+S\+I\+TY}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+E\+R\+R\+OR} + \} +\begin{DoxyCompactList}\small\item\em Compositing operations for graphics context. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+filter} \{ \newline +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+N\+E\+A\+R\+E\+ST}, +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+B\+I\+L\+I\+N\+E\+AR}, +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+G\+A\+U\+S\+S\+I\+AN}, +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+B\+I\+C\+U\+B\+IC}, +\newline +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+Q\+U\+A\+D\+R\+IC}, +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+U\+N\+K\+N\+O\+WN} + \} +\begin{DoxyCompactList}\small\item\em Graphics quality for rendering an image. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+fill\+\_\+rule} \{ \textbf{ F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+W\+I\+N\+D\+I\+NG}, +\textbf{ F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+E\+V\+E\+N\+\_\+\+O\+DD}, +\textbf{ F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+E\+R\+R\+OR} + \} +\begin{DoxyCompactList}\small\item\em Fill rules for graphics. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+composite} P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+composite\+\_\+operator} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+composite} composite) +\begin{DoxyCompactList}\small\item\em Set composites opertaions for graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+filter} P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+filter} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+filter} filter) +\begin{DoxyCompactList}\small\item\em Set interpolation filter for graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+fill\+\_\+rule} P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+fill\+\_\+rule} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+fill\+\_\+rule} rule) +\begin{DoxyCompactList}\small\item\em Set fill rule for graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+alpha} (\textbf{ ps\+\_\+context} $\ast$ctx, float alpha) +\begin{DoxyCompactList}\small\item\em Set the opacity level for objects drawn in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+gamma} (\textbf{ ps\+\_\+context} $\ast$ctx, float gamma) +\begin{DoxyCompactList}\small\item\em Set the gamma value for the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+antialias} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+bool} antialias) +\begin{DoxyCompactList}\small\item\em Set whether the Anti-\/aliasing should be turn on. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+blur} (\textbf{ ps\+\_\+context} $\ast$ctx, float blur) +\begin{DoxyCompactList}\small\item\em Set the blur level for the graphic context. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__attr_gafd7a876bb41fb13485fc6b27696df1d1}} +\index{Attribute@{Attribute}!\_ps\_composite@{\_ps\_composite}} +\index{\_ps\_composite@{\_ps\_composite}!Attribute@{Attribute}} +\doxysubsubsection{\_ps\_composite} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+composite}} + + + +Compositing operations for graphics context. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_CLEAR@{COMPOSITE\_CLEAR}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_CLEAR@{COMPOSITE\_CLEAR}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ac7b99ec86c23d66f64040172a578d622}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+L\+E\+AR&Clear operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_SRC@{COMPOSITE\_SRC}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_SRC@{COMPOSITE\_SRC}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a53ad8348b59a8faf0168cc1a08110c69}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+RC&Source operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_SRC\_OVER@{COMPOSITE\_SRC\_OVER}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_SRC\_OVER@{COMPOSITE\_SRC\_OVER}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a40e17ce34eade6a1448b434364c21c4b}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+O\+V\+ER&Source over operation. (Default) \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_SRC\_IN@{COMPOSITE\_SRC\_IN}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_SRC\_IN@{COMPOSITE\_SRC\_IN}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a2074a8d4c4ba93dfb01115a7654ecbe8}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+IN&Source in operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_SRC\_OUT@{COMPOSITE\_SRC\_OUT}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_SRC\_OUT@{COMPOSITE\_SRC\_OUT}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ad2b2fa8b3e9e1911cf6ccb357270c4cc}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+O\+UT&Source out operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_SRC\_ATOP@{COMPOSITE\_SRC\_ATOP}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_SRC\_ATOP@{COMPOSITE\_SRC\_ATOP}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1aaa66229486b9c0c55f7370c7d329aad1}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+A\+T\+OP&Source atop operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_DST@{COMPOSITE\_DST}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_DST@{COMPOSITE\_DST}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ae764d63860c47715b7edd6005bfb7736}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+ST&Destination operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_DST\_OVER@{COMPOSITE\_DST\_OVER}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_DST\_OVER@{COMPOSITE\_DST\_OVER}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a4876bba112de09b3c06d431a7ddf237c}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+O\+V\+ER&Destination over operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_DST\_IN@{COMPOSITE\_DST\_IN}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_DST\_IN@{COMPOSITE\_DST\_IN}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a1c08a5c37957d927ba85b55f4b67e036}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+IN&Destination in operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_DST\_OUT@{COMPOSITE\_DST\_OUT}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_DST\_OUT@{COMPOSITE\_DST\_OUT}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ae2805a7226acd2df8b28f0a16a3896dd}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+O\+UT&Destination out operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_DST\_ATOP@{COMPOSITE\_DST\_ATOP}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_DST\_ATOP@{COMPOSITE\_DST\_ATOP}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ad55c780e20e9b2d344fa6065c0d42c6c}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+A\+T\+OP&Destination atop operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_XOR@{COMPOSITE\_XOR}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_XOR@{COMPOSITE\_XOR}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a9dc53a255d4b362cc4cb30621ba04722}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+X\+OR&Xor operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_DARKEN@{COMPOSITE\_DARKEN}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_DARKEN@{COMPOSITE\_DARKEN}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ac0d09b28ed26fe930698c10ec3e2683e}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+A\+R\+K\+EN&Source darker operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_LIGHTEN@{COMPOSITE\_LIGHTEN}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_LIGHTEN@{COMPOSITE\_LIGHTEN}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a6759ce31f11f9be012209f17539a75ad}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+L\+I\+G\+H\+T\+EN&Source lighter operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_OVERLAY@{COMPOSITE\_OVERLAY}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_OVERLAY@{COMPOSITE\_OVERLAY}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1aa9bc52e6efe65aec741cf4757445e820}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+O\+V\+E\+R\+L\+AY&Overlay operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_SCREEN@{COMPOSITE\_SCREEN}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_SCREEN@{COMPOSITE\_SCREEN}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1adcad3560b11b977ddb9e521fab413b6e}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+C\+R\+E\+EN&Screen operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_MULTIPLY@{COMPOSITE\_MULTIPLY}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_MULTIPLY@{COMPOSITE\_MULTIPLY}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ac84ac653a45a9a677daaef6e868cb417}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+M\+U\+L\+T\+I\+P\+LY&Multiply operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_PLUS@{COMPOSITE\_PLUS}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_PLUS@{COMPOSITE\_PLUS}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a3258b8d838a643c4b3dacb0be703b4c6}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+P\+L\+US&Plus operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_MINUS@{COMPOSITE\_MINUS}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_MINUS@{COMPOSITE\_MINUS}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1aa5e9e0064983152c370ab640c57a5c66}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+M\+I\+N\+US&Minus operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_EXCLUSION@{COMPOSITE\_EXCLUSION}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_EXCLUSION@{COMPOSITE\_EXCLUSION}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1aadfb03427739dc16770fe49b5e9c1bcb}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+E\+X\+C\+L\+U\+S\+I\+ON&Exclusion operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_DIFFERENCE@{COMPOSITE\_DIFFERENCE}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_DIFFERENCE@{COMPOSITE\_DIFFERENCE}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a8cea1e908b22b24f546069cef049a696}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+I\+F\+F\+E\+R\+E\+N\+CE&Difference operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_SOFTLIGHT@{COMPOSITE\_SOFTLIGHT}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_SOFTLIGHT@{COMPOSITE\_SOFTLIGHT}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ae1f016570ff940c130f7a353c4ae09af}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+O\+F\+T\+L\+I\+G\+HT&Softlight operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_HARDLIGHT@{COMPOSITE\_HARDLIGHT}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_HARDLIGHT@{COMPOSITE\_HARDLIGHT}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a74ee7d438b8304d794434a65293e0c30}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+H\+A\+R\+D\+L\+I\+G\+HT&Hardlight operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_BURN@{COMPOSITE\_BURN}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_BURN@{COMPOSITE\_BURN}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a71d62a3a9b37663ee8f6e900d9f52370}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+B\+U\+RN&Burn operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_DODGE@{COMPOSITE\_DODGE}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_DODGE@{COMPOSITE\_DODGE}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a4e7ec1a83d88dbd594e1c7c0bbe17ee0}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+O\+D\+GE&Dodge operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_CONTRAST@{COMPOSITE\_CONTRAST}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_CONTRAST@{COMPOSITE\_CONTRAST}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a55218ca957db20584a9279d271449bd9}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+O\+N\+T\+R\+A\+ST&Contrast operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_INVERT@{COMPOSITE\_INVERT}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_INVERT@{COMPOSITE\_INVERT}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a79ad8320211c18b10011b1072e28a772}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+I\+N\+V\+E\+RT&Invert operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_INVERT\_BLEND@{COMPOSITE\_INVERT\_BLEND}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_INVERT\_BLEND@{COMPOSITE\_INVERT\_BLEND}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1abb0ab6a9e9a2a9aaf5857df0fd11ab66}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+I\+N\+V\+E\+R\+T\+\_\+\+B\+L\+E\+ND&Invert blend operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_HUE@{COMPOSITE\_HUE}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_HUE@{COMPOSITE\_HUE}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a7e761aa71b473f854b2a2a4d486b8211}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+H\+UE&Hue operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_SATURATION@{COMPOSITE\_SATURATION}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_SATURATION@{COMPOSITE\_SATURATION}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a08b4485d38d22bd9f8b87d2da1c390fe}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+A\+T\+U\+R\+A\+T\+I\+ON&Saturation operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_COLOR@{COMPOSITE\_COLOR}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_COLOR@{COMPOSITE\_COLOR}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1a12d0675be10e0565176c1b50ca183681}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+O\+L\+OR&Color operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_LUMINOSITY@{COMPOSITE\_LUMINOSITY}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_LUMINOSITY@{COMPOSITE\_LUMINOSITY}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1af356b16d08219e0e03c254387575b097}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+L\+U\+M\+I\+N\+O\+S\+I\+TY&Luminosity operation. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COMPOSITE\_ERROR@{COMPOSITE\_ERROR}!Attribute@{Attribute}}\index{Attribute@{Attribute}!COMPOSITE\_ERROR@{COMPOSITE\_ERROR}}}\mbox{\label{group__attr_ggafd7a876bb41fb13485fc6b27696df1d1ad10c60119343eb9e22397012e5ccb242}} +C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+E\+R\+R\+OR&Error value. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1508 of file picasso.\+h. + +\mbox{\label{group__attr_ga599ef5638a731cea324edd611b23bc9d}} +\index{Attribute@{Attribute}!\_ps\_fill\_rule@{\_ps\_fill\_rule}} +\index{\_ps\_fill\_rule@{\_ps\_fill\_rule}!Attribute@{Attribute}} +\doxysubsubsection{\_ps\_fill\_rule} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+fill\+\_\+rule}} + + + +Fill rules for graphics. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILL\_RULE\_WINDING@{FILL\_RULE\_WINDING}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILL\_RULE\_WINDING@{FILL\_RULE\_WINDING}}}\mbox{\label{group__attr_gga599ef5638a731cea324edd611b23bc9dae0110e4610e181cb25db62e4be7ae427}} +F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+W\+I\+N\+D\+I\+NG&Nonzero winding fill rule. (Default) \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILL\_RULE\_EVEN\_ODD@{FILL\_RULE\_EVEN\_ODD}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILL\_RULE\_EVEN\_ODD@{FILL\_RULE\_EVEN\_ODD}}}\mbox{\label{group__attr_gga599ef5638a731cea324edd611b23bc9daf6ace5c8f06b517f260089618603a20e}} +F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+E\+V\+E\+N\+\_\+\+O\+DD&Even-\/odd fill rule. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILL\_RULE\_ERROR@{FILL\_RULE\_ERROR}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILL\_RULE\_ERROR@{FILL\_RULE\_ERROR}}}\mbox{\label{group__attr_gga599ef5638a731cea324edd611b23bc9da44985b77a49dcaf554e6969a43399aeb}} +F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+E\+R\+R\+OR&Error value. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1642 of file picasso.\+h. + +\mbox{\label{group__attr_ga8012bc4b823a0ec5de4ed7f98dddf54a}} +\index{Attribute@{Attribute}!\_ps\_filter@{\_ps\_filter}} +\index{\_ps\_filter@{\_ps\_filter}!Attribute@{Attribute}} +\doxysubsubsection{\_ps\_filter} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+filter}} + + + +Graphics quality for rendering an image. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILTER\_NEAREST@{FILTER\_NEAREST}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILTER\_NEAREST@{FILTER\_NEAREST}}}\mbox{\label{group__attr_gga8012bc4b823a0ec5de4ed7f98dddf54aa0efb9d9eef22137dcfeb824d7b3463fd}} +F\+I\+L\+T\+E\+R\+\_\+\+N\+E\+A\+R\+E\+ST&No interpolation filter. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILTER\_BILINEAR@{FILTER\_BILINEAR}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILTER\_BILINEAR@{FILTER\_BILINEAR}}}\mbox{\label{group__attr_gga8012bc4b823a0ec5de4ed7f98dddf54aaaee14116830942a0230e7c0747df9265}} +F\+I\+L\+T\+E\+R\+\_\+\+B\+I\+L\+I\+N\+E\+AR&Bilinear interpolation filter. (Default) \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILTER\_GAUSSIAN@{FILTER\_GAUSSIAN}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILTER\_GAUSSIAN@{FILTER\_GAUSSIAN}}}\mbox{\label{group__attr_gga8012bc4b823a0ec5de4ed7f98dddf54aae3212817e27b220dd007bf1b808822a6}} +F\+I\+L\+T\+E\+R\+\_\+\+G\+A\+U\+S\+S\+I\+AN&Gaussian interpolation filter. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILTER\_BICUBIC@{FILTER\_BICUBIC}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILTER\_BICUBIC@{FILTER\_BICUBIC}}}\mbox{\label{group__attr_gga8012bc4b823a0ec5de4ed7f98dddf54aa4d0bf2bbf408f7fc7bef617a7beae796}} +F\+I\+L\+T\+E\+R\+\_\+\+B\+I\+C\+U\+B\+IC&Bicubic interpolation filter. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILTER\_QUADRIC@{FILTER\_QUADRIC}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILTER\_QUADRIC@{FILTER\_QUADRIC}}}\mbox{\label{group__attr_gga8012bc4b823a0ec5de4ed7f98dddf54aa3be961d11109e104e44ff9d7efa70267}} +F\+I\+L\+T\+E\+R\+\_\+\+Q\+U\+A\+D\+R\+IC&Quadric interpolation filter. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FILTER\_UNKNOWN@{FILTER\_UNKNOWN}!Attribute@{Attribute}}\index{Attribute@{Attribute}!FILTER\_UNKNOWN@{FILTER\_UNKNOWN}}}\mbox{\label{group__attr_gga8012bc4b823a0ec5de4ed7f98dddf54aa43da6f0ed91fa4bbc2f4dc2f7e7064a4}} +F\+I\+L\+T\+E\+R\+\_\+\+U\+N\+K\+N\+O\+WN&Error value. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1596 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__attr_ga4ec5db989110ccd6136ead8128116a2e}} +\index{Attribute@{Attribute}!ps\_set\_alpha@{ps\_set\_alpha}} +\index{ps\_set\_alpha@{ps\_set\_alpha}!Attribute@{Attribute}} +\doxysubsubsection{ps\_set\_alpha()} +{\footnotesize\ttfamily float ps\+\_\+set\+\_\+alpha (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{alpha }\end{DoxyParamCaption})} + + + +Set the opacity level for objects drawn in graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em alpha} & A value that specifies the opacity level from transparent to opaque(0 $\sim$ 1). Default level is opaque (1).\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the old level. If the function fails, the return value is 0. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+gamma}{p.}{group__attr_gae3926e575ca6445abda0ed2cc525d8a9}, \doxyref{ps\+\_\+set\+\_\+blur}{p.}{group__attr_ga5b079950f8e031badba41591a0e8d424}, \doxyref{ps\+\_\+set\+\_\+antialias}{p.}{group__attr_ga02de6bafb811faebb540e59a2b6d8f6e} +\end{DoxySeeAlso} +\mbox{\label{group__attr_ga02de6bafb811faebb540e59a2b6d8f6e}} +\index{Attribute@{Attribute}!ps\_set\_antialias@{ps\_set\_antialias}} +\index{ps\_set\_antialias@{ps\_set\_antialias}!Attribute@{Attribute}} +\doxysubsubsection{ps\_set\_antialias()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+antialias (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+bool}}]{antialias }\end{DoxyParamCaption})} + + + +Set whether the Anti-\/aliasing should be turn on. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em antialias} & Boolean value whether the anti-\/aliasing is turn on. (True default)\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+alpha}{p.}{group__attr_ga4ec5db989110ccd6136ead8128116a2e}, \doxyref{ps\+\_\+set\+\_\+blur}{p.}{group__attr_ga5b079950f8e031badba41591a0e8d424}, \doxyref{ps\+\_\+set\+\_\+gamma}{p.}{group__attr_gae3926e575ca6445abda0ed2cc525d8a9} +\end{DoxySeeAlso} +\mbox{\label{group__attr_ga5b079950f8e031badba41591a0e8d424}} +\index{Attribute@{Attribute}!ps\_set\_blur@{ps\_set\_blur}} +\index{ps\_set\_blur@{ps\_set\_blur}!Attribute@{Attribute}} +\doxysubsubsection{ps\_set\_blur()} +{\footnotesize\ttfamily float ps\+\_\+set\+\_\+blur (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{blur }\end{DoxyParamCaption})} + + + +Set the blur level for the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em blur} & A value that specifies the blur level (0 $\sim$ 1). Default value is none blur (0).\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the old level. If the function fails, the return value is 0. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+alpha}{p.}{group__attr_ga4ec5db989110ccd6136ead8128116a2e}, \doxyref{ps\+\_\+set\+\_\+gamma}{p.}{group__attr_gae3926e575ca6445abda0ed2cc525d8a9}, \doxyref{ps\+\_\+set\+\_\+antialias}{p.}{group__attr_ga02de6bafb811faebb540e59a2b6d8f6e} +\end{DoxySeeAlso} +\mbox{\label{group__attr_ga5c3ed51fc880feb1516eea2a4767bbe2}} +\index{Attribute@{Attribute}!ps\_set\_composite\_operator@{ps\_set\_composite\_operator}} +\index{ps\_set\_composite\_operator@{ps\_set\_composite\_operator}!Attribute@{Attribute}} +\doxysubsubsection{ps\_set\_composite\_operator()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+composite} ps\+\_\+set\+\_\+composite\+\_\+operator (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+composite}}]{composite }\end{DoxyParamCaption})} + + + +Set composites opertaions for graphics context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em composite} & The Composite operation to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the old operation. If the function fails, the return value is C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+E\+R\+R\+OR. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+filter}{p.}{group__attr_ga2973043ffd48bb4f4b4e1031a98dab1d}, \doxyref{ps\+\_\+set\+\_\+fill\+\_\+rule}{p.}{group__attr_gae7b9007749db11a17b433e9e81ddeea2} +\end{DoxySeeAlso} +\mbox{\label{group__attr_gae7b9007749db11a17b433e9e81ddeea2}} +\index{Attribute@{Attribute}!ps\_set\_fill\_rule@{ps\_set\_fill\_rule}} +\index{ps\_set\_fill\_rule@{ps\_set\_fill\_rule}!Attribute@{Attribute}} +\doxysubsubsection{ps\_set\_fill\_rule()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+fill\+\_\+rule} ps\+\_\+set\+\_\+fill\+\_\+rule (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+fill\+\_\+rule}}]{rule }\end{DoxyParamCaption})} + + + +Set fill rule for graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em rule} & The fill rule to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the old rule. If the function fails, the return value is F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+E\+R\+R\+OR. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+composite\+\_\+operator}{p.}{group__attr_ga5c3ed51fc880feb1516eea2a4767bbe2}, \doxyref{ps\+\_\+set\+\_\+filter}{p.}{group__attr_ga2973043ffd48bb4f4b4e1031a98dab1d} +\end{DoxySeeAlso} +\mbox{\label{group__attr_ga2973043ffd48bb4f4b4e1031a98dab1d}} +\index{Attribute@{Attribute}!ps\_set\_filter@{ps\_set\_filter}} +\index{ps\_set\_filter@{ps\_set\_filter}!Attribute@{Attribute}} +\doxysubsubsection{ps\_set\_filter()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+filter} ps\+\_\+set\+\_\+filter (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+filter}}]{filter }\end{DoxyParamCaption})} + + + +Set interpolation filter for graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em filter} & The interpolation filter to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the old filter. If the function fails, the return value is F\+I\+L\+T\+E\+R\+\_\+\+U\+N\+K\+N\+O\+WN. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+composite\+\_\+operator}{p.}{group__attr_ga5c3ed51fc880feb1516eea2a4767bbe2}, \doxyref{ps\+\_\+set\+\_\+fill\+\_\+rule}{p.}{group__attr_gae7b9007749db11a17b433e9e81ddeea2} +\end{DoxySeeAlso} +\mbox{\label{group__attr_gae3926e575ca6445abda0ed2cc525d8a9}} +\index{Attribute@{Attribute}!ps\_set\_gamma@{ps\_set\_gamma}} +\index{ps\_set\_gamma@{ps\_set\_gamma}!Attribute@{Attribute}} +\doxysubsubsection{ps\_set\_gamma()} +{\footnotesize\ttfamily float ps\+\_\+set\+\_\+gamma (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{gamma }\end{DoxyParamCaption})} + + + +Set the gamma value for the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em gamma} & A value that specifies the gamma (0 $\sim$ 3). Default value is 1.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the old one. If the function fails, the return value is 0. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+alpha}{p.}{group__attr_ga4ec5db989110ccd6136ead8128116a2e}, \doxyref{ps\+\_\+set\+\_\+blur}{p.}{group__attr_ga5b079950f8e031badba41591a0e8d424}, \doxyref{ps\+\_\+set\+\_\+antialias}{p.}{group__attr_ga02de6bafb811faebb540e59a2b6d8f6e} +\end{DoxySeeAlso} diff --git a/doc/latex/group__canvas.tex b/doc/latex/group__canvas.tex new file mode 100644 index 0000000..83774b1 --- /dev/null +++ b/doc/latex/group__canvas.tex @@ -0,0 +1,446 @@ +\doxysection{Canvas} +\label{group__canvas}\index{Canvas@{Canvas}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__canvas_ga79f9abf66c44773958bf7a91519e4163}} +typedef enum \textbf{ \+\_\+ps\+\_\+color\+\_\+format} \textbf{ ps\+\_\+color\+\_\+format} +\begin{DoxyCompactList}\small\item\em Pixel formats of canvas or image. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+color\+\_\+format} \{ \newline +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+BA}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+A\+R\+GB}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+A\+B\+GR}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+B\+G\+RA}, +\newline +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+GB}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+B\+GR}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+B565}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+B555}, +\newline +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+U\+N\+K\+N\+O\+WN} + \} +\begin{DoxyCompactList}\small\item\em Pixel formats of canvas or image. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create} (\textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new canvas using the given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch) +\begin{DoxyCompactList}\small\item\em Create a new canvas using a given address in memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create\+\_\+compatible} (const \textbf{ ps\+\_\+canvas} $\ast$canvas, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new canvas to compatible with an existing canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas} (\textbf{ ps\+\_\+canvas} $\ast$canvas, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Create a new canvas using part of an existing canvas in same pixel buffer. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image} (\textbf{ ps\+\_\+image} $\ast$img, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Create a new canvas using part of an existing ps\+\_\+image object in same pixel buffer. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+replace\+\_\+data} (\textbf{ ps\+\_\+canvas} $\ast$canvas, \textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch) +\begin{DoxyCompactList}\small\item\em Replace a canvas target rendering buffer address in memory, which is only use for canvas create by {\itshape ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+ref} (\textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the canvas by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+unref} (\textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the canvas object. If the reference count on the canvas falls to 0, the canvas is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+get\+\_\+size} (const \textbf{ ps\+\_\+canvas} $\ast$canvas, \textbf{ ps\+\_\+size} $\ast$rsize) +\begin{DoxyCompactList}\small\item\em Return the size of the canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+color\+\_\+format} P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+get\+\_\+format} (const \textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Return the pixel format of the canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+set\+\_\+mask} (\textbf{ ps\+\_\+canvas} $\ast$canvas, const \textbf{ ps\+\_\+mask} $\ast$mask) +\begin{DoxyCompactList}\small\item\em Set a new mask into an existing canvas object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+reset\+\_\+mask} (\textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Clear the mask from the canvas object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+bitblt} (\textbf{ ps\+\_\+canvas} $\ast$src, const \textbf{ ps\+\_\+rect} $\ast$rect, \textbf{ ps\+\_\+canvas} $\ast$dst, const \textbf{ ps\+\_\+point} $\ast$location) +\begin{DoxyCompactList}\small\item\em Copy raster data between two canvas objects. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__canvas_ga5bdaa5d6c1e23f6f8f3200b424301665}} +\index{Canvas@{Canvas}!\_ps\_color\_format@{\_ps\_color\_format}} +\index{\_ps\_color\_format@{\_ps\_color\_format}!Canvas@{Canvas}} +\doxysubsubsection{\_ps\_color\_format} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+color\+\_\+format}} + + + +Pixel formats of canvas or image. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_RGBA@{COLOR\_FORMAT\_RGBA}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_RGBA@{COLOR\_FORMAT\_RGBA}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665aee6b4d617bcbf36911dd6ffce53a8b72}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+BA&32bpp, 8bpc, R\+G\+BA color space. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_ARGB@{COLOR\_FORMAT\_ARGB}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_ARGB@{COLOR\_FORMAT\_ARGB}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665ad2e8a4b92b0ffec09eb9a64a3a3fc1c6}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+A\+R\+GB&32bpp, 8bpc, A\+R\+GB color space. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_ABGR@{COLOR\_FORMAT\_ABGR}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_ABGR@{COLOR\_FORMAT\_ABGR}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665ab028a931052271713c2e80c7a414697d}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+A\+B\+GR&32bpp, 8bpc, A\+B\+GR color space. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_BGRA@{COLOR\_FORMAT\_BGRA}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_BGRA@{COLOR\_FORMAT\_BGRA}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665adeb38baa7bee05829e6f129e92e71185}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+B\+G\+RA&32bpp, 8bpc, B\+G\+RA color space. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_RGB@{COLOR\_FORMAT\_RGB}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_RGB@{COLOR\_FORMAT\_RGB}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665aabf927e9b59e21238f4e27335cfb8890}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+GB&24bpp, 8bpc, R\+GB color space. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_BGR@{COLOR\_FORMAT\_BGR}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_BGR@{COLOR\_FORMAT\_BGR}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665a85fa8fa8cc29e59eb90537c07b8241fc}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+B\+GR&24bpp, 8bpc, B\+GR color space. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_RGB565@{COLOR\_FORMAT\_RGB565}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_RGB565@{COLOR\_FORMAT\_RGB565}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665a0ccdaa00f0ca75ec6613d9bc7f106181}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+B565&16bpp, 5/6bpc, R\+GB color space. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_RGB555@{COLOR\_FORMAT\_RGB555}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_RGB555@{COLOR\_FORMAT\_RGB555}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665a7d1aa54654f4d3700e7db3aa569b0bba}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+B555&16bpp, 5bpc, R\+GB color space. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{COLOR\_FORMAT\_UNKNOWN@{COLOR\_FORMAT\_UNKNOWN}!Canvas@{Canvas}}\index{Canvas@{Canvas}!COLOR\_FORMAT\_UNKNOWN@{COLOR\_FORMAT\_UNKNOWN}}}\mbox{\label{group__canvas_gga5bdaa5d6c1e23f6f8f3200b424301665ab58141bf00d632ba06094d3c4b6446c2}} +C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+U\+N\+K\+N\+O\+WN&Unsupported color space. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 394 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__canvas_ga3fd90de48e503abfb0e55f525fe43056}} +\index{Canvas@{Canvas}!ps\_canvas\_bitblt@{ps\_canvas\_bitblt}} +\index{ps\_canvas\_bitblt@{ps\_canvas\_bitblt}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_bitblt()} +{\footnotesize\ttfamily void ps\+\_\+canvas\+\_\+bitblt (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{src, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect, }\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{dst, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{location }\end{DoxyParamCaption})} + + + +Copy raster data between two canvas objects. + + +\begin{DoxyParams}{Parameters} +{\em src} & The pointer to source canvas object. \\ +\hline +{\em rect} & The rectangle area will be copied in source canvas, N\+U\+LL mean the whole area. \\ +\hline +{\em dst} & The pointer to destination canvas object. \\ +\hline +{\em location} & The location of the start point at destination canvas object.\\ +\hline +\end{DoxyParams} +\begin{DoxyNote}{Note} +The two canvas\textquotesingle{}s color format must be equal, otherwish will be failed and {\itshape S\+T\+A\+T\+U\+S\+\_\+\+M\+I\+S\+M\+A\+T\+C\+H\+I\+N\+G\+\_\+\+F\+O\+R\+M\+AT} will be set. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+get\+\_\+size}{p.}{group__canvas_gafa96f6f1f7093eb690da471db3d1221b}, \doxyref{ps\+\_\+canvas\+\_\+get\+\_\+format}{p.}{group__canvas_ga82f236a9d166347f3b1a8779e1af32b0} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_ga422a8fc62631fb6447e92924c78bc3b7}} +\index{Canvas@{Canvas}!ps\_canvas\_create@{ps\_canvas\_create}} +\index{ps\_canvas\_create@{ps\_canvas\_create}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_create()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$ ps\+\_\+canvas\+\_\+create (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+color\+\_\+format}}]{fmt, }\item[{int}]{width, }\item[{int}]{height }\end{DoxyParamCaption})} + + + +Create a new canvas using the given parameters. + + +\begin{DoxyParams}{Parameters} +{\em fmt} & The Pixel format to use for the canvas. \\ +\hline +{\em width} & The width, in pixels, of the required canvas. \\ +\hline +{\em height} & The height, in pixels, of the required canvas.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}{p.}{group__canvas_ga5764ae1f5e2ed6fd1dae2c01018651e2}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+compatible}{p.}{group__canvas_ga2ea69fce3ac80798a1372fb4eb6fe374}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__canvas_gadcd073449c2570fd165cfd51836a5e86}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image}{p.}{group__canvas_gaf877dddf73ecc30ccbe87c31f5c5bf75}, \doxyref{ps\+\_\+canvas\+\_\+ref}{p.}{group__canvas_gaee1cef3d1e04d2a85cf5f3c19e94a69f}, \doxyref{ps\+\_\+canvas\+\_\+unref}{p.}{group__canvas_ga474f482e71cd737d2110168768c6a3d5} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_ga2ea69fce3ac80798a1372fb4eb6fe374}} +\index{Canvas@{Canvas}!ps\_canvas\_create\_compatible@{ps\_canvas\_create\_compatible}} +\index{ps\_canvas\_create\_compatible@{ps\_canvas\_create\_compatible}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_create\_compatible()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$ ps\+\_\+canvas\+\_\+create\+\_\+compatible (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+canvas} $\ast$}]{canvas, }\item[{int}]{width, }\item[{int}]{height }\end{DoxyParamCaption})} + + + +Create a new canvas to compatible with an existing canvas. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & A pointer to an existing canvas. \\ +\hline +{\em width} & The width, in pixels, of the required canvas. If it is not more than zero, the width will be equal to the width of the reference canvas. \\ +\hline +{\em height} & The height, in pixels, of the required canvas. If it is not more than zero, the height will be equal to the height of the reference canvas.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+create}{p.}{group__canvas_ga422a8fc62631fb6447e92924c78bc3b7}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}{p.}{group__canvas_ga5764ae1f5e2ed6fd1dae2c01018651e2}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__canvas_gadcd073449c2570fd165cfd51836a5e86}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image}{p.}{group__canvas_gaf877dddf73ecc30ccbe87c31f5c5bf75}, \doxyref{ps\+\_\+canvas\+\_\+ref}{p.}{group__canvas_gaee1cef3d1e04d2a85cf5f3c19e94a69f}, \doxyref{ps\+\_\+canvas\+\_\+unref}{p.}{group__canvas_ga474f482e71cd737d2110168768c6a3d5} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_gadcd073449c2570fd165cfd51836a5e86}} +\index{Canvas@{Canvas}!ps\_canvas\_create\_from\_canvas@{ps\_canvas\_create\_from\_canvas}} +\index{ps\_canvas\_create\_from\_canvas@{ps\_canvas\_create\_from\_canvas}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_create\_from\_canvas()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$ ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Create a new canvas using part of an existing canvas in same pixel buffer. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & A pointer to an existing canvas. \\ +\hline +{\em rect} & The rectangle area of the canvas from the parent canvas. If it is N\+U\+LL, the canvas\textquotesingle{}s width and height will be equal to the parant canvas.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+create}{p.}{group__canvas_ga422a8fc62631fb6447e92924c78bc3b7}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}{p.}{group__canvas_ga5764ae1f5e2ed6fd1dae2c01018651e2}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+compatible}{p.}{group__canvas_ga2ea69fce3ac80798a1372fb4eb6fe374}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image}{p.}{group__canvas_gaf877dddf73ecc30ccbe87c31f5c5bf75}, \doxyref{ps\+\_\+canvas\+\_\+ref}{p.}{group__canvas_gaee1cef3d1e04d2a85cf5f3c19e94a69f}, \doxyref{ps\+\_\+canvas\+\_\+unref}{p.}{group__canvas_ga474f482e71cd737d2110168768c6a3d5} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_gaf877dddf73ecc30ccbe87c31f5c5bf75}} +\index{Canvas@{Canvas}!ps\_canvas\_create\_from\_image@{ps\_canvas\_create\_from\_image}} +\index{ps\_canvas\_create\_from\_image@{ps\_canvas\_create\_from\_image}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_create\_from\_image()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$ ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+image} $\ast$}]{img, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Create a new canvas using part of an existing ps\+\_\+image object in same pixel buffer. + + +\begin{DoxyParams}{Parameters} +{\em img} & A pointer to an existing ps\+\_\+image object. \\ +\hline +{\em rect} & The rectangle area of the canvas from the ps\+\_\+image. If it is N\+U\+LL, the canvas\textquotesingle{}s width and height will be equal to ps\+\_\+image object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+create}{p.}{group__canvas_ga422a8fc62631fb6447e92924c78bc3b7}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}{p.}{group__canvas_ga5764ae1f5e2ed6fd1dae2c01018651e2}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+compatible}{p.}{group__canvas_ga2ea69fce3ac80798a1372fb4eb6fe374}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__canvas_gadcd073449c2570fd165cfd51836a5e86}, \doxyref{ps\+\_\+canvas\+\_\+ref}{p.}{group__canvas_gaee1cef3d1e04d2a85cf5f3c19e94a69f}, \doxyref{ps\+\_\+canvas\+\_\+unref}{p.}{group__canvas_ga474f482e71cd737d2110168768c6a3d5} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_ga5764ae1f5e2ed6fd1dae2c01018651e2}} +\index{Canvas@{Canvas}!ps\_canvas\_create\_with\_data@{ps\_canvas\_create\_with\_data}} +\index{ps\_canvas\_create\_with\_data@{ps\_canvas\_create\_with\_data}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_create\_with\_data()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$ ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+byte} $\ast$}]{data, }\item[{\textbf{ ps\+\_\+color\+\_\+format}}]{fmt, }\item[{int}]{width, }\item[{int}]{height, }\item[{int}]{pitch }\end{DoxyParamCaption})} + + + +Create a new canvas using a given address in memory. + + +\begin{DoxyParams}{Parameters} +{\em data} & A pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch $\ast$ height) bytes. \\ +\hline +{\em fmt} & The Pixel format to use for the canvas. \\ +\hline +{\em width} & The width, in pixels, of the required canvas. \\ +\hline +{\em height} & The height, in pixels, of the required canvas. \\ +\hline +{\em pitch} & The number of bytes per row, of the required canvas.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+create}{p.}{group__canvas_ga422a8fc62631fb6447e92924c78bc3b7}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+compatible}{p.}{group__canvas_ga2ea69fce3ac80798a1372fb4eb6fe374}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__canvas_gadcd073449c2570fd165cfd51836a5e86}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image}{p.}{group__canvas_gaf877dddf73ecc30ccbe87c31f5c5bf75}, \doxyref{ps\+\_\+canvas\+\_\+ref}{p.}{group__canvas_gaee1cef3d1e04d2a85cf5f3c19e94a69f}, \doxyref{ps\+\_\+canvas\+\_\+unref}{p.}{group__canvas_ga474f482e71cd737d2110168768c6a3d5}, \doxyref{ps\+\_\+canvas\+\_\+replace\+\_\+data}{p.}{group__canvas_ga5ffc739d55c6d314ad645df4916fec73} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_ga82f236a9d166347f3b1a8779e1af32b0}} +\index{Canvas@{Canvas}!ps\_canvas\_get\_format@{ps\_canvas\_get\_format}} +\index{ps\_canvas\_get\_format@{ps\_canvas\_get\_format}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_get\_format()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+color\+\_\+format} ps\+\_\+canvas\+\_\+get\+\_\+format (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+canvas} $\ast$}]{canvas }\end{DoxyParamCaption})} + + + +Return the pixel format of the canvas. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & Pointer to an existing canvas object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return a valid color format. If the function fails, the return value is C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+U\+N\+K\+N\+O\+WN. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+get\+\_\+size}{p.}{group__canvas_gafa96f6f1f7093eb690da471db3d1221b} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_gafa96f6f1f7093eb690da471db3d1221b}} +\index{Canvas@{Canvas}!ps\_canvas\_get\_size@{ps\_canvas\_get\_size}} +\index{ps\_canvas\_get\_size@{ps\_canvas\_get\_size}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_get\_size()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+canvas\+\_\+get\+\_\+size (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+canvas} $\ast$}]{canvas, }\item[{\textbf{ ps\+\_\+size} $\ast$}]{rsize }\end{DoxyParamCaption})} + + + +Return the size of the canvas. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & Pointer to an existing canvas object. \\ +\hline +{\em rsize} & Pointer to a buffer to receiving the size.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+get\+\_\+format}{p.}{group__canvas_ga82f236a9d166347f3b1a8779e1af32b0} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_gaee1cef3d1e04d2a85cf5f3c19e94a69f}} +\index{Canvas@{Canvas}!ps\_canvas\_ref@{ps\_canvas\_ref}} +\index{ps\_canvas\_ref@{ps\_canvas\_ref}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$ ps\+\_\+canvas\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas }\end{DoxyParamCaption})} + + + +Increases the reference count of the canvas by 1. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & Pointer to an existing canvas object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the canvas object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+create}{p.}{group__canvas_ga422a8fc62631fb6447e92924c78bc3b7}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}{p.}{group__canvas_ga5764ae1f5e2ed6fd1dae2c01018651e2}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+compatible}{p.}{group__canvas_ga2ea69fce3ac80798a1372fb4eb6fe374}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__canvas_gadcd073449c2570fd165cfd51836a5e86}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image}{p.}{group__canvas_gaf877dddf73ecc30ccbe87c31f5c5bf75}, \doxyref{ps\+\_\+canvas\+\_\+unref}{p.}{group__canvas_ga474f482e71cd737d2110168768c6a3d5} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_ga5ffc739d55c6d314ad645df4916fec73}} +\index{Canvas@{Canvas}!ps\_canvas\_replace\_data@{ps\_canvas\_replace\_data}} +\index{ps\_canvas\_replace\_data@{ps\_canvas\_replace\_data}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_replace\_data()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI ps\+\_\+canvas\+\_\+replace\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas, }\item[{\textbf{ ps\+\_\+byte} $\ast$}]{data, }\item[{\textbf{ ps\+\_\+color\+\_\+format}}]{fmt, }\item[{int}]{width, }\item[{int}]{height, }\item[{int}]{pitch }\end{DoxyParamCaption})} + + + +Replace a canvas target rendering buffer address in memory, which is only use for canvas create by {\itshape ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & Pointer to an existing canvas object. \\ +\hline +{\em data} & A pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch $\ast$ height) bytes. \\ +\hline +{\em fmt} & The Pixel format to use for the canvas. \\ +\hline +{\em width} & The width, in pixels, of the required canvas. \\ +\hline +{\em height} & The height, in pixels, of the required canvas. \\ +\hline +{\em pitch} & The number of bytes per row, of the required canvas.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new canvas object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +The data\textquotesingle{}s color format must be equal with target canvas, otherwish will be failed and {\itshape S\+T\+A\+T\+U\+S\+\_\+\+M\+I\+S\+M\+A\+T\+C\+H\+I\+N\+G\+\_\+\+F\+O\+R\+M\+AT} will be set. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}{p.}{group__canvas_ga5764ae1f5e2ed6fd1dae2c01018651e2} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_ga7b52ce718da8798ce1823ed30c65d297}} +\index{Canvas@{Canvas}!ps\_canvas\_reset\_mask@{ps\_canvas\_reset\_mask}} +\index{ps\_canvas\_reset\_mask@{ps\_canvas\_reset\_mask}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_reset\_mask()} +{\footnotesize\ttfamily void ps\+\_\+canvas\+\_\+reset\+\_\+mask (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas }\end{DoxyParamCaption})} + + + +Clear the mask from the canvas object. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & Pointer to an existing canvas object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+set\+\_\+mask}{p.}{group__canvas_gae2c3473beecada34539bc9bcc61da3be} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_gae2c3473beecada34539bc9bcc61da3be}} +\index{Canvas@{Canvas}!ps\_canvas\_set\_mask@{ps\_canvas\_set\_mask}} +\index{ps\_canvas\_set\_mask@{ps\_canvas\_set\_mask}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_set\_mask()} +{\footnotesize\ttfamily void ps\+\_\+canvas\+\_\+set\+\_\+mask (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas, }\item[{const \textbf{ ps\+\_\+mask} $\ast$}]{mask }\end{DoxyParamCaption})} + + + +Set a new mask into an existing canvas object. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & Pointer to an existing canvas object. \\ +\hline +{\em mask} & Pointer to an existing mask object to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+reset\+\_\+mask}{p.}{group__canvas_ga7b52ce718da8798ce1823ed30c65d297} +\end{DoxySeeAlso} +\mbox{\label{group__canvas_ga474f482e71cd737d2110168768c6a3d5}} +\index{Canvas@{Canvas}!ps\_canvas\_unref@{ps\_canvas\_unref}} +\index{ps\_canvas\_unref@{ps\_canvas\_unref}!Canvas@{Canvas}} +\doxysubsubsection{ps\_canvas\_unref()} +{\footnotesize\ttfamily void ps\+\_\+canvas\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas }\end{DoxyParamCaption})} + + + +Decrements the reference count for the canvas object. If the reference count on the canvas falls to 0, the canvas is freed. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & Pointer to an existing canvas object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas\+\_\+create}{p.}{group__canvas_ga422a8fc62631fb6447e92924c78bc3b7}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}{p.}{group__canvas_ga5764ae1f5e2ed6fd1dae2c01018651e2}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+compatible}{p.}{group__canvas_ga2ea69fce3ac80798a1372fb4eb6fe374}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__canvas_gadcd073449c2570fd165cfd51836a5e86}, \doxyref{ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image}{p.}{group__canvas_gaf877dddf73ecc30ccbe87c31f5c5bf75}, \doxyref{ps\+\_\+canvas\+\_\+ref}{p.}{group__canvas_gaee1cef3d1e04d2a85cf5f3c19e94a69f} +\end{DoxySeeAlso} diff --git a/doc/latex/group__clip.tex b/doc/latex/group__clip.tex new file mode 100644 index 0000000..de0c248 --- /dev/null +++ b/doc/latex/group__clip.tex @@ -0,0 +1,146 @@ +\doxysection{Clip} +\label{group__clip}\index{Clip@{Clip}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clip} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Clipping the current path, using the current fill rule. After called, the current path will be cleared from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clip\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+path} $\ast$path, \textbf{ ps\+\_\+fill\+\_\+rule} rule) +\begin{DoxyCompactList}\small\item\em Clipping specified path, using the given fill rule. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clip\+\_\+rect} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Clipping specified rectangle. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+scissor\+\_\+rect} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em The fast way to clipping specified rectangle, the clip rect can not be transformed by world matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clip\+\_\+rects} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rects, unsigned int num\+\_\+rects) +\begin{DoxyCompactList}\small\item\em Clipping specified area defined by an array of rectangles. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+reset\+\_\+clip} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Clear the clipping area from the context. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__clip_ga79550990154227f8377971b1a07f7efc}} +\index{Clip@{Clip}!ps\_clip@{ps\_clip}} +\index{ps\_clip@{ps\_clip}!Clip@{Clip}} +\doxysubsubsection{ps\_clip()} +{\footnotesize\ttfamily void ps\+\_\+clip (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Clipping the current path, using the current fill rule. After called, the current path will be cleared from the context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+clip\+\_\+path}{p.}{group__clip_ga570281d1fa52523e9dc4803db1c4fa85}, \doxyref{ps\+\_\+clip\+\_\+rect}{p.}{group__clip_ga5a2b68ffc66c43b4036779644cd394ab}, \doxyref{ps\+\_\+clip\+\_\+rects}{p.}{group__clip_gacfe347f9cecab66847e0319cd9d9b50f}, \doxyref{ps\+\_\+reset\+\_\+clip}{p.}{group__clip_gab2d284432435b712e1f2327b6d66a080} +\end{DoxySeeAlso} +\mbox{\label{group__clip_ga570281d1fa52523e9dc4803db1c4fa85}} +\index{Clip@{Clip}!ps\_clip\_path@{ps\_clip\_path}} +\index{ps\_clip\_path@{ps\_clip\_path}!Clip@{Clip}} +\doxysubsubsection{ps\_clip\_path()} +{\footnotesize\ttfamily void ps\+\_\+clip\+\_\+path (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{\textbf{ ps\+\_\+fill\+\_\+rule}}]{rule }\end{DoxyParamCaption})} + + + +Clipping specified path, using the given fill rule. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em path} & The path which will be clipped. \\ +\hline +{\em rule} & The rule of the path.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+clip}{p.}{group__clip_ga79550990154227f8377971b1a07f7efc}, \doxyref{ps\+\_\+clip\+\_\+rect}{p.}{group__clip_ga5a2b68ffc66c43b4036779644cd394ab}, \doxyref{ps\+\_\+clip\+\_\+rects}{p.}{group__clip_gacfe347f9cecab66847e0319cd9d9b50f}, \doxyref{ps\+\_\+reset\+\_\+clip}{p.}{group__clip_gab2d284432435b712e1f2327b6d66a080} +\end{DoxySeeAlso} +\mbox{\label{group__clip_ga5a2b68ffc66c43b4036779644cd394ab}} +\index{Clip@{Clip}!ps\_clip\_rect@{ps\_clip\_rect}} +\index{ps\_clip\_rect@{ps\_clip\_rect}!Clip@{Clip}} +\doxysubsubsection{ps\_clip\_rect()} +{\footnotesize\ttfamily void ps\+\_\+clip\+\_\+rect (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Clipping specified rectangle. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em rect} & The rectangle which will be clipped.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+clip}{p.}{group__clip_ga79550990154227f8377971b1a07f7efc}, \doxyref{ps\+\_\+clip\+\_\+path}{p.}{group__clip_ga570281d1fa52523e9dc4803db1c4fa85}, \doxyref{ps\+\_\+clip\+\_\+rects}{p.}{group__clip_gacfe347f9cecab66847e0319cd9d9b50f}, \doxyref{ps\+\_\+reset\+\_\+clip}{p.}{group__clip_gab2d284432435b712e1f2327b6d66a080}, \doxyref{ps\+\_\+scissor\+\_\+rect}{p.}{group__clip_gaced88979d81f52c7dbfd3129c7e5b80f} +\end{DoxySeeAlso} +\mbox{\label{group__clip_gacfe347f9cecab66847e0319cd9d9b50f}} +\index{Clip@{Clip}!ps\_clip\_rects@{ps\_clip\_rects}} +\index{ps\_clip\_rects@{ps\_clip\_rects}!Clip@{Clip}} +\doxysubsubsection{ps\_clip\_rects()} +{\footnotesize\ttfamily void ps\+\_\+clip\+\_\+rects (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rects, }\item[{unsigned int}]{num\+\_\+rects }\end{DoxyParamCaption})} + + + +Clipping specified area defined by an array of rectangles. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em rects} & The array of rectangles which will be clipped. \\ +\hline +{\em num\+\_\+rects} & The number of array entries.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+clip}{p.}{group__clip_ga79550990154227f8377971b1a07f7efc}, \doxyref{ps\+\_\+clip\+\_\+path}{p.}{group__clip_ga570281d1fa52523e9dc4803db1c4fa85}, \doxyref{ps\+\_\+clip\+\_\+rect}{p.}{group__clip_ga5a2b68ffc66c43b4036779644cd394ab}, \doxyref{ps\+\_\+reset\+\_\+clip}{p.}{group__clip_gab2d284432435b712e1f2327b6d66a080} +\end{DoxySeeAlso} +\mbox{\label{group__clip_gab2d284432435b712e1f2327b6d66a080}} +\index{Clip@{Clip}!ps\_reset\_clip@{ps\_reset\_clip}} +\index{ps\_reset\_clip@{ps\_reset\_clip}!Clip@{Clip}} +\doxysubsubsection{ps\_reset\_clip()} +{\footnotesize\ttfamily void ps\+\_\+reset\+\_\+clip (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Clear the clipping area from the context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+clip}{p.}{group__clip_ga79550990154227f8377971b1a07f7efc}, \doxyref{ps\+\_\+clip\+\_\+path}{p.}{group__clip_ga570281d1fa52523e9dc4803db1c4fa85}, \doxyref{ps\+\_\+clip\+\_\+rect}{p.}{group__clip_ga5a2b68ffc66c43b4036779644cd394ab}, \doxyref{ps\+\_\+clip\+\_\+rects}{p.}{group__clip_gacfe347f9cecab66847e0319cd9d9b50f} +\end{DoxySeeAlso} +\mbox{\label{group__clip_gaced88979d81f52c7dbfd3129c7e5b80f}} +\index{Clip@{Clip}!ps\_scissor\_rect@{ps\_scissor\_rect}} +\index{ps\_scissor\_rect@{ps\_scissor\_rect}!Clip@{Clip}} +\doxysubsubsection{ps\_scissor\_rect()} +{\footnotesize\ttfamily void ps\+\_\+scissor\+\_\+rect (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +The fast way to clipping specified rectangle, the clip rect can not be transformed by world matrix. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em rect} & The rectangle which will be clipped.\\ +\hline +\end{DoxyParams} +\begin{DoxyNote}{Note} +This function is deprecated, will be remove feature. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+clip}{p.}{group__clip_ga79550990154227f8377971b1a07f7efc}, \doxyref{ps\+\_\+clip\+\_\+path}{p.}{group__clip_ga570281d1fa52523e9dc4803db1c4fa85}, \doxyref{ps\+\_\+clip\+\_\+rects}{p.}{group__clip_gacfe347f9cecab66847e0319cd9d9b50f}, \doxyref{ps\+\_\+reset\+\_\+clip}{p.}{group__clip_gab2d284432435b712e1f2327b6d66a080}, \doxyref{ps\+\_\+clip\+\_\+rect}{p.}{group__clip_ga5a2b68ffc66c43b4036779644cd394ab} +\end{DoxySeeAlso} diff --git a/doc/latex/group__coder.tex b/doc/latex/group__coder.tex new file mode 100644 index 0000000..01c4b55 --- /dev/null +++ b/doc/latex/group__coder.tex @@ -0,0 +1,70 @@ +\doxysection{X\+Image Coders Plugin side functions} +\label{group__coder}\index{XImage Coders Plugin side functions@{XImage Coders Plugin side functions}} +\doxysubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__coder_ga14ded244c47bbba850a8a4be6d16c7e3}} +\#define \textbf{ M\+O\+D\+U\+L\+E\+\_\+\+N\+A\+ME}~1 +\begin{DoxyCompactList}\small\item\em Get module name. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void \textbf{ psx\+\_\+image\+\_\+module\+\_\+init} (void) +\begin{DoxyCompactList}\small\item\em Initialze the image module. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void \textbf{ psx\+\_\+image\+\_\+module\+\_\+shutdown} (void) +\begin{DoxyCompactList}\small\item\em Shutdown the image module. \end{DoxyCompactList}\item +const P\+E\+X\+P\+O\+RT char $\ast$ \textbf{ psx\+\_\+image\+\_\+module\+\_\+get\+\_\+string} (int id) +\begin{DoxyCompactList}\small\item\em Get the string info about module. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__coder_ga6126f92a9ed2bde05a70d23304646b9b}} +\index{XImage Coders Plugin side functions@{XImage Coders Plugin side functions}!psx\_image\_module\_get\_string@{psx\_image\_module\_get\_string}} +\index{psx\_image\_module\_get\_string@{psx\_image\_module\_get\_string}!XImage Coders Plugin side functions@{XImage Coders Plugin side functions}} +\doxysubsubsection{psx\_image\_module\_get\_string()} +{\footnotesize\ttfamily char $\ast$ psx\+\_\+image\+\_\+module\+\_\+get\+\_\+string (\begin{DoxyParamCaption}\item[{int}]{id }\end{DoxyParamCaption})} + + + +Get the string info about module. + + +\begin{DoxyParams}{Parameters} +{\em id} & The information index.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If successs, return the pointer of string. Can not be modify and free. If fails, return N\+U\+LL. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+module\+\_\+init}{p.}{group__coder_gab79a1526ed3284dae85ad73be7e7eb97} \doxyref{psx\+\_\+image\+\_\+module\+\_\+shutdown}{p.}{group__coder_ga7bce88a706a2fb89e4846f769be24aa3} +\end{DoxySeeAlso} +\mbox{\label{group__coder_gab79a1526ed3284dae85ad73be7e7eb97}} +\index{XImage Coders Plugin side functions@{XImage Coders Plugin side functions}!psx\_image\_module\_init@{psx\_image\_module\_init}} +\index{psx\_image\_module\_init@{psx\_image\_module\_init}!XImage Coders Plugin side functions@{XImage Coders Plugin side functions}} +\doxysubsubsection{psx\_image\_module\_init()} +{\footnotesize\ttfamily void psx\+\_\+image\+\_\+module\+\_\+init (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Initialze the image module. + +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+module\+\_\+shutdown}{p.}{group__coder_ga7bce88a706a2fb89e4846f769be24aa3} \doxyref{psx\+\_\+image\+\_\+module\+\_\+get\+\_\+string}{p.}{group__coder_ga6126f92a9ed2bde05a70d23304646b9b} +\end{DoxySeeAlso} +\mbox{\label{group__coder_ga7bce88a706a2fb89e4846f769be24aa3}} +\index{XImage Coders Plugin side functions@{XImage Coders Plugin side functions}!psx\_image\_module\_shutdown@{psx\_image\_module\_shutdown}} +\index{psx\_image\_module\_shutdown@{psx\_image\_module\_shutdown}!XImage Coders Plugin side functions@{XImage Coders Plugin side functions}} +\doxysubsubsection{psx\_image\_module\_shutdown()} +{\footnotesize\ttfamily void psx\+\_\+image\+\_\+module\+\_\+shutdown (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Shutdown the image module. + +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+module\+\_\+init}{p.}{group__coder_gab79a1526ed3284dae85ad73be7e7eb97} \doxyref{psx\+\_\+image\+\_\+module\+\_\+get\+\_\+string}{p.}{group__coder_ga6126f92a9ed2bde05a70d23304646b9b} +\end{DoxySeeAlso} diff --git a/doc/latex/group__common.tex b/doc/latex/group__common.tex new file mode 100644 index 0000000..c6dd8b4 --- /dev/null +++ b/doc/latex/group__common.tex @@ -0,0 +1,145 @@ +\doxysection{Common Functions} +\label{group__common}\index{Common Functions@{Common Functions}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__common_ga329bb6930cb4bfd022ace14e30e8dee7}} +typedef enum \textbf{ \+\_\+ps\+\_\+status} \textbf{ ps\+\_\+status} +\begin{DoxyCompactList}\small\item\em Status code return by call ps\+\_\+last\+\_\+status function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+status} \{ \newline +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+S\+U\+C\+C\+E\+ED}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+O\+U\+T\+\_\+\+O\+F\+\_\+\+M\+E\+M\+O\+RY}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+V\+A\+L\+I\+D\+\_\+\+A\+R\+G\+U\+M\+E\+NT}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+RT}, +\newline +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+D\+E\+V\+I\+C\+E\+\_\+\+E\+R\+R\+OR}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+M\+I\+S\+M\+A\+T\+C\+H\+I\+N\+G\+\_\+\+F\+O\+R\+M\+AT}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+K\+N\+O\+W\+N\+\_\+\+E\+R\+R\+OR} + \} +\begin{DoxyCompactList}\small\item\em Status code return by call ps\+\_\+last\+\_\+status function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ ps\+\_\+version} (void) +\begin{DoxyCompactList}\small\item\em Return current version of picasso. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+initialize} (void) +\begin{DoxyCompactList}\small\item\em Initialize the picasso drawing environment. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+shutdown} (void) +\begin{DoxyCompactList}\small\item\em Shutdown the picasso drawing environment. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+status} P\+I\+C\+A\+PI \textbf{ ps\+\_\+last\+\_\+status} (void) +\begin{DoxyCompactList}\small\item\em Return the last status code of picasso. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__common_gaa0326a5d1401e410f5a5d306ff58057c}} +\index{Common Functions@{Common Functions}!\_ps\_status@{\_ps\_status}} +\index{\_ps\_status@{\_ps\_status}!Common Functions@{Common Functions}} +\doxysubsubsection{\_ps\_status} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+status}} + + + +Status code return by call ps\+\_\+last\+\_\+status function. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{STATUS\_SUCCEED@{STATUS\_SUCCEED}!Common Functions@{Common Functions}}\index{Common Functions@{Common Functions}!STATUS\_SUCCEED@{STATUS\_SUCCEED}}}\mbox{\label{group__common_ggaa0326a5d1401e410f5a5d306ff58057caf2f748842c6754bca4b31ce38ee1989b}} +S\+T\+A\+T\+U\+S\+\_\+\+S\+U\+C\+C\+E\+ED&The successful status no errors. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{STATUS\_OUT\_OF\_MEMORY@{STATUS\_OUT\_OF\_MEMORY}!Common Functions@{Common Functions}}\index{Common Functions@{Common Functions}!STATUS\_OUT\_OF\_MEMORY@{STATUS\_OUT\_OF\_MEMORY}}}\mbox{\label{group__common_ggaa0326a5d1401e410f5a5d306ff58057ca1dd49a9b0813cb5a290438e39968a71d}} +S\+T\+A\+T\+U\+S\+\_\+\+O\+U\+T\+\_\+\+O\+F\+\_\+\+M\+E\+M\+O\+RY&Out of memory. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{STATUS\_INVALID\_ARGUMENT@{STATUS\_INVALID\_ARGUMENT}!Common Functions@{Common Functions}}\index{Common Functions@{Common Functions}!STATUS\_INVALID\_ARGUMENT@{STATUS\_INVALID\_ARGUMENT}}}\mbox{\label{group__common_ggaa0326a5d1401e410f5a5d306ff58057ca5b98786751fa3cebde33511b7c4c3c3f}} +S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+V\+A\+L\+I\+D\+\_\+\+A\+R\+G\+U\+M\+E\+NT&Invalid argument input. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{STATUS\_NOT\_SUPPORT@{STATUS\_NOT\_SUPPORT}!Common Functions@{Common Functions}}\index{Common Functions@{Common Functions}!STATUS\_NOT\_SUPPORT@{STATUS\_NOT\_SUPPORT}}}\mbox{\label{group__common_ggaa0326a5d1401e410f5a5d306ff58057ca7f14fea68b0f0afde4a0146babe60ac1}} +S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+RT&Not support this feature. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{STATUS\_DEVICE\_ERROR@{STATUS\_DEVICE\_ERROR}!Common Functions@{Common Functions}}\index{Common Functions@{Common Functions}!STATUS\_DEVICE\_ERROR@{STATUS\_DEVICE\_ERROR}}}\mbox{\label{group__common_ggaa0326a5d1401e410f5a5d306ff58057ca9cc7c369c4b8b5d9c416528f1c6b0e73}} +S\+T\+A\+T\+U\+S\+\_\+\+D\+E\+V\+I\+C\+E\+\_\+\+E\+R\+R\+OR&Device is not ready. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{STATUS\_MISMATCHING\_FORMAT@{STATUS\_MISMATCHING\_FORMAT}!Common Functions@{Common Functions}}\index{Common Functions@{Common Functions}!STATUS\_MISMATCHING\_FORMAT@{STATUS\_MISMATCHING\_FORMAT}}}\mbox{\label{group__common_ggaa0326a5d1401e410f5a5d306ff58057cadea69ea0278ac21563ef125c441ce1c7}} +S\+T\+A\+T\+U\+S\+\_\+\+M\+I\+S\+M\+A\+T\+C\+H\+I\+N\+G\+\_\+\+F\+O\+R\+M\+AT&Mismatching error. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{STATUS\_UNKNOWN\_ERROR@{STATUS\_UNKNOWN\_ERROR}!Common Functions@{Common Functions}}\index{Common Functions@{Common Functions}!STATUS\_UNKNOWN\_ERROR@{STATUS\_UNKNOWN\_ERROR}}}\mbox{\label{group__common_ggaa0326a5d1401e410f5a5d306ff58057ca72023c12a04f6d3aa9e165bf92223986}} +S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+K\+N\+O\+W\+N\+\_\+\+E\+R\+R\+OR&Unknown error. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 262 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__common_ga3186522b34123b27e5cedfa7ba74d253}} +\index{Common Functions@{Common Functions}!ps\_initialize@{ps\_initialize}} +\index{ps\_initialize@{ps\_initialize}!Common Functions@{Common Functions}} +\doxysubsubsection{ps\_initialize()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+initialize (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Initialize the picasso drawing environment. + +It must be the first to be call. + +\begin{DoxyReturn}{Returns} +True if is initialized, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+shutdown}{p.}{group__common_ga3aaa8a7e19432e1135e166ddbd495c6a} +\end{DoxySeeAlso} +\mbox{\label{group__common_gacb568fd9b1c7b6f16850b7e7aa774dca}} +\index{Common Functions@{Common Functions}!ps\_last\_status@{ps\_last\_status}} +\index{ps\_last\_status@{ps\_last\_status}!Common Functions@{Common Functions}} +\doxysubsubsection{ps\_last\_status()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+status} ps\+\_\+last\+\_\+status (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Return the last status code of picasso. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+version}{p.}{group__common_gaeddba2468ff4e22be45c7d1923d5b551} +\end{DoxySeeAlso} +\mbox{\label{group__common_ga3aaa8a7e19432e1135e166ddbd495c6a}} +\index{Common Functions@{Common Functions}!ps\_shutdown@{ps\_shutdown}} +\index{ps\_shutdown@{ps\_shutdown}!Common Functions@{Common Functions}} +\doxysubsubsection{ps\_shutdown()} +{\footnotesize\ttfamily void ps\+\_\+shutdown (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Shutdown the picasso drawing environment. + +It must be call in the end. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+initialize}{p.}{group__common_ga3186522b34123b27e5cedfa7ba74d253} +\end{DoxySeeAlso} +\mbox{\label{group__common_gaeddba2468ff4e22be45c7d1923d5b551}} +\index{Common Functions@{Common Functions}!ps\_version@{ps\_version}} +\index{ps\_version@{ps\_version}!Common Functions@{Common Functions}} +\doxysubsubsection{ps\_version()} +{\footnotesize\ttfamily int ps\+\_\+version (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Return current version of picasso. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+last\+\_\+status}{p.}{group__common_gacb568fd9b1c7b6f16850b7e7aa774dca} +\end{DoxySeeAlso} diff --git a/doc/latex/group__context.tex b/doc/latex/group__context.tex new file mode 100644 index 0000000..070954f --- /dev/null +++ b/doc/latex/group__context.tex @@ -0,0 +1,139 @@ +\doxysection{Context} +\label{group__context}\index{Context@{Context}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+context} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+create} (\textbf{ ps\+\_\+canvas} $\ast$canvas, \textbf{ ps\+\_\+context} $\ast$shared\+\_\+context) +\begin{DoxyCompactList}\small\item\em Create a new graphic context for a canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+context} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+ref} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the context by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+unref} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the context object. If the reference count on the context falls to 0, the context is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+set\+\_\+canvas} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Set a new canvas into a context, and return the old one. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+get\+\_\+canvas} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Get the canvas from the context. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__context_ga33fa4222fe8a78360ee762d7dc21d634}} +\index{Context@{Context}!ps\_context\_create@{ps\_context\_create}} +\index{ps\_context\_create@{ps\_context\_create}!Context@{Context}} +\doxysubsubsection{ps\_context\_create()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+context} $\ast$ ps\+\_\+context\+\_\+create (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas, }\item[{\textbf{ ps\+\_\+context} $\ast$}]{shared\+\_\+context }\end{DoxyParamCaption})} + + + +Create a new graphic context for a canvas. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & Pointer to an existing canvas object. \\ +\hline +{\em shared\+\_\+context} & Resources shared context, N\+U\+LL mean resources not shared.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new context object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+context\+\_\+set\+\_\+canvas}{p.}{group__context_ga10513cabc0cbcef20bd9a3c8fe19c456}, \doxyref{ps\+\_\+context\+\_\+get\+\_\+canvas}{p.}{group__context_ga274cdffd21ed66a070d72d5949b8da4b}, \doxyref{ps\+\_\+context\+\_\+ref}{p.}{group__context_ga4d922def06765e1cc52c8ab95110d73e}, \doxyref{ps\+\_\+context\+\_\+unref}{p.}{group__context_ga2840f4f552f58220684b0023acb30e2a} +\end{DoxySeeAlso} +\mbox{\label{group__context_ga274cdffd21ed66a070d72d5949b8da4b}} +\index{Context@{Context}!ps\_context\_get\_canvas@{ps\_context\_get\_canvas}} +\index{ps\_context\_get\_canvas@{ps\_context\_get\_canvas}!Context@{Context}} +\doxysubsubsection{ps\_context\_get\_canvas()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$ ps\+\_\+context\+\_\+get\+\_\+canvas (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Get the canvas from the context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is a pointer to the canvas. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+context\+\_\+create}{p.}{group__context_ga33fa4222fe8a78360ee762d7dc21d634}, \doxyref{ps\+\_\+context\+\_\+ref}{p.}{group__context_ga4d922def06765e1cc52c8ab95110d73e}, \doxyref{ps\+\_\+context\+\_\+unref}{p.}{group__context_ga2840f4f552f58220684b0023acb30e2a}, \doxyref{ps\+\_\+context\+\_\+set\+\_\+canvas}{p.}{group__context_ga10513cabc0cbcef20bd9a3c8fe19c456} +\end{DoxySeeAlso} +\mbox{\label{group__context_ga4d922def06765e1cc52c8ab95110d73e}} +\index{Context@{Context}!ps\_context\_ref@{ps\_context\_ref}} +\index{ps\_context\_ref@{ps\_context\_ref}!Context@{Context}} +\doxysubsubsection{ps\_context\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+context} $\ast$ ps\+\_\+context\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Increases the reference count of the context by 1. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the context object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+context\+\_\+set\+\_\+canvas}{p.}{group__context_ga10513cabc0cbcef20bd9a3c8fe19c456}, \doxyref{ps\+\_\+context\+\_\+get\+\_\+canvas}{p.}{group__context_ga274cdffd21ed66a070d72d5949b8da4b}, \doxyref{ps\+\_\+context\+\_\+create}{p.}{group__context_ga33fa4222fe8a78360ee762d7dc21d634}, \doxyref{ps\+\_\+context\+\_\+unref}{p.}{group__context_ga2840f4f552f58220684b0023acb30e2a} +\end{DoxySeeAlso} +\mbox{\label{group__context_ga10513cabc0cbcef20bd9a3c8fe19c456}} +\index{Context@{Context}!ps\_context\_set\_canvas@{ps\_context\_set\_canvas}} +\index{ps\_context\_set\_canvas@{ps\_context\_set\_canvas}!Context@{Context}} +\doxysubsubsection{ps\_context\_set\_canvas()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas} $\ast$ ps\+\_\+context\+\_\+set\+\_\+canvas (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas }\end{DoxyParamCaption})} + + + +Set a new canvas into a context, and return the old one. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em canvas} & Pointer to an existing canvas object to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is a pointer to the canvas being replaced. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+context\+\_\+create}{p.}{group__context_ga33fa4222fe8a78360ee762d7dc21d634}, \doxyref{ps\+\_\+context\+\_\+ref}{p.}{group__context_ga4d922def06765e1cc52c8ab95110d73e}, \doxyref{ps\+\_\+context\+\_\+unref}{p.}{group__context_ga2840f4f552f58220684b0023acb30e2a}, \doxyref{ps\+\_\+context\+\_\+get\+\_\+canvas}{p.}{group__context_ga274cdffd21ed66a070d72d5949b8da4b} +\end{DoxySeeAlso} +\mbox{\label{group__context_ga2840f4f552f58220684b0023acb30e2a}} +\index{Context@{Context}!ps\_context\_unref@{ps\_context\_unref}} +\index{ps\_context\_unref@{ps\_context\_unref}!Context@{Context}} +\doxysubsubsection{ps\_context\_unref()} +{\footnotesize\ttfamily void ps\+\_\+context\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Decrements the reference count for the context object. If the reference count on the context falls to 0, the context is freed. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+context\+\_\+set\+\_\+canvas}{p.}{group__context_ga10513cabc0cbcef20bd9a3c8fe19c456}, \doxyref{ps\+\_\+context\+\_\+get\+\_\+canvas}{p.}{group__context_ga274cdffd21ed66a070d72d5949b8da4b}, \doxyref{ps\+\_\+context\+\_\+create}{p.}{group__context_ga33fa4222fe8a78360ee762d7dc21d634}, \doxyref{ps\+\_\+context\+\_\+ref}{p.}{group__context_ga4d922def06765e1cc52c8ab95110d73e} +\end{DoxySeeAlso} diff --git a/doc/latex/group__data.tex b/doc/latex/group__data.tex new file mode 100644 index 0000000..4dabb75 --- /dev/null +++ b/doc/latex/group__data.tex @@ -0,0 +1,131 @@ +\doxysection{Data Types} +\label{group__data}\index{Data Types@{Data Types}} +\doxysubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \textbf{ True}~1 +\begin{DoxyCompactList}\small\item\em define true value \end{DoxyCompactList}\item +\#define \textbf{ False}~0 +\begin{DoxyCompactList}\small\item\em define false value \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef int \textbf{ ps\+\_\+bool} +\begin{DoxyCompactList}\small\item\em boolean type \end{DoxyCompactList}\item +typedef uint16\+\_\+t \textbf{ ps\+\_\+uchar16} +\begin{DoxyCompactList}\small\item\em 16 bit unsigned unicode character \end{DoxyCompactList}\item +typedef int16\+\_\+t \textbf{ ps\+\_\+schar16} +\begin{DoxyCompactList}\small\item\em 16 bit signed unicode character \end{DoxyCompactList}\item +typedef uint8\+\_\+t \textbf{ ps\+\_\+byte} +\begin{DoxyCompactList}\small\item\em byte data type \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Macro Definition Documentation} +\mbox{\label{group__data_ga306ebd41c0cd1303b1372c6153f0caf8}} +\index{Data Types@{Data Types}!False@{False}} +\index{False@{False}!Data Types@{Data Types}} +\doxysubsubsection{False} +{\footnotesize\ttfamily \#define False~0} + + + +define false value + +\begin{DoxySeeAlso}{See also} +\doxyref{True}{p.}{group__data_gadd3ca9eefe3b5b754426f51d3043e579} +\end{DoxySeeAlso} + + +Definition at line 74 of file picasso.\+h. + +\mbox{\label{group__data_gadd3ca9eefe3b5b754426f51d3043e579}} +\index{Data Types@{Data Types}!True@{True}} +\index{True@{True}!Data Types@{Data Types}} +\doxysubsubsection{True} +{\footnotesize\ttfamily \#define True~1} + + + +define true value + +\begin{DoxySeeAlso}{See also} +\doxyref{False}{p.}{group__data_ga306ebd41c0cd1303b1372c6153f0caf8} +\end{DoxySeeAlso} + + +Definition at line 67 of file picasso.\+h. + + + +\doxysubsection{Typedef Documentation} +\mbox{\label{group__data_gac6a012d4a34bcc846e7ae03790c0af4b}} +\index{Data Types@{Data Types}!ps\_bool@{ps\_bool}} +\index{ps\_bool@{ps\_bool}!Data Types@{Data Types}} +\doxysubsubsection{ps\_bool} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool}} + + + +boolean type + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+uchar16}{p.}{group__data_gaa5272625f3e613e58c9a5ce148b752bc}, \doxyref{ps\+\_\+schar16}{p.}{group__data_ga8a8560ea16c7b1340f7700e3cfb9e927}, \doxyref{ps\+\_\+byte}{p.}{group__data_gab4d32618dcac1b191ee7db92ef475ed0} +\end{DoxySeeAlso} + + +Definition at line 60 of file picasso.\+h. + +\mbox{\label{group__data_gab4d32618dcac1b191ee7db92ef475ed0}} +\index{Data Types@{Data Types}!ps\_byte@{ps\_byte}} +\index{ps\_byte@{ps\_byte}!Data Types@{Data Types}} +\doxysubsubsection{ps\_byte} +{\footnotesize\ttfamily \textbf{ ps\+\_\+byte}} + + + +byte data type + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+bool}{p.}{group__data_gac6a012d4a34bcc846e7ae03790c0af4b}, \doxyref{ps\+\_\+uchar16}{p.}{group__data_gaa5272625f3e613e58c9a5ce148b752bc}, \doxyref{ps\+\_\+schar16}{p.}{group__data_ga8a8560ea16c7b1340f7700e3cfb9e927} +\end{DoxySeeAlso} + + +Definition at line 95 of file picasso.\+h. + +\mbox{\label{group__data_ga8a8560ea16c7b1340f7700e3cfb9e927}} +\index{Data Types@{Data Types}!ps\_schar16@{ps\_schar16}} +\index{ps\_schar16@{ps\_schar16}!Data Types@{Data Types}} +\doxysubsubsection{ps\_schar16} +{\footnotesize\ttfamily \textbf{ ps\+\_\+schar16}} + + + +16 bit signed unicode character + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+bool}{p.}{group__data_gac6a012d4a34bcc846e7ae03790c0af4b}, \doxyref{ps\+\_\+uchar16}{p.}{group__data_gaa5272625f3e613e58c9a5ce148b752bc}, \doxyref{ps\+\_\+byte}{p.}{group__data_gab4d32618dcac1b191ee7db92ef475ed0} +\end{DoxySeeAlso} + + +Definition at line 88 of file picasso.\+h. + +\mbox{\label{group__data_gaa5272625f3e613e58c9a5ce148b752bc}} +\index{Data Types@{Data Types}!ps\_uchar16@{ps\_uchar16}} +\index{ps\_uchar16@{ps\_uchar16}!Data Types@{Data Types}} +\doxysubsubsection{ps\_uchar16} +{\footnotesize\ttfamily \textbf{ ps\+\_\+uchar16}} + + + +16 bit unsigned unicode character + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+bool}{p.}{group__data_gac6a012d4a34bcc846e7ae03790c0af4b}, \doxyref{ps\+\_\+schar16}{p.}{group__data_ga8a8560ea16c7b1340f7700e3cfb9e927}, \doxyref{ps\+\_\+byte}{p.}{group__data_gab4d32618dcac1b191ee7db92ef475ed0} +\end{DoxySeeAlso} + + +Definition at line 81 of file picasso.\+h. + diff --git a/doc/latex/group__drawing.tex b/doc/latex/group__drawing.tex new file mode 100644 index 0000000..b6f12bf --- /dev/null +++ b/doc/latex/group__drawing.tex @@ -0,0 +1,22 @@ +\doxysection{Drawing} +\label{group__drawing}\index{Drawing@{Drawing}} +\doxysubsection*{Modules} +\begin{DoxyCompactItemize} +\item +\textbf{ Fill} +\item +\textbf{ Stroke} +\item +\textbf{ Shadow} +\item +\textbf{ Attribute} +\item +\textbf{ Paint} +\item +\textbf{ Clip} +\item +\textbf{ State} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} diff --git a/doc/latex/group__extension.tex b/doc/latex/group__extension.tex new file mode 100644 index 0000000..e37883d --- /dev/null +++ b/doc/latex/group__extension.tex @@ -0,0 +1,10 @@ +\doxysection{Extensions} +\label{group__extension}\index{Extensions@{Extensions}} +\doxysubsection*{Modules} +\begin{DoxyCompactItemize} +\item +\textbf{ X\+Image Extension} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} diff --git a/doc/latex/group__extimg.tex b/doc/latex/group__extimg.tex new file mode 100644 index 0000000..7a52e59 --- /dev/null +++ b/doc/latex/group__extimg.tex @@ -0,0 +1,16 @@ +\doxysection{X\+Image Extension} +\label{group__extimg}\index{XImage Extension@{XImage Extension}} +\doxysubsection*{Modules} +\begin{DoxyCompactItemize} +\item +\textbf{ X\+Image Object Types} +\item +\textbf{ X\+Image Functions} +\item +\textbf{ X\+Image Coders Register functions} +\item +\textbf{ X\+Image Coders Plugin side functions} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} diff --git a/doc/latex/group__fill.tex b/doc/latex/group__fill.tex new file mode 100644 index 0000000..09d205a --- /dev/null +++ b/doc/latex/group__fill.tex @@ -0,0 +1,121 @@ +\doxysection{Fill} +\label{group__fill}\index{Fill@{Fill}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set a Color to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+image} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+image} $\ast$image) +\begin{DoxyCompactList}\small\item\em Set a image to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+pattern} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+pattern} $\ast$pattern) +\begin{DoxyCompactList}\small\item\em Set a pattern to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+gradient} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Set a gradient to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+canvas} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Set a canvas to the context, it is used to fill a graphic object. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__fill_gaf00aee5b426396648ac0e6e5b6a6e887}} +\index{Fill@{Fill}!ps\_set\_source\_canvas@{ps\_set\_source\_canvas}} +\index{ps\_set\_source\_canvas@{ps\_set\_source\_canvas}!Fill@{Fill}} +\doxysubsubsection{ps\_set\_source\_canvas()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+source\+\_\+canvas (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+canvas} $\ast$}]{canvas }\end{DoxyParamCaption})} + + + +Set a canvas to the context, it is used to fill a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em canvas} & The canvas to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+source\+\_\+color}{p.}{group__fill_ga3a70537035ebc1fa308c8ad3a3b4fca5}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+image}{p.}{group__fill_ga92b37876805e93260f603575c5e81405}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+pattern}{p.}{group__fill_gac06ca408cd82e372a3237998dbd24e47}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+gradient}{p.}{group__fill_ga2f518a5c15af75378668b27a4db70c36} +\end{DoxySeeAlso} +\mbox{\label{group__fill_ga3a70537035ebc1fa308c8ad3a3b4fca5}} +\index{Fill@{Fill}!ps\_set\_source\_color@{ps\_set\_source\_color}} +\index{ps\_set\_source\_color@{ps\_set\_source\_color}!Fill@{Fill}} +\doxysubsubsection{ps\_set\_source\_color()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+source\+\_\+color (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+color} $\ast$}]{color }\end{DoxyParamCaption})} + + + +Set a Color to the context, it is used to fill a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em color} & The color to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+source\+\_\+image}{p.}{group__fill_ga92b37876805e93260f603575c5e81405}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+pattern}{p.}{group__fill_gac06ca408cd82e372a3237998dbd24e47}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+gradient}{p.}{group__fill_ga2f518a5c15af75378668b27a4db70c36}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+canvas}{p.}{group__fill_gaf00aee5b426396648ac0e6e5b6a6e887} +\end{DoxySeeAlso} +\mbox{\label{group__fill_ga2f518a5c15af75378668b27a4db70c36}} +\index{Fill@{Fill}!ps\_set\_source\_gradient@{ps\_set\_source\_gradient}} +\index{ps\_set\_source\_gradient@{ps\_set\_source\_gradient}!Fill@{Fill}} +\doxysubsubsection{ps\_set\_source\_gradient()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+source\+\_\+gradient (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+gradient} $\ast$}]{gradient }\end{DoxyParamCaption})} + + + +Set a gradient to the context, it is used to fill a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em gradient} & The gradient to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+source\+\_\+color}{p.}{group__fill_ga3a70537035ebc1fa308c8ad3a3b4fca5}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+image}{p.}{group__fill_ga92b37876805e93260f603575c5e81405}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+pattern}{p.}{group__fill_gac06ca408cd82e372a3237998dbd24e47}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+canvas}{p.}{group__fill_gaf00aee5b426396648ac0e6e5b6a6e887} +\end{DoxySeeAlso} +\mbox{\label{group__fill_ga92b37876805e93260f603575c5e81405}} +\index{Fill@{Fill}!ps\_set\_source\_image@{ps\_set\_source\_image}} +\index{ps\_set\_source\_image@{ps\_set\_source\_image}!Fill@{Fill}} +\doxysubsubsection{ps\_set\_source\_image()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+source\+\_\+image (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+image} $\ast$}]{image }\end{DoxyParamCaption})} + + + +Set a image to the context, it is used to fill a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em image} & The image to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+source\+\_\+color}{p.}{group__fill_ga3a70537035ebc1fa308c8ad3a3b4fca5}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+pattern}{p.}{group__fill_gac06ca408cd82e372a3237998dbd24e47}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+gradient}{p.}{group__fill_ga2f518a5c15af75378668b27a4db70c36}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+canvas}{p.}{group__fill_gaf00aee5b426396648ac0e6e5b6a6e887} +\end{DoxySeeAlso} +\mbox{\label{group__fill_gac06ca408cd82e372a3237998dbd24e47}} +\index{Fill@{Fill}!ps\_set\_source\_pattern@{ps\_set\_source\_pattern}} +\index{ps\_set\_source\_pattern@{ps\_set\_source\_pattern}!Fill@{Fill}} +\doxysubsubsection{ps\_set\_source\_pattern()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+source\+\_\+pattern (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+pattern} $\ast$}]{pattern }\end{DoxyParamCaption})} + + + +Set a pattern to the context, it is used to fill a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em pattern} & The pattern to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+source\+\_\+color}{p.}{group__fill_ga3a70537035ebc1fa308c8ad3a3b4fca5}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+image}{p.}{group__fill_ga92b37876805e93260f603575c5e81405}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+gradient}{p.}{group__fill_ga2f518a5c15af75378668b27a4db70c36}, \doxyref{ps\+\_\+set\+\_\+source\+\_\+canvas}{p.}{group__fill_gaf00aee5b426396648ac0e6e5b6a6e887} +\end{DoxySeeAlso} diff --git a/doc/latex/group__font.tex b/doc/latex/group__font.tex new file mode 100644 index 0000000..2b186a5 --- /dev/null +++ b/doc/latex/group__font.tex @@ -0,0 +1,391 @@ +\doxysection{Font} +\label{group__font}\index{Font@{Font}} +\doxysubsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \textbf{ \+\_\+ps\+\_\+font\+\_\+info} +\begin{DoxyCompactList}\small\item\em A structure that contains font information. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__font_ga685798dde7574587e4f97fec9212ffc5}} +typedef enum \textbf{ \+\_\+ps\+\_\+charset} \textbf{ ps\+\_\+charset} +\begin{DoxyCompactList}\small\item\em Charset for a font. \end{DoxyCompactList}\item +\mbox{\label{group__font_gac3a9d719ec125b42f239cf29225fc118}} +typedef enum \textbf{ \+\_\+ps\+\_\+font\+\_\+weight} \textbf{ ps\+\_\+font\+\_\+weight} +\begin{DoxyCompactList}\small\item\em Font weight. \end{DoxyCompactList}\item +\mbox{\label{group__font_ga110742303260852264a3ca1a0849acbb}} +typedef struct \textbf{ \+\_\+ps\+\_\+font\+\_\+info} \textbf{ ps\+\_\+font\+\_\+info} +\begin{DoxyCompactList}\small\item\em A structure that contains font information. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+charset} \{ \textbf{ C\+H\+A\+R\+S\+E\+T\+\_\+\+A\+N\+SI}, +\textbf{ C\+H\+A\+R\+S\+E\+T\+\_\+\+U\+N\+I\+C\+O\+DE} + \} +\begin{DoxyCompactList}\small\item\em Charset for a font. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+font\+\_\+weight} \{ \textbf{ F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+R\+E\+G\+U\+L\+AR} = 400, +\textbf{ F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+M\+E\+D\+I\+UM} = 500, +\textbf{ F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+B\+O\+LD} = 700, +\textbf{ F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+H\+E\+A\+VY} = 900 + \} +\begin{DoxyCompactList}\small\item\em Font weight. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+font} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+create} (const char $\ast$name, \textbf{ ps\+\_\+charset} charset, float size, int weight, \textbf{ ps\+\_\+bool} italic) +\begin{DoxyCompactList}\small\item\em Create a font object using the given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+font} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+create\+\_\+copy} (const \textbf{ ps\+\_\+font} $\ast$font) +\begin{DoxyCompactList}\small\item\em Create a copy from an existing font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+font} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+ref} (\textbf{ ps\+\_\+font} $\ast$font) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the font by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+unref} (\textbf{ ps\+\_\+font} $\ast$font) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the font object. If the reference count on the font falls to 0, the font is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+size} (\textbf{ ps\+\_\+font} $\ast$font, float size) +\begin{DoxyCompactList}\small\item\em Set size for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+weight} (\textbf{ ps\+\_\+font} $\ast$font, int weight) +\begin{DoxyCompactList}\small\item\em Set weight for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+italic} (\textbf{ ps\+\_\+font} $\ast$font, \textbf{ ps\+\_\+bool} italic) +\begin{DoxyCompactList}\small\item\em Set italic for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+charset} (\textbf{ ps\+\_\+font} $\ast$font, \textbf{ ps\+\_\+charset} charset) +\begin{DoxyCompactList}\small\item\em Set charset for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+hint} (\textbf{ ps\+\_\+font} $\ast$font, \textbf{ ps\+\_\+bool} hint) +\begin{DoxyCompactList}\small\item\em Set hiting for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+flip} (\textbf{ ps\+\_\+font} $\ast$font, \textbf{ ps\+\_\+bool} flip) +\begin{DoxyCompactList}\small\item\em Set flip for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+font\+\_\+info} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+font\+\_\+info} $\ast$info) +\begin{DoxyCompactList}\small\item\em Return the font information from the graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+font} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+font} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+font} $\ast$font) +\begin{DoxyCompactList}\small\item\em Set a new font to graphics context. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__font_gadbe156942bf075c2ce7cc12cce978bf9}} +\index{Font@{Font}!\_ps\_charset@{\_ps\_charset}} +\index{\_ps\_charset@{\_ps\_charset}!Font@{Font}} +\doxysubsubsection{\_ps\_charset} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+charset}} + + + +Charset for a font. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{CHARSET\_ANSI@{CHARSET\_ANSI}!Font@{Font}}\index{Font@{Font}!CHARSET\_ANSI@{CHARSET\_ANSI}}}\mbox{\label{group__font_ggadbe156942bf075c2ce7cc12cce978bf9aa7b80de7dbeff419ac5754a29679a1f1}} +C\+H\+A\+R\+S\+E\+T\+\_\+\+A\+N\+SI&Ansi I\+S\+O-\/8859-\/x charset \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{CHARSET\_UNICODE@{CHARSET\_UNICODE}!Font@{Font}}\index{Font@{Font}!CHARSET\_UNICODE@{CHARSET\_UNICODE}}}\mbox{\label{group__font_ggadbe156942bf075c2ce7cc12cce978bf9ad01787de9642b347bde7423b1d7954f9}} +C\+H\+A\+R\+S\+E\+T\+\_\+\+U\+N\+I\+C\+O\+DE&Unicode U\+C\+S-\/2 charset \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1919 of file picasso.\+h. + +\mbox{\label{group__font_ga025f88d2a6171a1e298b4a9e8aace679}} +\index{Font@{Font}!\_ps\_font\_weight@{\_ps\_font\_weight}} +\index{\_ps\_font\_weight@{\_ps\_font\_weight}!Font@{Font}} +\doxysubsubsection{\_ps\_font\_weight} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+font\+\_\+weight}} + + + +Font weight. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{FONT\_WEIGHT\_REGULAR@{FONT\_WEIGHT\_REGULAR}!Font@{Font}}\index{Font@{Font}!FONT\_WEIGHT\_REGULAR@{FONT\_WEIGHT\_REGULAR}}}\mbox{\label{group__font_gga025f88d2a6171a1e298b4a9e8aace679a944015c5aed3ba8a1ec4d8cf93267d0c}} +F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+R\+E\+G\+U\+L\+AR&Regular weight. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FONT\_WEIGHT\_MEDIUM@{FONT\_WEIGHT\_MEDIUM}!Font@{Font}}\index{Font@{Font}!FONT\_WEIGHT\_MEDIUM@{FONT\_WEIGHT\_MEDIUM}}}\mbox{\label{group__font_gga025f88d2a6171a1e298b4a9e8aace679aecf0727c44f4af4f58003c3dccb5c183}} +F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+M\+E\+D\+I\+UM&Medium weight. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FONT\_WEIGHT\_BOLD@{FONT\_WEIGHT\_BOLD}!Font@{Font}}\index{Font@{Font}!FONT\_WEIGHT\_BOLD@{FONT\_WEIGHT\_BOLD}}}\mbox{\label{group__font_gga025f88d2a6171a1e298b4a9e8aace679a93a1a52f2b15d038d4cf9029fbaacac2}} +F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+B\+O\+LD&Bold weight. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{FONT\_WEIGHT\_HEAVY@{FONT\_WEIGHT\_HEAVY}!Font@{Font}}\index{Font@{Font}!FONT\_WEIGHT\_HEAVY@{FONT\_WEIGHT\_HEAVY}}}\mbox{\label{group__font_gga025f88d2a6171a1e298b4a9e8aace679a2ad01ff6f2164644cace5268ddd7c2ec}} +F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+H\+E\+A\+VY&Heavy weight. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1933 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__font_gaaefcec3ece8daac5bc135aaff941e322}} +\index{Font@{Font}!ps\_font\_create@{ps\_font\_create}} +\index{ps\_font\_create@{ps\_font\_create}!Font@{Font}} +\doxysubsubsection{ps\_font\_create()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+font} $\ast$ ps\+\_\+font\+\_\+create (\begin{DoxyParamCaption}\item[{const char $\ast$}]{name, }\item[{\textbf{ ps\+\_\+charset}}]{charset, }\item[{float}]{size, }\item[{int}]{weight, }\item[{\textbf{ ps\+\_\+bool}}]{italic }\end{DoxyParamCaption})} + + + +Create a font object using the given parameters. + + +\begin{DoxyParams}{Parameters} +{\em name} & The font family name. \\ +\hline +{\em charset} & The charset type. \\ +\hline +{\em size} & The font size. \\ +\hline +{\em weight} & The font weight. \\ +\hline +{\em italic} & Whether or not it is italic.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new font object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+create\+\_\+copy}{p.}{group__font_ga3aa562cc7f467a41a214e526778601d0}, \doxyref{ps\+\_\+font\+\_\+ref}{p.}{group__font_gaa3f4ad222ac03a2f017fde3eaa462c33}, \doxyref{ps\+\_\+font\+\_\+unref}{p.}{group__font_ga64ab9cf8ac1d102894407f4b3bcbd1be} +\end{DoxySeeAlso} +\mbox{\label{group__font_ga3aa562cc7f467a41a214e526778601d0}} +\index{Font@{Font}!ps\_font\_create\_copy@{ps\_font\_create\_copy}} +\index{ps\_font\_create\_copy@{ps\_font\_create\_copy}!Font@{Font}} +\doxysubsubsection{ps\_font\_create\_copy()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+font} $\ast$ ps\+\_\+font\+\_\+create\+\_\+copy (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+font} $\ast$}]{font }\end{DoxyParamCaption})} + + + +Create a copy from an existing font object. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new font object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+create}{p.}{group__font_gaaefcec3ece8daac5bc135aaff941e322}, \doxyref{ps\+\_\+font\+\_\+ref}{p.}{group__font_gaa3f4ad222ac03a2f017fde3eaa462c33}, \doxyref{ps\+\_\+font\+\_\+unref}{p.}{group__font_ga64ab9cf8ac1d102894407f4b3bcbd1be} +\end{DoxySeeAlso} +\mbox{\label{group__font_gaa3f4ad222ac03a2f017fde3eaa462c33}} +\index{Font@{Font}!ps\_font\_ref@{ps\_font\_ref}} +\index{ps\_font\_ref@{ps\_font\_ref}!Font@{Font}} +\doxysubsubsection{ps\_font\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+font} $\ast$ ps\+\_\+font\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+font} $\ast$}]{font }\end{DoxyParamCaption})} + + + +Increases the reference count of the font by 1. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the font object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+create}{p.}{group__font_gaaefcec3ece8daac5bc135aaff941e322}, \doxyref{ps\+\_\+font\+\_\+create\+\_\+copy}{p.}{group__font_ga3aa562cc7f467a41a214e526778601d0}, \doxyref{ps\+\_\+font\+\_\+unref}{p.}{group__font_ga64ab9cf8ac1d102894407f4b3bcbd1be} +\end{DoxySeeAlso} +\mbox{\label{group__font_ga0abc4de193c6c512b6131b1c890167d5}} +\index{Font@{Font}!ps\_font\_set\_charset@{ps\_font\_set\_charset}} +\index{ps\_font\_set\_charset@{ps\_font\_set\_charset}!Font@{Font}} +\doxysubsubsection{ps\_font\_set\_charset()} +{\footnotesize\ttfamily void ps\+\_\+font\+\_\+set\+\_\+charset (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+font} $\ast$}]{font, }\item[{\textbf{ ps\+\_\+charset}}]{charset }\end{DoxyParamCaption})} + + + +Set charset for a font object. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object. \\ +\hline +{\em charset} & Charset for the font.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+set\+\_\+size}{p.}{group__font_gad71cc608b2259f1bde9fb86aca205695}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+weight}{p.}{group__font_ga32c69b4397b77bdac151c829a3121aad}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+italic}{p.}{group__font_gaeaf6470fd1661ef158d09c8b84d029ca}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+hint}{p.}{group__font_ga54faab6d1e061307be5b12db4e46a17d}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+flip}{p.}{group__font_ga25507395e231d29567f4cda01242419e} +\end{DoxySeeAlso} +\mbox{\label{group__font_ga25507395e231d29567f4cda01242419e}} +\index{Font@{Font}!ps\_font\_set\_flip@{ps\_font\_set\_flip}} +\index{ps\_font\_set\_flip@{ps\_font\_set\_flip}!Font@{Font}} +\doxysubsubsection{ps\_font\_set\_flip()} +{\footnotesize\ttfamily void ps\+\_\+font\+\_\+set\+\_\+flip (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+font} $\ast$}]{font, }\item[{\textbf{ ps\+\_\+bool}}]{flip }\end{DoxyParamCaption})} + + + +Set flip for a font object. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object. \\ +\hline +{\em flip} & Whether or not flip y for the font. (False default)\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+set\+\_\+size}{p.}{group__font_gad71cc608b2259f1bde9fb86aca205695}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+weight}{p.}{group__font_ga32c69b4397b77bdac151c829a3121aad}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+italic}{p.}{group__font_gaeaf6470fd1661ef158d09c8b84d029ca}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+charset}{p.}{group__font_ga0abc4de193c6c512b6131b1c890167d5}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+hint}{p.}{group__font_ga54faab6d1e061307be5b12db4e46a17d} +\end{DoxySeeAlso} +\mbox{\label{group__font_ga54faab6d1e061307be5b12db4e46a17d}} +\index{Font@{Font}!ps\_font\_set\_hint@{ps\_font\_set\_hint}} +\index{ps\_font\_set\_hint@{ps\_font\_set\_hint}!Font@{Font}} +\doxysubsubsection{ps\_font\_set\_hint()} +{\footnotesize\ttfamily void ps\+\_\+font\+\_\+set\+\_\+hint (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+font} $\ast$}]{font, }\item[{\textbf{ ps\+\_\+bool}}]{hint }\end{DoxyParamCaption})} + + + +Set hiting for a font object. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object. \\ +\hline +{\em hint} & Whether or not auto hiting for the font. (True default)\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+set\+\_\+size}{p.}{group__font_gad71cc608b2259f1bde9fb86aca205695}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+weight}{p.}{group__font_ga32c69b4397b77bdac151c829a3121aad}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+italic}{p.}{group__font_gaeaf6470fd1661ef158d09c8b84d029ca}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+charset}{p.}{group__font_ga0abc4de193c6c512b6131b1c890167d5}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+flip}{p.}{group__font_ga25507395e231d29567f4cda01242419e} +\end{DoxySeeAlso} +\mbox{\label{group__font_gaeaf6470fd1661ef158d09c8b84d029ca}} +\index{Font@{Font}!ps\_font\_set\_italic@{ps\_font\_set\_italic}} +\index{ps\_font\_set\_italic@{ps\_font\_set\_italic}!Font@{Font}} +\doxysubsubsection{ps\_font\_set\_italic()} +{\footnotesize\ttfamily void ps\+\_\+font\+\_\+set\+\_\+italic (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+font} $\ast$}]{font, }\item[{\textbf{ ps\+\_\+bool}}]{italic }\end{DoxyParamCaption})} + + + +Set italic for a font object. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object. \\ +\hline +{\em italic} & Whether or not italic for the font. (False default)\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+set\+\_\+size}{p.}{group__font_gad71cc608b2259f1bde9fb86aca205695}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+weight}{p.}{group__font_ga32c69b4397b77bdac151c829a3121aad}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+charset}{p.}{group__font_ga0abc4de193c6c512b6131b1c890167d5}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+hint}{p.}{group__font_ga54faab6d1e061307be5b12db4e46a17d}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+flip}{p.}{group__font_ga25507395e231d29567f4cda01242419e} +\end{DoxySeeAlso} +\mbox{\label{group__font_gad71cc608b2259f1bde9fb86aca205695}} +\index{Font@{Font}!ps\_font\_set\_size@{ps\_font\_set\_size}} +\index{ps\_font\_set\_size@{ps\_font\_set\_size}!Font@{Font}} +\doxysubsubsection{ps\_font\_set\_size()} +{\footnotesize\ttfamily void ps\+\_\+font\+\_\+set\+\_\+size (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+font} $\ast$}]{font, }\item[{float}]{size }\end{DoxyParamCaption})} + + + +Set size for a font object. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object. \\ +\hline +{\em size} & Size for the font.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+set\+\_\+weight}{p.}{group__font_ga32c69b4397b77bdac151c829a3121aad}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+italic}{p.}{group__font_gaeaf6470fd1661ef158d09c8b84d029ca}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+charset}{p.}{group__font_ga0abc4de193c6c512b6131b1c890167d5}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+hint}{p.}{group__font_ga54faab6d1e061307be5b12db4e46a17d}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+flip}{p.}{group__font_ga25507395e231d29567f4cda01242419e} +\end{DoxySeeAlso} +\mbox{\label{group__font_ga32c69b4397b77bdac151c829a3121aad}} +\index{Font@{Font}!ps\_font\_set\_weight@{ps\_font\_set\_weight}} +\index{ps\_font\_set\_weight@{ps\_font\_set\_weight}!Font@{Font}} +\doxysubsubsection{ps\_font\_set\_weight()} +{\footnotesize\ttfamily void ps\+\_\+font\+\_\+set\+\_\+weight (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+font} $\ast$}]{font, }\item[{int}]{weight }\end{DoxyParamCaption})} + + + +Set weight for a font object. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object. \\ +\hline +{\em weight} & Weight for the font.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+set\+\_\+size}{p.}{group__font_gad71cc608b2259f1bde9fb86aca205695}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+italic}{p.}{group__font_gaeaf6470fd1661ef158d09c8b84d029ca}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+charset}{p.}{group__font_ga0abc4de193c6c512b6131b1c890167d5}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+hint}{p.}{group__font_ga54faab6d1e061307be5b12db4e46a17d}, \doxyref{ps\+\_\+font\+\_\+set\+\_\+flip}{p.}{group__font_ga25507395e231d29567f4cda01242419e} +\end{DoxySeeAlso} +\mbox{\label{group__font_ga64ab9cf8ac1d102894407f4b3bcbd1be}} +\index{Font@{Font}!ps\_font\_unref@{ps\_font\_unref}} +\index{ps\_font\_unref@{ps\_font\_unref}!Font@{Font}} +\doxysubsubsection{ps\_font\_unref()} +{\footnotesize\ttfamily void ps\+\_\+font\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+font} $\ast$}]{font }\end{DoxyParamCaption})} + + + +Decrements the reference count for the font object. If the reference count on the font falls to 0, the font is freed. + + +\begin{DoxyParams}{Parameters} +{\em font} & Pointer to an existing font object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+font\+\_\+create}{p.}{group__font_gaaefcec3ece8daac5bc135aaff941e322}, \doxyref{ps\+\_\+font\+\_\+create\+\_\+copy}{p.}{group__font_ga3aa562cc7f467a41a214e526778601d0}, \doxyref{ps\+\_\+font\+\_\+ref}{p.}{group__font_gaa3f4ad222ac03a2f017fde3eaa462c33} +\end{DoxySeeAlso} +\mbox{\label{group__font_ga774a7aa9bdf9357bd395589c6fde5575}} +\index{Font@{Font}!ps\_get\_font\_info@{ps\_get\_font\_info}} +\index{ps\_get\_font\_info@{ps\_get\_font\_info}!Font@{Font}} +\doxysubsubsection{ps\_get\_font\_info()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+get\+\_\+font\+\_\+info (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+font\+\_\+info} $\ast$}]{info }\end{DoxyParamCaption})} + + + +Return the font information from the graphics context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em info} & Pointer to a structure to receiving the font information.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+font}{p.}{group__font_gaee84f9f5831581387d200ec408358c51} +\end{DoxySeeAlso} +\mbox{\label{group__font_gaee84f9f5831581387d200ec408358c51}} +\index{Font@{Font}!ps\_set\_font@{ps\_set\_font}} +\index{ps\_set\_font@{ps\_set\_font}!Font@{Font}} +\doxysubsubsection{ps\_set\_font()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+font} $\ast$ ps\+\_\+set\+\_\+font (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+font} $\ast$}]{font }\end{DoxyParamCaption})} + + + +Set a new font to graphics context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em font} & The new font to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to old font object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+get\+\_\+font\+\_\+info}{p.}{group__font_ga774a7aa9bdf9357bd395589c6fde5575} +\end{DoxySeeAlso} diff --git a/doc/latex/group__functions.tex b/doc/latex/group__functions.tex new file mode 100644 index 0000000..7056b41 --- /dev/null +++ b/doc/latex/group__functions.tex @@ -0,0 +1,221 @@ +\doxysection{X\+Image Functions} +\label{group__functions}\index{XImage Functions@{XImage Functions}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__functions_gaf258071fa6a65940e43a8edda1020473}} +typedef int($\ast$ \textbf{ image\+\_\+writer\+\_\+fn}) (void $\ast$param, const \textbf{ ps\+\_\+byte} $\ast$data, size\+\_\+t length) +\begin{DoxyCompactList}\small\item\em Callback function for saving image data. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+init} (void) +\begin{DoxyCompactList}\small\item\em Initialze the library and load resources. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+shutdown} (void) +\begin{DoxyCompactList}\small\item\em Release resources and shutdoen. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ psx\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+create\+\_\+from\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch, int $\ast$err\+\_\+code) +\begin{DoxyCompactList}\small\item\em Create a new psx\+\_\+image using a copy of given address in memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ psx\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+load} (const char $\ast$file\+\_\+name, int $\ast$err\+\_\+code) +\begin{DoxyCompactList}\small\item\em Create a new psx\+\_\+image object and load from file. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ psx\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+load\+\_\+from\+\_\+memory} (const \textbf{ ps\+\_\+byte} $\ast$data, size\+\_\+t length, int $\ast$err\+\_\+code) +\begin{DoxyCompactList}\small\item\em Create a new psx\+\_\+image object and load data from memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+save} (const \textbf{ psx\+\_\+image} $\ast$image, \textbf{ image\+\_\+writer\+\_\+fn} func, void $\ast$param, const char $\ast$type, float quality) +\begin{DoxyCompactList}\small\item\em Encoding psx\+\_\+image to a gaving format and output it. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+save\+\_\+to\+\_\+file} (const \textbf{ psx\+\_\+image} $\ast$image, const char $\ast$file\+\_\+name, const char $\ast$type, float quality) +\begin{DoxyCompactList}\small\item\em Encoding psx\+\_\+image to a gaving format and output to a file. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+destroy} (\textbf{ psx\+\_\+image} $\ast$image) +\begin{DoxyCompactList}\small\item\em Destroy the psx\+\_\+image object and release resources. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__functions_gad40645d0b040d9bf426800c1ce6115c2}} +\index{XImage Functions@{XImage Functions}!psx\_image\_create\_from\_data@{psx\_image\_create\_from\_data}} +\index{psx\_image\_create\_from\_data@{psx\_image\_create\_from\_data}!XImage Functions@{XImage Functions}} +\doxysubsubsection{psx\_image\_create\_from\_data()} +{\footnotesize\ttfamily \textbf{ psx\+\_\+image} $\ast$ psx\+\_\+image\+\_\+create\+\_\+from\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+byte} $\ast$}]{data, }\item[{\textbf{ ps\+\_\+color\+\_\+format}}]{fmt, }\item[{int}]{width, }\item[{int}]{height, }\item[{int}]{pitch, }\item[{int $\ast$}]{err\+\_\+code }\end{DoxyParamCaption})} + + + +Create a new psx\+\_\+image using a copy of given address in memory. + + +\begin{DoxyParams}{Parameters} +{\em data} & A pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch $\ast$ height) bytes. \\ +\hline +{\em fmt} & The Pixel format to use for the image. \\ +\hline +{\em width} & The width, in pixels, of the required image. \\ +\hline +{\em height} & The height, in pixels, of the required image. \\ +\hline +{\em pitch} & The number of bytes per row, of the required image. \\ +\hline +{\em err\+\_\+code} & Pointer to a value to receiving the result code. can be N\+U\+LL.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new psx\+\_\+image object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+load}{p.}{group__functions_gaba934b22f7e53c2d744f340cde3fefe9} \doxyref{psx\+\_\+image\+\_\+load\+\_\+from\+\_\+memory}{p.}{group__functions_gab7b5a6aabdaf060a25bc6c608b42431c} \doxyref{psx\+\_\+image\+\_\+destroy}{p.}{group__functions_ga018b18d8cd3730dc8fe86ff37bffd9a8} +\end{DoxySeeAlso} +\mbox{\label{group__functions_ga018b18d8cd3730dc8fe86ff37bffd9a8}} +\index{XImage Functions@{XImage Functions}!psx\_image\_destroy@{psx\_image\_destroy}} +\index{psx\_image\_destroy@{psx\_image\_destroy}!XImage Functions@{XImage Functions}} +\doxysubsubsection{psx\_image\_destroy()} +{\footnotesize\ttfamily int psx\+\_\+image\+\_\+destroy (\begin{DoxyParamCaption}\item[{\textbf{ psx\+\_\+image} $\ast$}]{image }\end{DoxyParamCaption})} + + + +Destroy the psx\+\_\+image object and release resources. + + +\begin{DoxyParams}{Parameters} +{\em image} & Pointer to an existing psx\+\_\+image object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Result code returned. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+load}{p.}{group__functions_gaba934b22f7e53c2d744f340cde3fefe9} \doxyref{psx\+\_\+image\+\_\+load\+\_\+from\+\_\+memory}{p.}{group__functions_gab7b5a6aabdaf060a25bc6c608b42431c} +\end{DoxySeeAlso} +\mbox{\label{group__functions_ga8449a503380d339ecccdd0ecf8074b82}} +\index{XImage Functions@{XImage Functions}!psx\_image\_init@{psx\_image\_init}} +\index{psx\_image\_init@{psx\_image\_init}!XImage Functions@{XImage Functions}} +\doxysubsubsection{psx\_image\_init()} +{\footnotesize\ttfamily int psx\+\_\+image\+\_\+init (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Initialze the library and load resources. + +\begin{DoxyReturn}{Returns} +Result code returned. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+shutdown}{p.}{group__functions_ga886028c5ac25bb636de0abd5c508e0a1} +\end{DoxySeeAlso} +\mbox{\label{group__functions_gaba934b22f7e53c2d744f340cde3fefe9}} +\index{XImage Functions@{XImage Functions}!psx\_image\_load@{psx\_image\_load}} +\index{psx\_image\_load@{psx\_image\_load}!XImage Functions@{XImage Functions}} +\doxysubsubsection{psx\_image\_load()} +{\footnotesize\ttfamily \textbf{ psx\+\_\+image} $\ast$ psx\+\_\+image\+\_\+load (\begin{DoxyParamCaption}\item[{const char $\ast$}]{file\+\_\+name, }\item[{int $\ast$}]{err\+\_\+code }\end{DoxyParamCaption})} + + + +Create a new psx\+\_\+image object and load from file. + + +\begin{DoxyParams}{Parameters} +{\em file\+\_\+name} & The image file path which will be loaded, which is encoded by utf8. \\ +\hline +{\em err\+\_\+code} & Pointer to a value to receiving the result code. can be N\+U\+LL.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If successs, the return value is the pointer to new psx\+\_\+image object. If fails, the return value is N\+U\+LL, and result will be return by {\itshape err\+\_\+code}. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+destroy}{p.}{group__functions_ga018b18d8cd3730dc8fe86ff37bffd9a8} \doxyref{psx\+\_\+image\+\_\+load\+\_\+from\+\_\+memory}{p.}{group__functions_gab7b5a6aabdaf060a25bc6c608b42431c} \doxyref{psx\+\_\+image\+\_\+create\+\_\+from\+\_\+data}{p.}{group__functions_gad40645d0b040d9bf426800c1ce6115c2} +\end{DoxySeeAlso} +\mbox{\label{group__functions_gab7b5a6aabdaf060a25bc6c608b42431c}} +\index{XImage Functions@{XImage Functions}!psx\_image\_load\_from\_memory@{psx\_image\_load\_from\_memory}} +\index{psx\_image\_load\_from\_memory@{psx\_image\_load\_from\_memory}!XImage Functions@{XImage Functions}} +\doxysubsubsection{psx\_image\_load\_from\_memory()} +{\footnotesize\ttfamily \textbf{ psx\+\_\+image} $\ast$ psx\+\_\+image\+\_\+load\+\_\+from\+\_\+memory (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+byte} $\ast$}]{data, }\item[{size\+\_\+t}]{length, }\item[{int $\ast$}]{err\+\_\+code }\end{DoxyParamCaption})} + + + +Create a new psx\+\_\+image object and load data from memory. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to data buffer in memeory. \\ +\hline +{\em length} & Data length bytes. \\ +\hline +{\em err\+\_\+code} & Pointer to a value to receiving the result code. can be N\+U\+LL.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If successs, the return value is the pointer to new psx\+\_\+image object. If fails, the return value is N\+U\+LL, and result will be return by {\itshape err\+\_\+code}. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+destroy}{p.}{group__functions_ga018b18d8cd3730dc8fe86ff37bffd9a8} \doxyref{psx\+\_\+image\+\_\+load}{p.}{group__functions_gaba934b22f7e53c2d744f340cde3fefe9} +\end{DoxySeeAlso} +\mbox{\label{group__functions_ga204b2a1fd4375d5fa75ae2c1b6f66689}} +\index{XImage Functions@{XImage Functions}!psx\_image\_save@{psx\_image\_save}} +\index{psx\_image\_save@{psx\_image\_save}!XImage Functions@{XImage Functions}} +\doxysubsubsection{psx\_image\_save()} +{\footnotesize\ttfamily int psx\+\_\+image\+\_\+save (\begin{DoxyParamCaption}\item[{const \textbf{ psx\+\_\+image} $\ast$}]{image, }\item[{\textbf{ image\+\_\+writer\+\_\+fn}}]{func, }\item[{void $\ast$}]{param, }\item[{const char $\ast$}]{type, }\item[{float}]{quality }\end{DoxyParamCaption})} + + + +Encoding psx\+\_\+image to a gaving format and output it. + + +\begin{DoxyParams}{Parameters} +{\em image} & Pointer to an psx\+\_\+image object. \\ +\hline +{\em func} & User define saving callback function. \\ +\hline +{\em param} & User define saving callback param. \\ +\hline +{\em type} & Image type short name. (i.\+e \char`\"{}png\char`\"{} \char`\"{}jpg\char`\"{} \char`\"{}bmp\char`\"{}) \\ +\hline +{\em quality} & Image encoding quality. (0.\+1 $\sim$ 1.\+0)\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Result code returned. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+save\+\_\+to\+\_\+file}{p.}{group__functions_gaa1b10b378e6c58563e5f36bdf4d282c6} +\end{DoxySeeAlso} +\mbox{\label{group__functions_gaa1b10b378e6c58563e5f36bdf4d282c6}} +\index{XImage Functions@{XImage Functions}!psx\_image\_save\_to\_file@{psx\_image\_save\_to\_file}} +\index{psx\_image\_save\_to\_file@{psx\_image\_save\_to\_file}!XImage Functions@{XImage Functions}} +\doxysubsubsection{psx\_image\_save\_to\_file()} +{\footnotesize\ttfamily int psx\+\_\+image\+\_\+save\+\_\+to\+\_\+file (\begin{DoxyParamCaption}\item[{const \textbf{ psx\+\_\+image} $\ast$}]{image, }\item[{const char $\ast$}]{file\+\_\+name, }\item[{const char $\ast$}]{type, }\item[{float}]{quality }\end{DoxyParamCaption})} + + + +Encoding psx\+\_\+image to a gaving format and output to a file. + + +\begin{DoxyParams}{Parameters} +{\em image} & Pointer to an psx\+\_\+image object. \\ +\hline +{\em file\+\_\+name} & The image file path which will be output, which is encoded by utf8. \\ +\hline +{\em type} & Image type short name. (i.\+e \char`\"{}png\char`\"{} \char`\"{}jpg\char`\"{} \char`\"{}bmp\char`\"{}) \\ +\hline +{\em quality} & Image encoding quality. (0.\+1 $\sim$ 1.\+0)\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Result code returned. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+save}{p.}{group__functions_ga204b2a1fd4375d5fa75ae2c1b6f66689} +\end{DoxySeeAlso} +\mbox{\label{group__functions_ga886028c5ac25bb636de0abd5c508e0a1}} +\index{XImage Functions@{XImage Functions}!psx\_image\_shutdown@{psx\_image\_shutdown}} +\index{psx\_image\_shutdown@{psx\_image\_shutdown}!XImage Functions@{XImage Functions}} +\doxysubsubsection{psx\_image\_shutdown()} +{\footnotesize\ttfamily int psx\+\_\+image\+\_\+shutdown (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Release resources and shutdoen. + +\begin{DoxyReturn}{Returns} +Result code returned. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+init}{p.}{group__functions_ga8449a503380d339ecccdd0ecf8074b82} +\end{DoxySeeAlso} diff --git a/doc/latex/group__geometry.tex b/doc/latex/group__geometry.tex new file mode 100644 index 0000000..772ceaa --- /dev/null +++ b/doc/latex/group__geometry.tex @@ -0,0 +1,372 @@ +\doxysection{Geometry} +\label{group__geometry}\index{Geometry@{Geometry}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+new\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Create a new empty path in the graphic context, clear the old one. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+new\+\_\+sub\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Close the current path, and add a new empty sub path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+add\+\_\+sub\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Add a new sub path to current path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Replace the current path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Get the current path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+close\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Close the current path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+move\+\_\+to} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Begin a new sub path, and set the current point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+line\+\_\+to} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Add a line to the current path from the current point to given point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+bezier\+\_\+curve\+\_\+to} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$fcp, const \textbf{ ps\+\_\+point} $\ast$scp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add a cubic bezier spline to the current path from current point to end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+quad\+\_\+curve\+\_\+to} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$cp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add a quadratic bezier spline to the current path from current point to end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+arc} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$cp, float radius, float sangle, float eangle, \textbf{ ps\+\_\+bool} clockwise) +\begin{DoxyCompactList}\small\item\em Add a circular arc to the current path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+tangent\+\_\+arc} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect, float sangle, float sweep) +\begin{DoxyCompactList}\small\item\em Add a circular arc which is inner tangent from a rectangle. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+rectangle} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Add a rectangle to the current path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+rounded\+\_\+rect} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby) +\begin{DoxyCompactList}\small\item\em Add a rounded rectangle to the current path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+ellipse} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Adds an ellipse to the current path which fits inside the specified rectangle. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__geometry_gaccc48dc1075994d7ac6154676eb5641f}} +\index{Geometry@{Geometry}!ps\_add\_sub\_path@{ps\_add\_sub\_path}} +\index{ps\_add\_sub\_path@{ps\_add\_sub\_path}!Geometry@{Geometry}} +\doxysubsubsection{ps\_add\_sub\_path()} +{\footnotesize\ttfamily void ps\+\_\+add\+\_\+sub\+\_\+path (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Add a new sub path to current path in the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em path} & The path will be add to graphic context.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+new\+\_\+path}{p.}{group__geometry_ga1dd5a2457bbc70bb4aab514c71657d47}, \doxyref{ps\+\_\+new\+\_\+sub\+\_\+path}{p.}{group__geometry_gabc1395130cd155b9e7540d9c66423edd}, \doxyref{ps\+\_\+set\+\_\+path}{p.}{group__geometry_gad29671ee13659f93f1ed9f04e2fef33f}, \doxyref{ps\+\_\+get\+\_\+path}{p.}{group__geometry_ga12919bbac3b448c53c1b8200a464fe01}, \doxyref{ps\+\_\+close\+\_\+path}{p.}{group__geometry_ga7ddb8dc9dd946b85960c2e220d309131} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga221af9d23e478b7609b20dc0e780c206}} +\index{Geometry@{Geometry}!ps\_arc@{ps\_arc}} +\index{ps\_arc@{ps\_arc}!Geometry@{Geometry}} +\doxysubsubsection{ps\_arc()} +{\footnotesize\ttfamily void ps\+\_\+arc (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{cp, }\item[{float}]{radius, }\item[{float}]{sangle, }\item[{float}]{eangle, }\item[{\textbf{ ps\+\_\+bool}}]{clockwise }\end{DoxyParamCaption})} + + + +Add a circular arc to the current path. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em cp} & The center point of the arc. \\ +\hline +{\em radius} & The radius of the arc. \\ +\hline +{\em sangle} & The start angle, in radians. \\ +\hline +{\em eangle} & The end angle, in radians. \\ +\hline +{\em clockwise} & True is clockwise, False is counter clockwise.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+move\+\_\+to}{p.}{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}, \doxyref{ps\+\_\+line\+\_\+to}{p.}{group__geometry_ga33144a05340d81d57be43ec15572288c}, \doxyref{ps\+\_\+bezier\+\_\+curve\+\_\+to}{p.}{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}, \doxyref{ps\+\_\+quad\+\_\+curve\+\_\+to}{p.}{group__geometry_ga1423d2871e7c875312ebd931953d4948}, \doxyref{ps\+\_\+tangent\+\_\+arc}{p.}{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}, \doxyref{ps\+\_\+rectangle}{p.}{group__geometry_ga5011a18fa50227967380b08956ceec0f}, \doxyref{ps\+\_\+rounded\+\_\+rect}{p.}{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b}, \doxyref{ps\+\_\+ellipse}{p.}{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}} +\index{Geometry@{Geometry}!ps\_bezier\_curve\_to@{ps\_bezier\_curve\_to}} +\index{ps\_bezier\_curve\_to@{ps\_bezier\_curve\_to}!Geometry@{Geometry}} +\doxysubsubsection{ps\_bezier\_curve\_to()} +{\footnotesize\ttfamily void ps\+\_\+bezier\+\_\+curve\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{fcp, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{scp, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{ep }\end{DoxyParamCaption})} + + + +Add a cubic bezier spline to the current path from current point to end point. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em fcp} & The first control point of the curve. \\ +\hline +{\em scp} & The second control point of the curve. \\ +\hline +{\em ep} & The end point of the curve.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+move\+\_\+to}{p.}{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}, \doxyref{ps\+\_\+line\+\_\+to}{p.}{group__geometry_ga33144a05340d81d57be43ec15572288c}, \doxyref{ps\+\_\+quad\+\_\+curve\+\_\+to}{p.}{group__geometry_ga1423d2871e7c875312ebd931953d4948}, \doxyref{ps\+\_\+arc}{p.}{group__geometry_ga221af9d23e478b7609b20dc0e780c206}, \doxyref{ps\+\_\+tangent\+\_\+arc}{p.}{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}, \doxyref{ps\+\_\+rectangle}{p.}{group__geometry_ga5011a18fa50227967380b08956ceec0f}, \doxyref{ps\+\_\+rounded\+\_\+rect}{p.}{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b}, \doxyref{ps\+\_\+ellipse}{p.}{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga7ddb8dc9dd946b85960c2e220d309131}} +\index{Geometry@{Geometry}!ps\_close\_path@{ps\_close\_path}} +\index{ps\_close\_path@{ps\_close\_path}!Geometry@{Geometry}} +\doxysubsubsection{ps\_close\_path()} +{\footnotesize\ttfamily void ps\+\_\+close\+\_\+path (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Close the current path in the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+new\+\_\+path}{p.}{group__geometry_ga1dd5a2457bbc70bb4aab514c71657d47}, \doxyref{ps\+\_\+new\+\_\+sub\+\_\+path}{p.}{group__geometry_gabc1395130cd155b9e7540d9c66423edd}, \doxyref{ps\+\_\+set\+\_\+path}{p.}{group__geometry_gad29671ee13659f93f1ed9f04e2fef33f}, \doxyref{ps\+\_\+get\+\_\+path}{p.}{group__geometry_ga12919bbac3b448c53c1b8200a464fe01}, \doxyref{ps\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__geometry_gaccc48dc1075994d7ac6154676eb5641f} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8}} +\index{Geometry@{Geometry}!ps\_ellipse@{ps\_ellipse}} +\index{ps\_ellipse@{ps\_ellipse}!Geometry@{Geometry}} +\doxysubsubsection{ps\_ellipse()} +{\footnotesize\ttfamily void ps\+\_\+ellipse (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Adds an ellipse to the current path which fits inside the specified rectangle. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em rect} & The rectangle which the ellipse to fit in.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+move\+\_\+to}{p.}{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}, \doxyref{ps\+\_\+line\+\_\+to}{p.}{group__geometry_ga33144a05340d81d57be43ec15572288c}, \doxyref{ps\+\_\+bezier\+\_\+curve\+\_\+to}{p.}{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}, \doxyref{ps\+\_\+quad\+\_\+curve\+\_\+to}{p.}{group__geometry_ga1423d2871e7c875312ebd931953d4948}, \doxyref{ps\+\_\+arc}{p.}{group__geometry_ga221af9d23e478b7609b20dc0e780c206}, \doxyref{ps\+\_\+tangent\+\_\+arc}{p.}{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}, \doxyref{ps\+\_\+rectangle}{p.}{group__geometry_ga5011a18fa50227967380b08956ceec0f}, \doxyref{ps\+\_\+rounded\+\_\+rect}{p.}{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga12919bbac3b448c53c1b8200a464fe01}} +\index{Geometry@{Geometry}!ps\_get\_path@{ps\_get\_path}} +\index{ps\_get\_path@{ps\_get\_path}!Geometry@{Geometry}} +\doxysubsubsection{ps\_get\_path()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+get\+\_\+path (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Get the current path in the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em path} & Pointer to a object to receiving the path.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+new\+\_\+path}{p.}{group__geometry_ga1dd5a2457bbc70bb4aab514c71657d47}, \doxyref{ps\+\_\+new\+\_\+sub\+\_\+path}{p.}{group__geometry_gabc1395130cd155b9e7540d9c66423edd}, \doxyref{ps\+\_\+close\+\_\+path}{p.}{group__geometry_ga7ddb8dc9dd946b85960c2e220d309131}, \doxyref{ps\+\_\+set\+\_\+path}{p.}{group__geometry_gad29671ee13659f93f1ed9f04e2fef33f}, \doxyref{ps\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__geometry_gaccc48dc1075994d7ac6154676eb5641f} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga33144a05340d81d57be43ec15572288c}} +\index{Geometry@{Geometry}!ps\_line\_to@{ps\_line\_to}} +\index{ps\_line\_to@{ps\_line\_to}!Geometry@{Geometry}} +\doxysubsubsection{ps\_line\_to()} +{\footnotesize\ttfamily void ps\+\_\+line\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{point }\end{DoxyParamCaption})} + + + +Add a line to the current path from the current point to given point. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em point} & The point which will line to.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+move\+\_\+to}{p.}{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}, \doxyref{ps\+\_\+bezier\+\_\+curve\+\_\+to}{p.}{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}, \doxyref{ps\+\_\+quad\+\_\+curve\+\_\+to}{p.}{group__geometry_ga1423d2871e7c875312ebd931953d4948} \doxyref{ps\+\_\+arc}{p.}{group__geometry_ga221af9d23e478b7609b20dc0e780c206}, \doxyref{ps\+\_\+tangent\+\_\+arc}{p.}{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}, \doxyref{ps\+\_\+rectangle}{p.}{group__geometry_ga5011a18fa50227967380b08956ceec0f}, \doxyref{ps\+\_\+rounded\+\_\+rect}{p.}{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b}, \doxyref{ps\+\_\+ellipse}{p.}{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}} +\index{Geometry@{Geometry}!ps\_move\_to@{ps\_move\_to}} +\index{ps\_move\_to@{ps\_move\_to}!Geometry@{Geometry}} +\doxysubsubsection{ps\_move\_to()} +{\footnotesize\ttfamily void ps\+\_\+move\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{point }\end{DoxyParamCaption})} + + + +Begin a new sub path, and set the current point. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em point} & The point which will be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+line\+\_\+to}{p.}{group__geometry_ga33144a05340d81d57be43ec15572288c}, \doxyref{ps\+\_\+bezier\+\_\+curve\+\_\+to}{p.}{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}, \doxyref{ps\+\_\+quad\+\_\+curve\+\_\+to}{p.}{group__geometry_ga1423d2871e7c875312ebd931953d4948} \doxyref{ps\+\_\+arc}{p.}{group__geometry_ga221af9d23e478b7609b20dc0e780c206}, \doxyref{ps\+\_\+tangent\+\_\+arc}{p.}{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}, \doxyref{ps\+\_\+rectangle}{p.}{group__geometry_ga5011a18fa50227967380b08956ceec0f}, \doxyref{ps\+\_\+rounded\+\_\+rect}{p.}{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b}, \doxyref{ps\+\_\+ellipse}{p.}{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga1dd5a2457bbc70bb4aab514c71657d47}} +\index{Geometry@{Geometry}!ps\_new\_path@{ps\_new\_path}} +\index{ps\_new\_path@{ps\_new\_path}!Geometry@{Geometry}} +\doxysubsubsection{ps\_new\_path()} +{\footnotesize\ttfamily void ps\+\_\+new\+\_\+path (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Create a new empty path in the graphic context, clear the old one. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+new\+\_\+sub\+\_\+path}{p.}{group__geometry_gabc1395130cd155b9e7540d9c66423edd}, \doxyref{ps\+\_\+set\+\_\+path}{p.}{group__geometry_gad29671ee13659f93f1ed9f04e2fef33f}, \doxyref{ps\+\_\+get\+\_\+path}{p.}{group__geometry_ga12919bbac3b448c53c1b8200a464fe01}, \doxyref{ps\+\_\+close\+\_\+path}{p.}{group__geometry_ga7ddb8dc9dd946b85960c2e220d309131}, \doxyref{ps\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__geometry_gaccc48dc1075994d7ac6154676eb5641f} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_gabc1395130cd155b9e7540d9c66423edd}} +\index{Geometry@{Geometry}!ps\_new\_sub\_path@{ps\_new\_sub\_path}} +\index{ps\_new\_sub\_path@{ps\_new\_sub\_path}!Geometry@{Geometry}} +\doxysubsubsection{ps\_new\_sub\_path()} +{\footnotesize\ttfamily void ps\+\_\+new\+\_\+sub\+\_\+path (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Close the current path, and add a new empty sub path in the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+new\+\_\+path}{p.}{group__geometry_ga1dd5a2457bbc70bb4aab514c71657d47}, \doxyref{ps\+\_\+set\+\_\+path}{p.}{group__geometry_gad29671ee13659f93f1ed9f04e2fef33f}, \doxyref{ps\+\_\+get\+\_\+path}{p.}{group__geometry_ga12919bbac3b448c53c1b8200a464fe01}, \doxyref{ps\+\_\+close\+\_\+path}{p.}{group__geometry_ga7ddb8dc9dd946b85960c2e220d309131}, \doxyref{ps\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__geometry_gaccc48dc1075994d7ac6154676eb5641f} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga1423d2871e7c875312ebd931953d4948}} +\index{Geometry@{Geometry}!ps\_quad\_curve\_to@{ps\_quad\_curve\_to}} +\index{ps\_quad\_curve\_to@{ps\_quad\_curve\_to}!Geometry@{Geometry}} +\doxysubsubsection{ps\_quad\_curve\_to()} +{\footnotesize\ttfamily void ps\+\_\+quad\+\_\+curve\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{cp, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{ep }\end{DoxyParamCaption})} + + + +Add a quadratic bezier spline to the current path from current point to end point. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em cp} & The control point of the curve. \\ +\hline +{\em ep} & The end point of the curve.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+move\+\_\+to}{p.}{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}, \doxyref{ps\+\_\+line\+\_\+to}{p.}{group__geometry_ga33144a05340d81d57be43ec15572288c}, \doxyref{ps\+\_\+bezier\+\_\+curve\+\_\+to}{p.}{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}, \doxyref{ps\+\_\+arc}{p.}{group__geometry_ga221af9d23e478b7609b20dc0e780c206}, \doxyref{ps\+\_\+tangent\+\_\+arc}{p.}{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}, \doxyref{ps\+\_\+rectangle}{p.}{group__geometry_ga5011a18fa50227967380b08956ceec0f}, \doxyref{ps\+\_\+rounded\+\_\+rect}{p.}{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b}, \doxyref{ps\+\_\+ellipse}{p.}{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga5011a18fa50227967380b08956ceec0f}} +\index{Geometry@{Geometry}!ps\_rectangle@{ps\_rectangle}} +\index{ps\_rectangle@{ps\_rectangle}!Geometry@{Geometry}} +\doxysubsubsection{ps\_rectangle()} +{\footnotesize\ttfamily void ps\+\_\+rectangle (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Add a rectangle to the current path. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em rect} & The rectangle which will be added.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+move\+\_\+to}{p.}{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}, \doxyref{ps\+\_\+line\+\_\+to}{p.}{group__geometry_ga33144a05340d81d57be43ec15572288c}, \doxyref{ps\+\_\+bezier\+\_\+curve\+\_\+to}{p.}{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}, \doxyref{ps\+\_\+quad\+\_\+curve\+\_\+to}{p.}{group__geometry_ga1423d2871e7c875312ebd931953d4948}, \doxyref{ps\+\_\+arc}{p.}{group__geometry_ga221af9d23e478b7609b20dc0e780c206}, \doxyref{ps\+\_\+tangent\+\_\+arc}{p.}{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}, \doxyref{ps\+\_\+rounded\+\_\+rect}{p.}{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b}, \doxyref{ps\+\_\+ellipse}{p.}{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b}} +\index{Geometry@{Geometry}!ps\_rounded\_rect@{ps\_rounded\_rect}} +\index{ps\_rounded\_rect@{ps\_rounded\_rect}!Geometry@{Geometry}} +\doxysubsubsection{ps\_rounded\_rect()} +{\footnotesize\ttfamily void ps\+\_\+rounded\+\_\+rect (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect, }\item[{float}]{ltx, }\item[{float}]{lty, }\item[{float}]{rtx, }\item[{float}]{rty, }\item[{float}]{lbx, }\item[{float}]{lby, }\item[{float}]{rbx, }\item[{float}]{rby }\end{DoxyParamCaption})} + + + +Add a rounded rectangle to the current path. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em rect} & The rectangle which will be added. \\ +\hline +{\em ltx} & The left top horizontal radius. \\ +\hline +{\em lty} & The left top vertical radius. \\ +\hline +{\em rtx} & The right top horizontal radius. \\ +\hline +{\em rty} & The right top vertical radius. \\ +\hline +{\em lbx} & The left bottom horizontal radius. \\ +\hline +{\em lby} & The left bottom vertical radius. \\ +\hline +{\em rbx} & The right bottom horizontal radius. \\ +\hline +{\em rby} & The right bottom vertical radius.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+move\+\_\+to}{p.}{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}, \doxyref{ps\+\_\+line\+\_\+to}{p.}{group__geometry_ga33144a05340d81d57be43ec15572288c}, \doxyref{ps\+\_\+bezier\+\_\+curve\+\_\+to}{p.}{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}, \doxyref{ps\+\_\+quad\+\_\+curve\+\_\+to}{p.}{group__geometry_ga1423d2871e7c875312ebd931953d4948}, \doxyref{ps\+\_\+arc}{p.}{group__geometry_ga221af9d23e478b7609b20dc0e780c206}, \doxyref{ps\+\_\+tangent\+\_\+arc}{p.}{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}, \doxyref{ps\+\_\+rectangle}{p.}{group__geometry_ga5011a18fa50227967380b08956ceec0f}, \doxyref{ps\+\_\+ellipse}{p.}{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_gad29671ee13659f93f1ed9f04e2fef33f}} +\index{Geometry@{Geometry}!ps\_set\_path@{ps\_set\_path}} +\index{ps\_set\_path@{ps\_set\_path}!Geometry@{Geometry}} +\doxysubsubsection{ps\_set\_path()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+path (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Replace the current path in the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em path} & The path will be set to graphic context.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+new\+\_\+path}{p.}{group__geometry_ga1dd5a2457bbc70bb4aab514c71657d47}, \doxyref{ps\+\_\+new\+\_\+sub\+\_\+path}{p.}{group__geometry_gabc1395130cd155b9e7540d9c66423edd}, \doxyref{ps\+\_\+get\+\_\+path}{p.}{group__geometry_ga12919bbac3b448c53c1b8200a464fe01}, \doxyref{ps\+\_\+close\+\_\+path}{p.}{group__geometry_ga7ddb8dc9dd946b85960c2e220d309131}, \doxyref{ps\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__geometry_gaccc48dc1075994d7ac6154676eb5641f} +\end{DoxySeeAlso} +\mbox{\label{group__geometry_ga8f17dcbbfb34fb62862141e22b6040a2}} +\index{Geometry@{Geometry}!ps\_tangent\_arc@{ps\_tangent\_arc}} +\index{ps\_tangent\_arc@{ps\_tangent\_arc}!Geometry@{Geometry}} +\doxysubsubsection{ps\_tangent\_arc()} +{\footnotesize\ttfamily void ps\+\_\+tangent\+\_\+arc (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect, }\item[{float}]{sangle, }\item[{float}]{sweep }\end{DoxyParamCaption})} + + + +Add a circular arc which is inner tangent from a rectangle. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em rect} & The rectangle which the arc to fit in. \\ +\hline +{\em sangle} & The start angle, in radians. \\ +\hline +{\em sweep} & The sweep angle, in radians.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+move\+\_\+to}{p.}{group__geometry_ga6afa05defe9e5e6bec2ba59395b9ff13}, \doxyref{ps\+\_\+line\+\_\+to}{p.}{group__geometry_ga33144a05340d81d57be43ec15572288c}, \doxyref{ps\+\_\+bezier\+\_\+curve\+\_\+to}{p.}{group__geometry_gab8f032269b7bffbe13d65aab01dfdb22}, \doxyref{ps\+\_\+quad\+\_\+curve\+\_\+to}{p.}{group__geometry_ga1423d2871e7c875312ebd931953d4948}, \doxyref{ps\+\_\+arc}{p.}{group__geometry_ga221af9d23e478b7609b20dc0e780c206}, \doxyref{ps\+\_\+rectangle}{p.}{group__geometry_ga5011a18fa50227967380b08956ceec0f}, \doxyref{ps\+\_\+rounded\+\_\+rect}{p.}{group__geometry_gabee81bb4bac4a8de1bccbd3475b52d9b}, \doxyref{ps\+\_\+ellipse}{p.}{group__geometry_ga5a24c9a87485571696f9a560e5c8afc8} +\end{DoxySeeAlso} diff --git a/doc/latex/group__gradient.tex b/doc/latex/group__gradient.tex new file mode 100644 index 0000000..9748da0 --- /dev/null +++ b/doc/latex/group__gradient.tex @@ -0,0 +1,262 @@ +\doxysection{Gradient} +\label{group__gradient}\index{Gradient@{Gradient}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__gradient_ga20b6778fb804bfd7067574add8a40641}} +typedef enum \textbf{ \+\_\+ps\+\_\+gradient\+\_\+spread} \textbf{ ps\+\_\+gradient\+\_\+spread} +\begin{DoxyCompactList}\small\item\em Fill type of outside the gradient area. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+gradient\+\_\+spread} \{ \textbf{ G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+P\+AD}, +\textbf{ G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+R\+E\+P\+E\+AT}, +\textbf{ G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+R\+E\+F\+L\+E\+CT} + \} +\begin{DoxyCompactList}\small\item\em Fill type of outside the gradient area. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+gradient} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+create\+\_\+linear} (\textbf{ ps\+\_\+gradient\+\_\+spread} spread, const \textbf{ ps\+\_\+point} $\ast$start, const \textbf{ ps\+\_\+point} $\ast$end) +\begin{DoxyCompactList}\small\item\em Create a new gradient that varies along the line defined by provided starting and ending points. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+gradient} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+create\+\_\+radial} (\textbf{ ps\+\_\+gradient\+\_\+spread} spread, const \textbf{ ps\+\_\+point} $\ast$start, float sradius, const \textbf{ ps\+\_\+point} $\ast$end, float eradius) +\begin{DoxyCompactList}\small\item\em Create a new gradient that varies along the area defined by provided starting and ending circles. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+gradient} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+create\+\_\+conic} (\textbf{ ps\+\_\+gradient\+\_\+spread} spread, const \textbf{ ps\+\_\+point} $\ast$origin, float sangle) +\begin{DoxyCompactList}\small\item\em Create a new gradient that varies along the area defined by provided concentric circles. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+transform} (\textbf{ ps\+\_\+gradient} $\ast$gradient, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Transform the gradient object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+gradient} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+ref} (\textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the gradient by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+unref} (\textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the gradient object. If the reference count on the gradient falls to 0, the gradient is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+add\+\_\+color\+\_\+stop} (\textbf{ ps\+\_\+gradient} $\ast$gradient, float offset, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Add a color stop to a gradient. The offset specifies the location along the gradient\textquotesingle{}s control vector. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+clear\+\_\+color\+\_\+stops} (\textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Clear color stops from gradient\textquotesingle{}s control vector. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__gradient_gadf16bb97bdb191574bfeda9495dc3f21}} +\index{Gradient@{Gradient}!\_ps\_gradient\_spread@{\_ps\_gradient\_spread}} +\index{\_ps\_gradient\_spread@{\_ps\_gradient\_spread}!Gradient@{Gradient}} +\doxysubsubsection{\_ps\_gradient\_spread} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+gradient\+\_\+spread}} + + + +Fill type of outside the gradient area. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{GRADIENT\_SPREAD\_PAD@{GRADIENT\_SPREAD\_PAD}!Gradient@{Gradient}}\index{Gradient@{Gradient}!GRADIENT\_SPREAD\_PAD@{GRADIENT\_SPREAD\_PAD}}}\mbox{\label{group__gradient_ggadf16bb97bdb191574bfeda9495dc3f21ae754f4cda8353ac60745ebcd6d982045}} +G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+P\+AD&Spread pad, the area is filled with closest stop color. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{GRADIENT\_SPREAD\_REPEAT@{GRADIENT\_SPREAD\_REPEAT}!Gradient@{Gradient}}\index{Gradient@{Gradient}!GRADIENT\_SPREAD\_REPEAT@{GRADIENT\_SPREAD\_REPEAT}}}\mbox{\label{group__gradient_ggadf16bb97bdb191574bfeda9495dc3f21a08a8ba7cf6120118aaea4f8930f87f64}} +G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+R\+E\+P\+E\+AT&Spread repeat, the gradient is repeated outside the area. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{GRADIENT\_SPREAD\_REFLECT@{GRADIENT\_SPREAD\_REFLECT}!Gradient@{Gradient}}\index{Gradient@{Gradient}!GRADIENT\_SPREAD\_REFLECT@{GRADIENT\_SPREAD\_REFLECT}}}\mbox{\label{group__gradient_ggadf16bb97bdb191574bfeda9495dc3f21a21e42305ecb3c08719715eba97511895}} +G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+R\+E\+F\+L\+E\+CT&Spread reflect, the gradient is reflected outside the area. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 942 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__gradient_ga44299d67fa3c4b40a676f1eeec2276b9}} +\index{Gradient@{Gradient}!ps\_gradient\_add\_color\_stop@{ps\_gradient\_add\_color\_stop}} +\index{ps\_gradient\_add\_color\_stop@{ps\_gradient\_add\_color\_stop}!Gradient@{Gradient}} +\doxysubsubsection{ps\_gradient\_add\_color\_stop()} +{\footnotesize\ttfamily void ps\+\_\+gradient\+\_\+add\+\_\+color\+\_\+stop (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+gradient} $\ast$}]{gradient, }\item[{float}]{offset, }\item[{const \textbf{ ps\+\_\+color} $\ast$}]{color }\end{DoxyParamCaption})} + + + +Add a color stop to a gradient. The offset specifies the location along the gradient\textquotesingle{}s control vector. + + +\begin{DoxyParams}{Parameters} +{\em gradient} & Pointer to an existing gradient object. \\ +\hline +{\em offset} & An offset position in control vector (range 0 $\sim$ 1). \\ +\hline +{\em color} & Color for the stop.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+gradient\+\_\+clear\+\_\+color\+\_\+stops}{p.}{group__gradient_ga3e405804fbffeb4288c5e954e5a683d0} +\end{DoxySeeAlso} +\mbox{\label{group__gradient_ga3e405804fbffeb4288c5e954e5a683d0}} +\index{Gradient@{Gradient}!ps\_gradient\_clear\_color\_stops@{ps\_gradient\_clear\_color\_stops}} +\index{ps\_gradient\_clear\_color\_stops@{ps\_gradient\_clear\_color\_stops}!Gradient@{Gradient}} +\doxysubsubsection{ps\_gradient\_clear\_color\_stops()} +{\footnotesize\ttfamily void ps\+\_\+gradient\+\_\+clear\+\_\+color\+\_\+stops (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+gradient} $\ast$}]{gradient }\end{DoxyParamCaption})} + + + +Clear color stops from gradient\textquotesingle{}s control vector. + + +\begin{DoxyParams}{Parameters} +{\em gradient} & Pointer to an existing gradient object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+gradient\+\_\+add\+\_\+color\+\_\+stop}{p.}{group__gradient_ga44299d67fa3c4b40a676f1eeec2276b9} +\end{DoxySeeAlso} +\mbox{\label{group__gradient_ga8b0b46af82c47ac8b57951c9655a9ba1}} +\index{Gradient@{Gradient}!ps\_gradient\_create\_conic@{ps\_gradient\_create\_conic}} +\index{ps\_gradient\_create\_conic@{ps\_gradient\_create\_conic}!Gradient@{Gradient}} +\doxysubsubsection{ps\_gradient\_create\_conic()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+gradient} $\ast$ ps\+\_\+gradient\+\_\+create\+\_\+conic (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+gradient\+\_\+spread}}]{spread, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{origin, }\item[{float}]{sangle }\end{DoxyParamCaption})} + + + +Create a new gradient that varies along the area defined by provided concentric circles. + + +\begin{DoxyParams}{Parameters} +{\em spread} & The spread type of the gradient. \\ +\hline +{\em origin} & The center point of conic, of the required gradient. \\ +\hline +{\em sangle} & The angle, int radians, which the first color.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new gradient object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +Conic Gradient support reflect and pad mode only, paramter spread repeat will be supposed pad. To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+gradient\+\_\+create\+\_\+linear}{p.}{group__gradient_gad7184e7643f0d7f7c33adc2e9b7f1cea}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+radial}{p.}{group__gradient_ga2d65ff8fdf01b1d38d03ad630e68895c}, \doxyref{ps\+\_\+gradient\+\_\+ref}{p.}{group__gradient_gab08a488cf1e2a474b49cdacd22709d34}, \doxyref{ps\+\_\+gradient\+\_\+unref}{p.}{group__gradient_ga1fef654286aebf79d27a2615731f1b19} +\end{DoxySeeAlso} +\mbox{\label{group__gradient_gad7184e7643f0d7f7c33adc2e9b7f1cea}} +\index{Gradient@{Gradient}!ps\_gradient\_create\_linear@{ps\_gradient\_create\_linear}} +\index{ps\_gradient\_create\_linear@{ps\_gradient\_create\_linear}!Gradient@{Gradient}} +\doxysubsubsection{ps\_gradient\_create\_linear()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+gradient} $\ast$ ps\+\_\+gradient\+\_\+create\+\_\+linear (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+gradient\+\_\+spread}}]{spread, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{start, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{end }\end{DoxyParamCaption})} + + + +Create a new gradient that varies along the line defined by provided starting and ending points. + + +\begin{DoxyParams}{Parameters} +{\em spread} & The spread type of the gradient. \\ +\hline +{\em start} & The starting point , of the required gradient. \\ +\hline +{\em end} & The ending point, of the required gradient.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new gradient object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+gradient\+\_\+create\+\_\+radial}{p.}{group__gradient_ga2d65ff8fdf01b1d38d03ad630e68895c}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+conic}{p.}{group__gradient_ga8b0b46af82c47ac8b57951c9655a9ba1}, \doxyref{ps\+\_\+gradient\+\_\+ref}{p.}{group__gradient_gab08a488cf1e2a474b49cdacd22709d34}, \doxyref{ps\+\_\+gradient\+\_\+unref}{p.}{group__gradient_ga1fef654286aebf79d27a2615731f1b19} +\end{DoxySeeAlso} +\mbox{\label{group__gradient_ga2d65ff8fdf01b1d38d03ad630e68895c}} +\index{Gradient@{Gradient}!ps\_gradient\_create\_radial@{ps\_gradient\_create\_radial}} +\index{ps\_gradient\_create\_radial@{ps\_gradient\_create\_radial}!Gradient@{Gradient}} +\doxysubsubsection{ps\_gradient\_create\_radial()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+gradient} $\ast$ ps\+\_\+gradient\+\_\+create\+\_\+radial (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+gradient\+\_\+spread}}]{spread, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{start, }\item[{float}]{sradius, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{end, }\item[{float}]{eradius }\end{DoxyParamCaption})} + + + +Create a new gradient that varies along the area defined by provided starting and ending circles. + + +\begin{DoxyParams}{Parameters} +{\em spread} & The spread type of the gradient. \\ +\hline +{\em start} & The center point of the starting circle, of the required gradient. \\ +\hline +{\em sradius} & The radius of the starting circle, of the required gradient. \\ +\hline +{\em end} & The center point of the ending circle, of the required gradient. \\ +\hline +{\em eradius} & The radius of the ending circle, of the required gradient.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new gradient object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+gradient\+\_\+create\+\_\+linear}{p.}{group__gradient_gad7184e7643f0d7f7c33adc2e9b7f1cea}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+conic}{p.}{group__gradient_ga8b0b46af82c47ac8b57951c9655a9ba1}, \doxyref{ps\+\_\+gradient\+\_\+ref}{p.}{group__gradient_gab08a488cf1e2a474b49cdacd22709d34}, \doxyref{ps\+\_\+gradient\+\_\+unref}{p.}{group__gradient_ga1fef654286aebf79d27a2615731f1b19} +\end{DoxySeeAlso} +\mbox{\label{group__gradient_gab08a488cf1e2a474b49cdacd22709d34}} +\index{Gradient@{Gradient}!ps\_gradient\_ref@{ps\_gradient\_ref}} +\index{ps\_gradient\_ref@{ps\_gradient\_ref}!Gradient@{Gradient}} +\doxysubsubsection{ps\_gradient\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+gradient} $\ast$ ps\+\_\+gradient\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+gradient} $\ast$}]{gradient }\end{DoxyParamCaption})} + + + +Increases the reference count of the gradient by 1. + + +\begin{DoxyParams}{Parameters} +{\em gradient} & Pointer to an existing gradient object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the gradient object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+gradient\+\_\+create\+\_\+linear}{p.}{group__gradient_gad7184e7643f0d7f7c33adc2e9b7f1cea}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+radial}{p.}{group__gradient_ga2d65ff8fdf01b1d38d03ad630e68895c}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+conic}{p.}{group__gradient_ga8b0b46af82c47ac8b57951c9655a9ba1}, \doxyref{ps\+\_\+gradient\+\_\+unref}{p.}{group__gradient_ga1fef654286aebf79d27a2615731f1b19} +\end{DoxySeeAlso} +\mbox{\label{group__gradient_ga47b742a23ffba17e390b402ba1d12361}} +\index{Gradient@{Gradient}!ps\_gradient\_transform@{ps\_gradient\_transform}} +\index{ps\_gradient\_transform@{ps\_gradient\_transform}!Gradient@{Gradient}} +\doxysubsubsection{ps\_gradient\_transform()} +{\footnotesize\ttfamily void ps\+\_\+gradient\+\_\+transform (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+gradient} $\ast$}]{gradient, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Transform the gradient object. + + +\begin{DoxyParams}{Parameters} +{\em gradient} & Pointer to an existing gradient object. \\ +\hline +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+gradient\+\_\+create\+\_\+linear}{p.}{group__gradient_gad7184e7643f0d7f7c33adc2e9b7f1cea}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+radial}{p.}{group__gradient_ga2d65ff8fdf01b1d38d03ad630e68895c}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+conic}{p.}{group__gradient_ga8b0b46af82c47ac8b57951c9655a9ba1}, \doxyref{ps\+\_\+gradient\+\_\+ref}{p.}{group__gradient_gab08a488cf1e2a474b49cdacd22709d34}, \doxyref{ps\+\_\+gradient\+\_\+unref}{p.}{group__gradient_ga1fef654286aebf79d27a2615731f1b19} +\end{DoxySeeAlso} +\mbox{\label{group__gradient_ga1fef654286aebf79d27a2615731f1b19}} +\index{Gradient@{Gradient}!ps\_gradient\_unref@{ps\_gradient\_unref}} +\index{ps\_gradient\_unref@{ps\_gradient\_unref}!Gradient@{Gradient}} +\doxysubsubsection{ps\_gradient\_unref()} +{\footnotesize\ttfamily void ps\+\_\+gradient\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+gradient} $\ast$}]{gradient }\end{DoxyParamCaption})} + + + +Decrements the reference count for the gradient object. If the reference count on the gradient falls to 0, the gradient is freed. + + +\begin{DoxyParams}{Parameters} +{\em gradient} & Pointer to an existing gradient object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+gradient\+\_\+create\+\_\+linear}{p.}{group__gradient_gad7184e7643f0d7f7c33adc2e9b7f1cea}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+radial}{p.}{group__gradient_ga2d65ff8fdf01b1d38d03ad630e68895c}, \doxyref{ps\+\_\+gradient\+\_\+create\+\_\+conic}{p.}{group__gradient_ga8b0b46af82c47ac8b57951c9655a9ba1}, \doxyref{ps\+\_\+gradient\+\_\+ref}{p.}{group__gradient_gab08a488cf1e2a474b49cdacd22709d34} +\end{DoxySeeAlso} diff --git a/doc/latex/group__graphic.tex b/doc/latex/group__graphic.tex new file mode 100644 index 0000000..060276a --- /dev/null +++ b/doc/latex/group__graphic.tex @@ -0,0 +1,34 @@ +\doxysection{Graphic Functions} +\label{group__graphic}\index{Graphic Functions@{Graphic Functions}} +\doxysubsection*{Modules} +\begin{DoxyCompactItemize} +\item +\textbf{ Context} +\item +\textbf{ Canvas} +\item +\textbf{ Image} +\item +\textbf{ Pattern} +\item +\textbf{ Gradient} +\item +\textbf{ Mask} +\item +\textbf{ Drawing} +\item +\textbf{ Font} +\item +\textbf{ Text} +\item +\textbf{ Transform} +\item +\textbf{ Matrix} +\item +\textbf{ Geometry} +\item +\textbf{ Path} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} diff --git a/doc/latex/group__image.tex b/doc/latex/group__image.tex new file mode 100644 index 0000000..e4e774f --- /dev/null +++ b/doc/latex/group__image.tex @@ -0,0 +1,339 @@ +\doxysection{Image} +\label{group__image}\index{Image@{Image}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create} (\textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new image using the given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch) +\begin{DoxyCompactList}\small\item\em Create a new image using a given address in memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch) +\begin{DoxyCompactList}\small\item\em Create a new image using a copy of given address in memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+compatible} (const \textbf{ ps\+\_\+canvas} $\ast$canvas, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new image to compatible with an existing canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas} (\textbf{ ps\+\_\+canvas} $\ast$canvas, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Create a new image using part of an existing canvas in same pixel buffer. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image} (\textbf{ ps\+\_\+image} $\ast$img, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Create a new image using part of an existing ps\+\_\+image object in same pixel buffer. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+ref} (\textbf{ ps\+\_\+image} $\ast$img) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the image by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+unref} (\textbf{ ps\+\_\+image} $\ast$img) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the image object. If the reference count on the image falls to 0, the image is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+set\+\_\+allow\+\_\+transparent} (\textbf{ ps\+\_\+image} $\ast$img, \textbf{ ps\+\_\+bool} allow) +\begin{DoxyCompactList}\small\item\em Set whether the image allowed be transparent, False is default. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+set\+\_\+transparent\+\_\+color} (\textbf{ ps\+\_\+image} $\ast$img, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set the transparent color for the image. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+get\+\_\+size} (const \textbf{ ps\+\_\+image} $\ast$img, \textbf{ ps\+\_\+size} $\ast$rsize) +\begin{DoxyCompactList}\small\item\em Return the size of the image. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+color\+\_\+format} P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+get\+\_\+format} (const \textbf{ ps\+\_\+image} $\ast$img) +\begin{DoxyCompactList}\small\item\em Return the pixel format of the image. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__image_gad73f93a376c811065edbbc54b857f093}} +\index{Image@{Image}!ps\_image\_create@{ps\_image\_create}} +\index{ps\_image\_create@{ps\_image\_create}!Image@{Image}} +\doxysubsubsection{ps\_image\_create()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image} $\ast$ ps\+\_\+image\+\_\+create (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+color\+\_\+format}}]{fmt, }\item[{int}]{width, }\item[{int}]{height }\end{DoxyParamCaption})} + + + +Create a new image using the given parameters. + + +\begin{DoxyParams}{Parameters} +{\em fmt} & The Pixel format to use for the image. \\ +\hline +{\em width} & The width, in pixels, of the required image. \\ +\hline +{\em height} & The height, in pixels, of the required image.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data}{p.}{group__image_ga8a45a5aa2404138a2dd323b3b009740d}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+compatible}{p.}{group__image_gae649621753e8feca08b0f5e76db0513f}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__image_gafb11e3545a00ac5f963cd0bc550fdb54}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data}{p.}{group__image_gaebebf1d12a7c978a5b5440b2eae4f650}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image}{p.}{group__image_ga2a0bf1bcf790bf0c32d0562349a0af2a}, \doxyref{ps\+\_\+image\+\_\+ref}{p.}{group__image_ga56a76add1af7ead02d1d9b400f579a46}, \doxyref{ps\+\_\+image\+\_\+unref}{p.}{group__image_ga38cd469f268f5f55c45b36322543a3f6} +\end{DoxySeeAlso} +\mbox{\label{group__image_gae649621753e8feca08b0f5e76db0513f}} +\index{Image@{Image}!ps\_image\_create\_compatible@{ps\_image\_create\_compatible}} +\index{ps\_image\_create\_compatible@{ps\_image\_create\_compatible}!Image@{Image}} +\doxysubsubsection{ps\_image\_create\_compatible()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image} $\ast$ ps\+\_\+image\+\_\+create\+\_\+compatible (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+canvas} $\ast$}]{canvas, }\item[{int}]{width, }\item[{int}]{height }\end{DoxyParamCaption})} + + + +Create a new image to compatible with an existing canvas. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & A pointer to an existing canvas. \\ +\hline +{\em width} & The width, in pixels, of the required canvas. If it is not more than zero, the width will be equal to the width of the reference canvas. \\ +\hline +{\em height} & The height, in pixels, of the required canvas. If it is not more than zero, the height will be equal to the height of the reference canvas.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+create}{p.}{group__image_gad73f93a376c811065edbbc54b857f093}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data}{p.}{group__image_ga8a45a5aa2404138a2dd323b3b009740d}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__image_gafb11e3545a00ac5f963cd0bc550fdb54}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image}{p.}{group__image_ga2a0bf1bcf790bf0c32d0562349a0af2a}, \doxyref{ps\+\_\+image\+\_\+ref}{p.}{group__image_ga56a76add1af7ead02d1d9b400f579a46}, \doxyref{ps\+\_\+image\+\_\+unref}{p.}{group__image_ga38cd469f268f5f55c45b36322543a3f6} +\end{DoxySeeAlso} +\mbox{\label{group__image_gafb11e3545a00ac5f963cd0bc550fdb54}} +\index{Image@{Image}!ps\_image\_create\_from\_canvas@{ps\_image\_create\_from\_canvas}} +\index{ps\_image\_create\_from\_canvas@{ps\_image\_create\_from\_canvas}!Image@{Image}} +\doxysubsubsection{ps\_image\_create\_from\_canvas()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image} $\ast$ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+canvas} $\ast$}]{canvas, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Create a new image using part of an existing canvas in same pixel buffer. + + +\begin{DoxyParams}{Parameters} +{\em canvas} & A pointer to an existing canvas. \\ +\hline +{\em rect} & The rectangle area of the image from the ps\+\_\+canvas. If it is N\+U\+LL, the image\textquotesingle{}s width and height will be equal to the parant canvas.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+create}{p.}{group__image_gad73f93a376c811065edbbc54b857f093}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data}{p.}{group__image_ga8a45a5aa2404138a2dd323b3b009740d}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+compatible}{p.}{group__image_gae649621753e8feca08b0f5e76db0513f}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data}{p.}{group__image_gaebebf1d12a7c978a5b5440b2eae4f650}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image}{p.}{group__image_ga2a0bf1bcf790bf0c32d0562349a0af2a}, \doxyref{ps\+\_\+image\+\_\+ref}{p.}{group__image_ga56a76add1af7ead02d1d9b400f579a46}, \doxyref{ps\+\_\+image\+\_\+unref}{p.}{group__image_ga38cd469f268f5f55c45b36322543a3f6} +\end{DoxySeeAlso} +\mbox{\label{group__image_gaebebf1d12a7c978a5b5440b2eae4f650}} +\index{Image@{Image}!ps\_image\_create\_from\_data@{ps\_image\_create\_from\_data}} +\index{ps\_image\_create\_from\_data@{ps\_image\_create\_from\_data}!Image@{Image}} +\doxysubsubsection{ps\_image\_create\_from\_data()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image} $\ast$ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+byte} $\ast$}]{data, }\item[{\textbf{ ps\+\_\+color\+\_\+format}}]{fmt, }\item[{int}]{width, }\item[{int}]{height, }\item[{int}]{pitch }\end{DoxyParamCaption})} + + + +Create a new image using a copy of given address in memory. + + +\begin{DoxyParams}{Parameters} +{\em data} & A pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch $\ast$ height) bytes. \\ +\hline +{\em fmt} & The Pixel format to use for the image. \\ +\hline +{\em width} & The width, in pixels, of the required image. \\ +\hline +{\em height} & The height, in pixels, of the required image. \\ +\hline +{\em pitch} & The number of bytes per row, of the required image.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+create}{p.}{group__image_gad73f93a376c811065edbbc54b857f093}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+compatible}{p.}{group__image_gae649621753e8feca08b0f5e76db0513f}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__image_gafb11e3545a00ac5f963cd0bc550fdb54}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data}{p.}{group__image_ga8a45a5aa2404138a2dd323b3b009740d}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image}{p.}{group__image_ga2a0bf1bcf790bf0c32d0562349a0af2a}, \doxyref{ps\+\_\+image\+\_\+ref}{p.}{group__image_ga56a76add1af7ead02d1d9b400f579a46}, \doxyref{ps\+\_\+image\+\_\+unref}{p.}{group__image_ga38cd469f268f5f55c45b36322543a3f6} +\end{DoxySeeAlso} +\mbox{\label{group__image_ga2a0bf1bcf790bf0c32d0562349a0af2a}} +\index{Image@{Image}!ps\_image\_create\_from\_image@{ps\_image\_create\_from\_image}} +\index{ps\_image\_create\_from\_image@{ps\_image\_create\_from\_image}!Image@{Image}} +\doxysubsubsection{ps\_image\_create\_from\_image()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image} $\ast$ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+image} $\ast$}]{img, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Create a new image using part of an existing ps\+\_\+image object in same pixel buffer. + + +\begin{DoxyParams}{Parameters} +{\em img} & A pointer to an existing ps\+\_\+image object. \\ +\hline +{\em rect} & The rectangle area of the image from the parent image. If it is N\+U\+LL, the image\textquotesingle{}s width and height will be equal to parent image object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+create}{p.}{group__image_gad73f93a376c811065edbbc54b857f093}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data}{p.}{group__image_ga8a45a5aa2404138a2dd323b3b009740d}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+compatible}{p.}{group__image_gae649621753e8feca08b0f5e76db0513f}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data}{p.}{group__image_gaebebf1d12a7c978a5b5440b2eae4f650}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__image_gafb11e3545a00ac5f963cd0bc550fdb54}, \doxyref{ps\+\_\+image\+\_\+ref}{p.}{group__image_ga56a76add1af7ead02d1d9b400f579a46}, \doxyref{ps\+\_\+image\+\_\+unref}{p.}{group__image_ga38cd469f268f5f55c45b36322543a3f6} +\end{DoxySeeAlso} +\mbox{\label{group__image_ga8a45a5aa2404138a2dd323b3b009740d}} +\index{Image@{Image}!ps\_image\_create\_with\_data@{ps\_image\_create\_with\_data}} +\index{ps\_image\_create\_with\_data@{ps\_image\_create\_with\_data}!Image@{Image}} +\doxysubsubsection{ps\_image\_create\_with\_data()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image} $\ast$ ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+byte} $\ast$}]{data, }\item[{\textbf{ ps\+\_\+color\+\_\+format}}]{fmt, }\item[{int}]{width, }\item[{int}]{height, }\item[{int}]{pitch }\end{DoxyParamCaption})} + + + +Create a new image using a given address in memory. + + +\begin{DoxyParams}{Parameters} +{\em data} & A pointer to the destination in memory where the drawing is to be rendered. The size of this memory block should be at least (pitch $\ast$ height) bytes. \\ +\hline +{\em fmt} & The Pixel format to use for the image. \\ +\hline +{\em width} & The width, in pixels, of the required image. \\ +\hline +{\em height} & The height, in pixels, of the required image. \\ +\hline +{\em pitch} & The number of bytes per row, of the required image.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new image object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+create}{p.}{group__image_gad73f93a376c811065edbbc54b857f093}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+compatible}{p.}{group__image_gae649621753e8feca08b0f5e76db0513f}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__image_gafb11e3545a00ac5f963cd0bc550fdb54}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data}{p.}{group__image_gaebebf1d12a7c978a5b5440b2eae4f650}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image}{p.}{group__image_ga2a0bf1bcf790bf0c32d0562349a0af2a}, \doxyref{ps\+\_\+image\+\_\+ref}{p.}{group__image_ga56a76add1af7ead02d1d9b400f579a46}, \doxyref{ps\+\_\+image\+\_\+unref}{p.}{group__image_ga38cd469f268f5f55c45b36322543a3f6} +\end{DoxySeeAlso} +\mbox{\label{group__image_gad79495fd520c6eb60ac28ddebce5df4d}} +\index{Image@{Image}!ps\_image\_get\_format@{ps\_image\_get\_format}} +\index{ps\_image\_get\_format@{ps\_image\_get\_format}!Image@{Image}} +\doxysubsubsection{ps\_image\_get\_format()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+color\+\_\+format} ps\+\_\+image\+\_\+get\+\_\+format (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+image} $\ast$}]{img }\end{DoxyParamCaption})} + + + +Return the pixel format of the image. + + +\begin{DoxyParams}{Parameters} +{\em img} & Pointer to an existing image object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return a valid color format. If the function fails, the return value is C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+U\+N\+K\+N\+O\+WN. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+get\+\_\+size}{p.}{group__image_ga6acdf8c841a85642087da5a07ae5ef19}, \doxyref{ps\+\_\+image\+\_\+set\+\_\+allow\+\_\+transparent}{p.}{group__image_gac08ab14a69f0a88432e3883b1e50231e} +\end{DoxySeeAlso} +\mbox{\label{group__image_ga6acdf8c841a85642087da5a07ae5ef19}} +\index{Image@{Image}!ps\_image\_get\_size@{ps\_image\_get\_size}} +\index{ps\_image\_get\_size@{ps\_image\_get\_size}!Image@{Image}} +\doxysubsubsection{ps\_image\_get\_size()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+image\+\_\+get\+\_\+size (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+image} $\ast$}]{img, }\item[{\textbf{ ps\+\_\+size} $\ast$}]{rsize }\end{DoxyParamCaption})} + + + +Return the size of the image. + + +\begin{DoxyParams}{Parameters} +{\em img} & Pointer to an existing image object. \\ +\hline +{\em rsize} & Pointer to a buffer to receiving the size.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+get\+\_\+format}{p.}{group__image_gad79495fd520c6eb60ac28ddebce5df4d}, \doxyref{ps\+\_\+image\+\_\+set\+\_\+allow\+\_\+transparent}{p.}{group__image_gac08ab14a69f0a88432e3883b1e50231e} +\end{DoxySeeAlso} +\mbox{\label{group__image_ga56a76add1af7ead02d1d9b400f579a46}} +\index{Image@{Image}!ps\_image\_ref@{ps\_image\_ref}} +\index{ps\_image\_ref@{ps\_image\_ref}!Image@{Image}} +\doxysubsubsection{ps\_image\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image} $\ast$ ps\+\_\+image\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+image} $\ast$}]{img }\end{DoxyParamCaption})} + + + +Increases the reference count of the image by 1. + + +\begin{DoxyParams}{Parameters} +{\em img} & Pointer to an existing image object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the image object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+create}{p.}{group__image_gad73f93a376c811065edbbc54b857f093}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data}{p.}{group__image_ga8a45a5aa2404138a2dd323b3b009740d}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+compatible}{p.}{group__image_gae649621753e8feca08b0f5e76db0513f}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data}{p.}{group__image_gaebebf1d12a7c978a5b5440b2eae4f650}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__image_gafb11e3545a00ac5f963cd0bc550fdb54}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image}{p.}{group__image_ga2a0bf1bcf790bf0c32d0562349a0af2a}, \doxyref{ps\+\_\+image\+\_\+unref}{p.}{group__image_ga38cd469f268f5f55c45b36322543a3f6} +\end{DoxySeeAlso} +\mbox{\label{group__image_gac08ab14a69f0a88432e3883b1e50231e}} +\index{Image@{Image}!ps\_image\_set\_allow\_transparent@{ps\_image\_set\_allow\_transparent}} +\index{ps\_image\_set\_allow\_transparent@{ps\_image\_set\_allow\_transparent}!Image@{Image}} +\doxysubsubsection{ps\_image\_set\_allow\_transparent()} +{\footnotesize\ttfamily void ps\+\_\+image\+\_\+set\+\_\+allow\+\_\+transparent (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+image} $\ast$}]{img, }\item[{\textbf{ ps\+\_\+bool}}]{allow }\end{DoxyParamCaption})} + + + +Set whether the image allowed be transparent, False is default. + + +\begin{DoxyParams}{Parameters} +{\em img} & Pointer to an existing image object. \\ +\hline +{\em allow} & Boolean value whether transparent is allowed.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+get\+\_\+format}{p.}{group__image_gad79495fd520c6eb60ac28ddebce5df4d}, \doxyref{ps\+\_\+image\+\_\+get\+\_\+size}{p.}{group__image_ga6acdf8c841a85642087da5a07ae5ef19} +\end{DoxySeeAlso} +\mbox{\label{group__image_ga39e4e0caf8e78b767384b68143e2fd43}} +\index{Image@{Image}!ps\_image\_set\_transparent\_color@{ps\_image\_set\_transparent\_color}} +\index{ps\_image\_set\_transparent\_color@{ps\_image\_set\_transparent\_color}!Image@{Image}} +\doxysubsubsection{ps\_image\_set\_transparent\_color()} +{\footnotesize\ttfamily void ps\+\_\+image\+\_\+set\+\_\+transparent\+\_\+color (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+image} $\ast$}]{img, }\item[{const \textbf{ ps\+\_\+color} $\ast$}]{color }\end{DoxyParamCaption})} + + + +Set the transparent color for the image. + + +\begin{DoxyParams}{Parameters} +{\em img} & Pointer to an existing image object. \\ +\hline +{\em color} & The color for the transparent, N\+U\+LL for disable.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+get\+\_\+format}{p.}{group__image_gad79495fd520c6eb60ac28ddebce5df4d}, \doxyref{ps\+\_\+image\+\_\+get\+\_\+size}{p.}{group__image_ga6acdf8c841a85642087da5a07ae5ef19} +\end{DoxySeeAlso} +\mbox{\label{group__image_ga38cd469f268f5f55c45b36322543a3f6}} +\index{Image@{Image}!ps\_image\_unref@{ps\_image\_unref}} +\index{ps\_image\_unref@{ps\_image\_unref}!Image@{Image}} +\doxysubsubsection{ps\_image\_unref()} +{\footnotesize\ttfamily void ps\+\_\+image\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+image} $\ast$}]{img }\end{DoxyParamCaption})} + + + +Decrements the reference count for the image object. If the reference count on the image falls to 0, the image is freed. + + +\begin{DoxyParams}{Parameters} +{\em img} & Pointer to an existing image object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+image\+\_\+create}{p.}{group__image_gad73f93a376c811065edbbc54b857f093}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data}{p.}{group__image_ga8a45a5aa2404138a2dd323b3b009740d}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+compatible}{p.}{group__image_gae649621753e8feca08b0f5e76db0513f}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data}{p.}{group__image_gaebebf1d12a7c978a5b5440b2eae4f650}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas}{p.}{group__image_gafb11e3545a00ac5f963cd0bc550fdb54}, \doxyref{ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image}{p.}{group__image_ga2a0bf1bcf790bf0c32d0562349a0af2a}, \doxyref{ps\+\_\+image\+\_\+ref}{p.}{group__image_ga56a76add1af7ead02d1d9b400f579a46} +\end{DoxySeeAlso} diff --git a/doc/latex/group__interface.tex b/doc/latex/group__interface.tex new file mode 100644 index 0000000..4c0ee56 --- /dev/null +++ b/doc/latex/group__interface.tex @@ -0,0 +1,67 @@ +\doxysection{X\+Image Coders Register functions} +\label{group__interface}\index{XImage Coders Register functions@{XImage Coders Register functions}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT int \textbf{ psx\+\_\+image\+\_\+register\+\_\+operator} (const char $\ast$type, const \textbf{ ps\+\_\+byte} $\ast$signature, size\+\_\+t sig\+\_\+offset, size\+\_\+t sig\+\_\+len, \textbf{ psx\+\_\+priority\+\_\+level} level, \textbf{ psx\+\_\+image\+\_\+operator} $\ast$coder) +\begin{DoxyCompactList}\small\item\em Register the image operator. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int \textbf{ psx\+\_\+image\+\_\+unregister\+\_\+operator} (\textbf{ psx\+\_\+image\+\_\+operator} $\ast$coder) +\begin{DoxyCompactList}\small\item\em Unregister the image operator. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__interface_gac2c1fc7d317f49ee5c246f9aff61e13a}} +\index{XImage Coders Register functions@{XImage Coders Register functions}!psx\_image\_register\_operator@{psx\_image\_register\_operator}} +\index{psx\_image\_register\_operator@{psx\_image\_register\_operator}!XImage Coders Register functions@{XImage Coders Register functions}} +\doxysubsubsection{psx\_image\_register\_operator()} +{\footnotesize\ttfamily int psx\+\_\+image\+\_\+register\+\_\+operator (\begin{DoxyParamCaption}\item[{const char $\ast$}]{type, }\item[{const \textbf{ ps\+\_\+byte} $\ast$}]{signature, }\item[{size\+\_\+t}]{sig\+\_\+offset, }\item[{size\+\_\+t}]{sig\+\_\+len, }\item[{\textbf{ psx\+\_\+priority\+\_\+level}}]{level, }\item[{\textbf{ psx\+\_\+image\+\_\+operator} $\ast$}]{coder }\end{DoxyParamCaption})} + + + +Register the image operator. + + +\begin{DoxyParams}{Parameters} +{\em type} & The image operator short name. (i.\+e \char`\"{}png\char`\"{} \char`\"{}jpg\char`\"{} \char`\"{}gif\char`\"{} \char`\"{}bmp\char`\"{}) \\ +\hline +{\em signature} & The image signature. \\ +\hline +{\em sig\+\_\+offset} & The image signature offset from the beginning of the image data. (usually is 0) \\ +\hline +{\em sig\+\_\+len} & The image signature length. \\ +\hline +{\em level} & The image operator priority level. \\ +\hline +{\em coder} & The pointer to a image\+\_\+operator object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Result code returned. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+unregister\+\_\+operator}{p.}{group__interface_ga50213dff3b0bec9b77c059bb85126bed} +\end{DoxySeeAlso} +\mbox{\label{group__interface_ga50213dff3b0bec9b77c059bb85126bed}} +\index{XImage Coders Register functions@{XImage Coders Register functions}!psx\_image\_unregister\_operator@{psx\_image\_unregister\_operator}} +\index{psx\_image\_unregister\_operator@{psx\_image\_unregister\_operator}!XImage Coders Register functions@{XImage Coders Register functions}} +\doxysubsubsection{psx\_image\_unregister\_operator()} +{\footnotesize\ttfamily int psx\+\_\+image\+\_\+unregister\+\_\+operator (\begin{DoxyParamCaption}\item[{\textbf{ psx\+\_\+image\+\_\+operator} $\ast$}]{coder }\end{DoxyParamCaption})} + + + +Unregister the image operator. + + +\begin{DoxyParams}{Parameters} +{\em coder} & The image operator which will be unregister.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Result code returned. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+register\+\_\+operator}{p.}{group__interface_gac2c1fc7d317f49ee5c246f9aff61e13a} +\end{DoxySeeAlso} diff --git a/doc/latex/group__mask.tex b/doc/latex/group__mask.tex new file mode 100644 index 0000000..00e37e6 --- /dev/null +++ b/doc/latex/group__mask.tex @@ -0,0 +1,129 @@ +\doxysection{Mask} +\label{group__mask}\index{Mask@{Mask}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+mask} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+create\+\_\+with\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new mask using a given data block. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+mask} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+ref} (\textbf{ ps\+\_\+mask} $\ast$mask) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the mask by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+unref} (\textbf{ ps\+\_\+mask} $\ast$mask) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the mask object. If the reference count on the mask falls to 0, the mask is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+add\+\_\+color\+\_\+filter} (\textbf{ ps\+\_\+mask} $\ast$mask, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Add a color filter to a mask. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+clear\+\_\+color\+\_\+filters} (\textbf{ ps\+\_\+mask} $\ast$mask) +\begin{DoxyCompactList}\small\item\em Clear all colors from mask\textquotesingle{}s filter. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__mask_ga8caf434db1774654e30f059b490ad293}} +\index{Mask@{Mask}!ps\_mask\_add\_color\_filter@{ps\_mask\_add\_color\_filter}} +\index{ps\_mask\_add\_color\_filter@{ps\_mask\_add\_color\_filter}!Mask@{Mask}} +\doxysubsubsection{ps\_mask\_add\_color\_filter()} +{\footnotesize\ttfamily void ps\+\_\+mask\+\_\+add\+\_\+color\+\_\+filter (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+mask} $\ast$}]{mask, }\item[{const \textbf{ ps\+\_\+color} $\ast$}]{color }\end{DoxyParamCaption})} + + + +Add a color filter to a mask. + + +\begin{DoxyParams}{Parameters} +{\em mask} & Pointer to an existing mask object. \\ +\hline +{\em color} & A color for be masked. Only the colors specified by filter can be masked. If no color is specified, all colors can be masked.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+mask\+\_\+clear\+\_\+color\+\_\+filters}{p.}{group__mask_ga6838efc54ebaa0dd6031367f30ddb360} +\end{DoxySeeAlso} +\mbox{\label{group__mask_ga6838efc54ebaa0dd6031367f30ddb360}} +\index{Mask@{Mask}!ps\_mask\_clear\_color\_filters@{ps\_mask\_clear\_color\_filters}} +\index{ps\_mask\_clear\_color\_filters@{ps\_mask\_clear\_color\_filters}!Mask@{Mask}} +\doxysubsubsection{ps\_mask\_clear\_color\_filters()} +{\footnotesize\ttfamily void ps\+\_\+mask\+\_\+clear\+\_\+color\+\_\+filters (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+mask} $\ast$}]{mask }\end{DoxyParamCaption})} + + + +Clear all colors from mask\textquotesingle{}s filter. + + +\begin{DoxyParams}{Parameters} +{\em mask} & Pointer to an existing mask object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+mask\+\_\+add\+\_\+color\+\_\+filter}{p.}{group__mask_ga8caf434db1774654e30f059b490ad293} +\end{DoxySeeAlso} +\mbox{\label{group__mask_ga6705aec0eba1809d7546391e1021b4db}} +\index{Mask@{Mask}!ps\_mask\_create\_with\_data@{ps\_mask\_create\_with\_data}} +\index{ps\_mask\_create\_with\_data@{ps\_mask\_create\_with\_data}!Mask@{Mask}} +\doxysubsubsection{ps\_mask\_create\_with\_data()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+mask} $\ast$ ps\+\_\+mask\+\_\+create\+\_\+with\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+byte} $\ast$}]{data, }\item[{int}]{width, }\item[{int}]{height }\end{DoxyParamCaption})} + + + +Create a new mask using a given data block. + + +\begin{DoxyParams}{Parameters} +{\em data} & A pointer to the mask data block in memory. Each byte of data is a aplha value, from transparent to opaque (0 $\sim$ 255). The size of this memory block should be at least (width $\ast$ height) bytes. \\ +\hline +{\em width} & The width, in pixels, of the required mask. \\ +\hline +{\em height} & The height, in pixels, of the required mask.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new mask object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+mask\+\_\+ref}{p.}{group__mask_ga4e5d901b886cd95c6b78a508869cf7b2}, \doxyref{ps\+\_\+mask\+\_\+unref}{p.}{group__mask_gabc9c126ec3862a0ea8290079a1e165a1}, \doxyref{ps\+\_\+canvas\+\_\+set\+\_\+mask}{p.}{group__canvas_gae2c3473beecada34539bc9bcc61da3be}, \doxyref{ps\+\_\+canvas\+\_\+reset\+\_\+mask}{p.}{group__canvas_ga7b52ce718da8798ce1823ed30c65d297} +\end{DoxySeeAlso} +\mbox{\label{group__mask_ga4e5d901b886cd95c6b78a508869cf7b2}} +\index{Mask@{Mask}!ps\_mask\_ref@{ps\_mask\_ref}} +\index{ps\_mask\_ref@{ps\_mask\_ref}!Mask@{Mask}} +\doxysubsubsection{ps\_mask\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+mask} $\ast$ ps\+\_\+mask\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+mask} $\ast$}]{mask }\end{DoxyParamCaption})} + + + +Increases the reference count of the mask by 1. + + +\begin{DoxyParams}{Parameters} +{\em mask} & Pointer to an existing mask object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the mask object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+mask\+\_\+create\+\_\+with\+\_\+data}{p.}{group__mask_ga6705aec0eba1809d7546391e1021b4db}, \doxyref{ps\+\_\+mask\+\_\+unref}{p.}{group__mask_gabc9c126ec3862a0ea8290079a1e165a1}, \doxyref{ps\+\_\+canvas\+\_\+set\+\_\+mask}{p.}{group__canvas_gae2c3473beecada34539bc9bcc61da3be}, \doxyref{ps\+\_\+canvas\+\_\+reset\+\_\+mask}{p.}{group__canvas_ga7b52ce718da8798ce1823ed30c65d297} +\end{DoxySeeAlso} +\mbox{\label{group__mask_gabc9c126ec3862a0ea8290079a1e165a1}} +\index{Mask@{Mask}!ps\_mask\_unref@{ps\_mask\_unref}} +\index{ps\_mask\_unref@{ps\_mask\_unref}!Mask@{Mask}} +\doxysubsubsection{ps\_mask\_unref()} +{\footnotesize\ttfamily void ps\+\_\+mask\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+mask} $\ast$}]{mask }\end{DoxyParamCaption})} + + + +Decrements the reference count for the mask object. If the reference count on the mask falls to 0, the mask is freed. + + +\begin{DoxyParams}{Parameters} +{\em mask} & Pointer to an existing mask object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+mask\+\_\+create\+\_\+with\+\_\+data}{p.}{group__mask_ga6705aec0eba1809d7546391e1021b4db}, \doxyref{ps\+\_\+mask\+\_\+ref}{p.}{group__mask_ga4e5d901b886cd95c6b78a508869cf7b2}, \doxyref{ps\+\_\+canvas\+\_\+set\+\_\+mask}{p.}{group__canvas_gae2c3473beecada34539bc9bcc61da3be}, \doxyref{ps\+\_\+canvas\+\_\+reset\+\_\+mask}{p.}{group__canvas_ga7b52ce718da8798ce1823ed30c65d297} +\end{DoxySeeAlso} diff --git a/doc/latex/group__matrix.tex b/doc/latex/group__matrix.tex new file mode 100644 index 0000000..e01c26d --- /dev/null +++ b/doc/latex/group__matrix.tex @@ -0,0 +1,660 @@ +\doxysection{Matrix} +\label{group__matrix}\index{Matrix@{Matrix}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+matrix} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+create} (void) +\begin{DoxyCompactList}\small\item\em Create a identity matrix object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+matrix} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+create\+\_\+init} (float sx, float shy, float shx, float sy, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Create a matrix with given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+matrix} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+create\+\_\+copy} (const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Create a matrix copy from an exist one. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+matrix} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+ref} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the matrix by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+unref} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the matrix object. If the reference count on the matrix falls to 0, the matrix is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+init} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float sx, float shy, float shx, float sy, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Initialize an existing matrix object with given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+translate} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Modify a matrix by translating. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+scale} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float sx, float sy) +\begin{DoxyCompactList}\small\item\em Modify a matrix by scaling. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+rotate} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float angle) +\begin{DoxyCompactList}\small\item\em Modify a matrix by rotating. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+shear} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float shx, float shy) +\begin{DoxyCompactList}\small\item\em Modify a matrix by shearing. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+invert} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Modify a matrix by inverting. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+identity} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Reset a matrix to identity matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+flip\+\_\+x} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Flip a matrix in the horizontal direction. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+flip\+\_\+y} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Flip a matrix in the vertical direction. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+multiply} (\textbf{ ps\+\_\+matrix} $\ast$result, const \textbf{ ps\+\_\+matrix} $\ast$a, const \textbf{ ps\+\_\+matrix} $\ast$b) +\begin{DoxyCompactList}\small\item\em Multiplies the matrix in a and b together and stores the result in result. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+is\+\_\+identity} (const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Checks whether the matrix is the identity transform matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+is\+\_\+equal} (const \textbf{ ps\+\_\+matrix} $\ast$a, const \textbf{ ps\+\_\+matrix} $\ast$b) +\begin{DoxyCompactList}\small\item\em Checks whether two matrix are equal. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+get\+\_\+determinant} (const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Return the determinant from a matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+set\+\_\+translate\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Set the translate factors to the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+get\+\_\+translate\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float $\ast$tx, float $\ast$ty) +\begin{DoxyCompactList}\small\item\em Get the translate factors from the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+set\+\_\+scale\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float sx, float sy) +\begin{DoxyCompactList}\small\item\em Set the scale factors to the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+get\+\_\+scale\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float $\ast$sx, float $\ast$sy) +\begin{DoxyCompactList}\small\item\em Get the scale factors from the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+set\+\_\+shear\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float shx, float shy) +\begin{DoxyCompactList}\small\item\em Set the shear factors to the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+get\+\_\+shear\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float $\ast$shx, float $\ast$shy) +\begin{DoxyCompactList}\small\item\em Get the shear factors from the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+transform\+\_\+point} (const \textbf{ ps\+\_\+matrix} $\ast$matrix, \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Transform an existing point using the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+transform\+\_\+rect} (const \textbf{ ps\+\_\+matrix} $\ast$matrix, \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Transform an existing rectangle using the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+transform\+\_\+path} (const \textbf{ ps\+\_\+matrix} $\ast$matrix, \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Transform an existing path using the matrix. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__matrix_gadbacb61c46d84fbf556aedbf5e6ea259}} +\index{Matrix@{Matrix}!ps\_matrix\_create@{ps\_matrix\_create}} +\index{ps\_matrix\_create@{ps\_matrix\_create}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_create()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+matrix} $\ast$ ps\+\_\+matrix\+\_\+create (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Create a identity matrix object. + +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new matrix object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+create\+\_\+init}{p.}{group__matrix_ga69ede69a9ec2a9ab6f261eb316a6a234}, \doxyref{ps\+\_\+matrix\+\_\+create\+\_\+copy}{p.}{group__matrix_gac7c82a5f8aa0c78afec9a8db112d36a4}, \doxyref{ps\+\_\+matrix\+\_\+ref}{p.}{group__matrix_gaedf54a96b2ecf6f1d042c18bb2e92160}, \doxyref{ps\+\_\+matrix\+\_\+unref}{p.}{group__matrix_gad0aad436eff055216cfb61e920d2d14d} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gac7c82a5f8aa0c78afec9a8db112d36a4}} +\index{Matrix@{Matrix}!ps\_matrix\_create\_copy@{ps\_matrix\_create\_copy}} +\index{ps\_matrix\_create\_copy@{ps\_matrix\_create\_copy}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_create\_copy()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+matrix} $\ast$ ps\+\_\+matrix\+\_\+create\+\_\+copy (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Create a matrix copy from an exist one. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new matrix object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+create\+\_\+init}{p.}{group__matrix_ga69ede69a9ec2a9ab6f261eb316a6a234}, \doxyref{ps\+\_\+matrix\+\_\+create}{p.}{group__matrix_gadbacb61c46d84fbf556aedbf5e6ea259}, \doxyref{ps\+\_\+matrix\+\_\+ref}{p.}{group__matrix_gaedf54a96b2ecf6f1d042c18bb2e92160}, \doxyref{ps\+\_\+matrix\+\_\+unref}{p.}{group__matrix_gad0aad436eff055216cfb61e920d2d14d} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga69ede69a9ec2a9ab6f261eb316a6a234}} +\index{Matrix@{Matrix}!ps\_matrix\_create\_init@{ps\_matrix\_create\_init}} +\index{ps\_matrix\_create\_init@{ps\_matrix\_create\_init}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_create\_init()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+matrix} $\ast$ ps\+\_\+matrix\+\_\+create\+\_\+init (\begin{DoxyParamCaption}\item[{float}]{sx, }\item[{float}]{shy, }\item[{float}]{shx, }\item[{float}]{sy, }\item[{float}]{tx, }\item[{float}]{ty }\end{DoxyParamCaption})} + + + +Create a matrix with given parameters. + + +\begin{DoxyParams}{Parameters} +{\em sx} & The horizontal scaling factor. \\ +\hline +{\em shy} & The vertical skewing factor. \\ +\hline +{\em shx} & The horizontal skewing factor. \\ +\hline +{\em sy} & The vertical scaling factor. \\ +\hline +{\em tx} & The horizontal translating factor. \\ +\hline +{\em ty} & The vertical translating factor.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new matrix object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+create}{p.}{group__matrix_gadbacb61c46d84fbf556aedbf5e6ea259}, \doxyref{ps\+\_\+matrix\+\_\+create\+\_\+copy}{p.}{group__matrix_gac7c82a5f8aa0c78afec9a8db112d36a4}, \doxyref{ps\+\_\+matrix\+\_\+ref}{p.}{group__matrix_gaedf54a96b2ecf6f1d042c18bb2e92160}, \doxyref{ps\+\_\+matrix\+\_\+unref}{p.}{group__matrix_gad0aad436eff055216cfb61e920d2d14d} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga467cb6031d14de3db45eead248eefcbd}} +\index{Matrix@{Matrix}!ps\_matrix\_flip\_x@{ps\_matrix\_flip\_x}} +\index{ps\_matrix\_flip\_x@{ps\_matrix\_flip\_x}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_flip\_x()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+flip\+\_\+x (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Flip a matrix in the horizontal direction. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+identity}{p.}{group__matrix_gaf99eaf47dbc1432592fb87a1d6a99f96}, \doxyref{ps\+\_\+matrix\+\_\+flip\+\_\+y}{p.}{group__matrix_gad5a6b0ac0ff6d02e7e4480ed0c40e40f}, \doxyref{ps\+\_\+matrix\+\_\+invert}{p.}{group__matrix_ga59be9cd4b5ba1c4ed73283e04efd2f91} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gad5a6b0ac0ff6d02e7e4480ed0c40e40f}} +\index{Matrix@{Matrix}!ps\_matrix\_flip\_y@{ps\_matrix\_flip\_y}} +\index{ps\_matrix\_flip\_y@{ps\_matrix\_flip\_y}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_flip\_y()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+flip\+\_\+y (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Flip a matrix in the vertical direction. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+identity}{p.}{group__matrix_gaf99eaf47dbc1432592fb87a1d6a99f96}, \doxyref{ps\+\_\+matrix\+\_\+flip\+\_\+x}{p.}{group__matrix_ga467cb6031d14de3db45eead248eefcbd}, \doxyref{ps\+\_\+matrix\+\_\+invert}{p.}{group__matrix_ga59be9cd4b5ba1c4ed73283e04efd2f91} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gaf24da79783f772f8cf317c3e4fb01e60}} +\index{Matrix@{Matrix}!ps\_matrix\_get\_determinant@{ps\_matrix\_get\_determinant}} +\index{ps\_matrix\_get\_determinant@{ps\_matrix\_get\_determinant}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_get\_determinant()} +{\footnotesize\ttfamily float ps\+\_\+matrix\+\_\+get\+\_\+determinant (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Return the determinant from a matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The determinant of the matrix. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+is\+\_\+equal}{p.}{group__matrix_ga07a2b7e798baf626f463a3fdf710a4c8}, \doxyref{ps\+\_\+matrix\+\_\+is\+\_\+identity}{p.}{group__matrix_ga1d82817780c82ee01aefca12d13d54b3}, \doxyref{ps\+\_\+matrix\+\_\+multiply}{p.}{group__matrix_ga8119629b46c53745a78e02f0ea5eb806} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga12b2687f49092b49087f4957d392f81e}} +\index{Matrix@{Matrix}!ps\_matrix\_get\_scale\_factor@{ps\_matrix\_get\_scale\_factor}} +\index{ps\_matrix\_get\_scale\_factor@{ps\_matrix\_get\_scale\_factor}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_get\_scale\_factor()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+matrix\+\_\+get\+\_\+scale\+\_\+factor (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float $\ast$}]{sx, }\item[{float $\ast$}]{sy }\end{DoxyParamCaption})} + + + +Get the scale factors from the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em sx} & Pointer to a buffer to receiving the scale factor in x dimension. \\ +\hline +{\em sy} & Pointer to a buffer to receiving the scale factor in y dimension.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+set\+\_\+scale\+\_\+factor}{p.}{group__matrix_gac3b95f23aefc14e10ba631e24049d22f} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gaf3c36f3ba1aa416c32ee85eba67d7529}} +\index{Matrix@{Matrix}!ps\_matrix\_get\_shear\_factor@{ps\_matrix\_get\_shear\_factor}} +\index{ps\_matrix\_get\_shear\_factor@{ps\_matrix\_get\_shear\_factor}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_get\_shear\_factor()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+matrix\+\_\+get\+\_\+shear\+\_\+factor (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float $\ast$}]{shx, }\item[{float $\ast$}]{shy }\end{DoxyParamCaption})} + + + +Get the shear factors from the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em shx} & Pointer to a buffer to receiving the shear factor in horizontal. \\ +\hline +{\em shy} & Pointer to a buffer to receiving the shear factor in vertical.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+set\+\_\+shear\+\_\+factor}{p.}{group__matrix_ga586e87bb4af468c588f8b461ac53aca5} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga9a69fad772fb6c698981078df4892f75}} +\index{Matrix@{Matrix}!ps\_matrix\_get\_translate\_factor@{ps\_matrix\_get\_translate\_factor}} +\index{ps\_matrix\_get\_translate\_factor@{ps\_matrix\_get\_translate\_factor}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_get\_translate\_factor()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+matrix\+\_\+get\+\_\+translate\+\_\+factor (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float $\ast$}]{tx, }\item[{float $\ast$}]{ty }\end{DoxyParamCaption})} + + + +Get the translate factors from the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em tx} & Pointer to a buffer to receiving the translate factor in x direction. \\ +\hline +{\em ty} & Pointer to a buffer to receiving the translate factor in y direction.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+set\+\_\+translate\+\_\+factor}{p.}{group__matrix_ga5fba883620ceeca442f20c5b2a0a78f7} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gaf99eaf47dbc1432592fb87a1d6a99f96}} +\index{Matrix@{Matrix}!ps\_matrix\_identity@{ps\_matrix\_identity}} +\index{ps\_matrix\_identity@{ps\_matrix\_identity}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_identity()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+identity (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Reset a matrix to identity matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+flip\+\_\+x}{p.}{group__matrix_ga467cb6031d14de3db45eead248eefcbd}, \doxyref{ps\+\_\+matrix\+\_\+flip\+\_\+y}{p.}{group__matrix_gad5a6b0ac0ff6d02e7e4480ed0c40e40f}, \doxyref{ps\+\_\+matrix\+\_\+invert}{p.}{group__matrix_ga59be9cd4b5ba1c4ed73283e04efd2f91} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gac80dad82387926fee28330271666c014}} +\index{Matrix@{Matrix}!ps\_matrix\_init@{ps\_matrix\_init}} +\index{ps\_matrix\_init@{ps\_matrix\_init}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_init()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+init (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float}]{sx, }\item[{float}]{shy, }\item[{float}]{shx, }\item[{float}]{sy, }\item[{float}]{tx, }\item[{float}]{ty }\end{DoxyParamCaption})} + + + +Initialize an existing matrix object with given parameters. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em sx} & The horizontal scaling factor. \\ +\hline +{\em shy} & The vertical skewing factor. \\ +\hline +{\em shx} & The horizontal skewing factor. \\ +\hline +{\em sy} & The vertical scaling factor. \\ +\hline +{\em tx} & The horizontal translating factor. \\ +\hline +{\em ty} & The vertical translating factor.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+translate}{p.}{group__matrix_gaa463cde9e371d3a64bfde5cb596f5d4b}, \doxyref{ps\+\_\+matrix\+\_\+scale}{p.}{group__matrix_ga80519e826c14b23da56802220371a8cb}, \doxyref{ps\+\_\+matrix\+\_\+shear}{p.}{group__matrix_ga462484036f58c406f0153ec244d12e7a}, \doxyref{ps\+\_\+matrix\+\_\+rotate}{p.}{group__matrix_ga9c40abd2d698d542f35b0debbc272e54} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga59be9cd4b5ba1c4ed73283e04efd2f91}} +\index{Matrix@{Matrix}!ps\_matrix\_invert@{ps\_matrix\_invert}} +\index{ps\_matrix\_invert@{ps\_matrix\_invert}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_invert()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+invert (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Modify a matrix by inverting. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+flip\+\_\+x}{p.}{group__matrix_ga467cb6031d14de3db45eead248eefcbd}, \doxyref{ps\+\_\+matrix\+\_\+flip\+\_\+y}{p.}{group__matrix_gad5a6b0ac0ff6d02e7e4480ed0c40e40f}, \doxyref{ps\+\_\+matrix\+\_\+identity}{p.}{group__matrix_gaf99eaf47dbc1432592fb87a1d6a99f96} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga07a2b7e798baf626f463a3fdf710a4c8}} +\index{Matrix@{Matrix}!ps\_matrix\_is\_equal@{ps\_matrix\_is\_equal}} +\index{ps\_matrix\_is\_equal@{ps\_matrix\_is\_equal}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_is\_equal()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+matrix\+\_\+is\+\_\+equal (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{a, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{b }\end{DoxyParamCaption})} + + + +Checks whether two matrix are equal. + + +\begin{DoxyParams}{Parameters} +{\em a} & Pointer to an existing matrix object. \\ +\hline +{\em b} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if a and b are equal, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+is\+\_\+identity}{p.}{group__matrix_ga1d82817780c82ee01aefca12d13d54b3}, \doxyref{ps\+\_\+matrix\+\_\+get\+\_\+determinant}{p.}{group__matrix_gaf24da79783f772f8cf317c3e4fb01e60}, \doxyref{ps\+\_\+matrix\+\_\+multiply}{p.}{group__matrix_ga8119629b46c53745a78e02f0ea5eb806} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga1d82817780c82ee01aefca12d13d54b3}} +\index{Matrix@{Matrix}!ps\_matrix\_is\_identity@{ps\_matrix\_is\_identity}} +\index{ps\_matrix\_is\_identity@{ps\_matrix\_is\_identity}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_is\_identity()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+matrix\+\_\+is\+\_\+identity (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Checks whether the matrix is the identity transform matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is identity, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+is\+\_\+equal}{p.}{group__matrix_ga07a2b7e798baf626f463a3fdf710a4c8}, \doxyref{ps\+\_\+matrix\+\_\+get\+\_\+determinant}{p.}{group__matrix_gaf24da79783f772f8cf317c3e4fb01e60}, \doxyref{ps\+\_\+matrix\+\_\+multiply}{p.}{group__matrix_ga8119629b46c53745a78e02f0ea5eb806} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga8119629b46c53745a78e02f0ea5eb806}} +\index{Matrix@{Matrix}!ps\_matrix\_multiply@{ps\_matrix\_multiply}} +\index{ps\_matrix\_multiply@{ps\_matrix\_multiply}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_multiply()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+multiply (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{result, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{a, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{b }\end{DoxyParamCaption})} + + + +Multiplies the matrix in a and b together and stores the result in result. + + +\begin{DoxyParams}{Parameters} +{\em result} & Pointer to an existing matrix object in which to store the result. \\ +\hline +{\em a} & Pointer to an existing matrix object. \\ +\hline +{\em b} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+is\+\_\+identity}{p.}{group__matrix_ga1d82817780c82ee01aefca12d13d54b3}, \doxyref{ps\+\_\+matrix\+\_\+is\+\_\+equal}{p.}{group__matrix_ga07a2b7e798baf626f463a3fdf710a4c8} \doxyref{ps\+\_\+matrix\+\_\+get\+\_\+determinant}{p.}{group__matrix_gaf24da79783f772f8cf317c3e4fb01e60} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gaedf54a96b2ecf6f1d042c18bb2e92160}} +\index{Matrix@{Matrix}!ps\_matrix\_ref@{ps\_matrix\_ref}} +\index{ps\_matrix\_ref@{ps\_matrix\_ref}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+matrix} $\ast$ ps\+\_\+matrix\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Increases the reference count of the matrix by 1. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the matrix object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+create\+\_\+init}{p.}{group__matrix_ga69ede69a9ec2a9ab6f261eb316a6a234}, \doxyref{ps\+\_\+matrix\+\_\+create}{p.}{group__matrix_gadbacb61c46d84fbf556aedbf5e6ea259}, \doxyref{ps\+\_\+matrix\+\_\+create\+\_\+copy}{p.}{group__matrix_gac7c82a5f8aa0c78afec9a8db112d36a4}, \doxyref{ps\+\_\+matrix\+\_\+unref}{p.}{group__matrix_gad0aad436eff055216cfb61e920d2d14d} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga9c40abd2d698d542f35b0debbc272e54}} +\index{Matrix@{Matrix}!ps\_matrix\_rotate@{ps\_matrix\_rotate}} +\index{ps\_matrix\_rotate@{ps\_matrix\_rotate}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_rotate()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+rotate (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float}]{angle }\end{DoxyParamCaption})} + + + +Modify a matrix by rotating. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em angle} & The angle, in radians, which to rotate the specified matrix.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+translate}{p.}{group__matrix_gaa463cde9e371d3a64bfde5cb596f5d4b}, \doxyref{ps\+\_\+matrix\+\_\+shear}{p.}{group__matrix_ga462484036f58c406f0153ec244d12e7a}, \doxyref{ps\+\_\+matrix\+\_\+scale}{p.}{group__matrix_ga80519e826c14b23da56802220371a8cb} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga80519e826c14b23da56802220371a8cb}} +\index{Matrix@{Matrix}!ps\_matrix\_scale@{ps\_matrix\_scale}} +\index{ps\_matrix\_scale@{ps\_matrix\_scale}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_scale()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+scale (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float}]{sx, }\item[{float}]{sy }\end{DoxyParamCaption})} + + + +Modify a matrix by scaling. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em sx} & The scale factor for the X dimension. \\ +\hline +{\em sy} & The scale factor for the Y dimension.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+translate}{p.}{group__matrix_gaa463cde9e371d3a64bfde5cb596f5d4b}, \doxyref{ps\+\_\+matrix\+\_\+shear}{p.}{group__matrix_ga462484036f58c406f0153ec244d12e7a}, \doxyref{ps\+\_\+matrix\+\_\+rotate}{p.}{group__matrix_ga9c40abd2d698d542f35b0debbc272e54} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gac3b95f23aefc14e10ba631e24049d22f}} +\index{Matrix@{Matrix}!ps\_matrix\_set\_scale\_factor@{ps\_matrix\_set\_scale\_factor}} +\index{ps\_matrix\_set\_scale\_factor@{ps\_matrix\_set\_scale\_factor}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_set\_scale\_factor()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+set\+\_\+scale\+\_\+factor (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float}]{sx, }\item[{float}]{sy }\end{DoxyParamCaption})} + + + +Set the scale factors to the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em sx} & The scale factor in x dimension. \\ +\hline +{\em sy} & The scale factor in y dimension.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+get\+\_\+scale\+\_\+factor}{p.}{group__matrix_ga12b2687f49092b49087f4957d392f81e} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga586e87bb4af468c588f8b461ac53aca5}} +\index{Matrix@{Matrix}!ps\_matrix\_set\_shear\_factor@{ps\_matrix\_set\_shear\_factor}} +\index{ps\_matrix\_set\_shear\_factor@{ps\_matrix\_set\_shear\_factor}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_set\_shear\_factor()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+set\+\_\+shear\+\_\+factor (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float}]{shx, }\item[{float}]{shy }\end{DoxyParamCaption})} + + + +Set the shear factors to the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em shx} & The shear factor for the horizontal. \\ +\hline +{\em shy} & The shear factor for the vertical.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+get\+\_\+shear\+\_\+factor}{p.}{group__matrix_gaf3c36f3ba1aa416c32ee85eba67d7529} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga5fba883620ceeca442f20c5b2a0a78f7}} +\index{Matrix@{Matrix}!ps\_matrix\_set\_translate\_factor@{ps\_matrix\_set\_translate\_factor}} +\index{ps\_matrix\_set\_translate\_factor@{ps\_matrix\_set\_translate\_factor}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_set\_translate\_factor()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+set\+\_\+translate\+\_\+factor (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float}]{tx, }\item[{float}]{ty }\end{DoxyParamCaption})} + + + +Set the translate factors to the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em tx} & The amount, in pixels, which the translate factor in x direction. \\ +\hline +{\em ty} & The amount, in pixels, which the translate factor in y direction.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+get\+\_\+translate\+\_\+factor}{p.}{group__matrix_ga9a69fad772fb6c698981078df4892f75} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga462484036f58c406f0153ec244d12e7a}} +\index{Matrix@{Matrix}!ps\_matrix\_shear@{ps\_matrix\_shear}} +\index{ps\_matrix\_shear@{ps\_matrix\_shear}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_shear()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+shear (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float}]{shx, }\item[{float}]{shy }\end{DoxyParamCaption})} + + + +Modify a matrix by shearing. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em shx} & The shear factor for the horizontal. \\ +\hline +{\em shy} & The shear factor for the vertical.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+translate}{p.}{group__matrix_gaa463cde9e371d3a64bfde5cb596f5d4b}, \doxyref{ps\+\_\+matrix\+\_\+scale}{p.}{group__matrix_ga80519e826c14b23da56802220371a8cb}, \doxyref{ps\+\_\+matrix\+\_\+rotate}{p.}{group__matrix_ga9c40abd2d698d542f35b0debbc272e54} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga4ef7bd25510bb5a6ed2072bba6be4bf8}} +\index{Matrix@{Matrix}!ps\_matrix\_transform\_path@{ps\_matrix\_transform\_path}} +\index{ps\_matrix\_transform\_path@{ps\_matrix\_transform\_path}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_transform\_path()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+transform\+\_\+path (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{\textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Transform an existing path using the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em path} & An existing path which will be transformed.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+transform\+\_\+point}{p.}{group__matrix_ga300ed15804faa1a770a24cd2024480dc}, \doxyref{ps\+\_\+matrix\+\_\+transform\+\_\+rect}{p.}{group__matrix_ga3d552bbf5434d45a8972b6bae2eb0c1e} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga300ed15804faa1a770a24cd2024480dc}} +\index{Matrix@{Matrix}!ps\_matrix\_transform\_point@{ps\_matrix\_transform\_point}} +\index{ps\_matrix\_transform\_point@{ps\_matrix\_transform\_point}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_transform\_point()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+transform\+\_\+point (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{\textbf{ ps\+\_\+point} $\ast$}]{point }\end{DoxyParamCaption})} + + + +Transform an existing point using the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em point} & An existing point which will be transformed.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+transform\+\_\+rect}{p.}{group__matrix_ga3d552bbf5434d45a8972b6bae2eb0c1e}, \doxyref{ps\+\_\+matrix\+\_\+transform\+\_\+path}{p.}{group__matrix_ga4ef7bd25510bb5a6ed2072bba6be4bf8} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_ga3d552bbf5434d45a8972b6bae2eb0c1e}} +\index{Matrix@{Matrix}!ps\_matrix\_transform\_rect@{ps\_matrix\_transform\_rect}} +\index{ps\_matrix\_transform\_rect@{ps\_matrix\_transform\_rect}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_transform\_rect()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+transform\+\_\+rect (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{\textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Transform an existing rectangle using the matrix. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em rect} & An existing rectangle which will be transformed.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+transform\+\_\+point}{p.}{group__matrix_ga300ed15804faa1a770a24cd2024480dc}, \doxyref{ps\+\_\+matrix\+\_\+transform\+\_\+path}{p.}{group__matrix_ga4ef7bd25510bb5a6ed2072bba6be4bf8} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gaa463cde9e371d3a64bfde5cb596f5d4b}} +\index{Matrix@{Matrix}!ps\_matrix\_translate@{ps\_matrix\_translate}} +\index{ps\_matrix\_translate@{ps\_matrix\_translate}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_translate()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+translate (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix, }\item[{float}]{tx, }\item[{float}]{ty }\end{DoxyParamCaption})} + + + +Modify a matrix by translating. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object. \\ +\hline +{\em tx} & The amount, in pixels, which to translate in x direction. \\ +\hline +{\em ty} & The amount, in pixels, which to translate in y direction.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+scale}{p.}{group__matrix_ga80519e826c14b23da56802220371a8cb}, \doxyref{ps\+\_\+matrix\+\_\+shear}{p.}{group__matrix_ga462484036f58c406f0153ec244d12e7a}, \doxyref{ps\+\_\+matrix\+\_\+rotate}{p.}{group__matrix_ga9c40abd2d698d542f35b0debbc272e54} +\end{DoxySeeAlso} +\mbox{\label{group__matrix_gad0aad436eff055216cfb61e920d2d14d}} +\index{Matrix@{Matrix}!ps\_matrix\_unref@{ps\_matrix\_unref}} +\index{ps\_matrix\_unref@{ps\_matrix\_unref}!Matrix@{Matrix}} +\doxysubsubsection{ps\_matrix\_unref()} +{\footnotesize\ttfamily void ps\+\_\+matrix\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Decrements the reference count for the matrix object. If the reference count on the matrix falls to 0, the matrix is freed. + + +\begin{DoxyParams}{Parameters} +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix\+\_\+create\+\_\+init}{p.}{group__matrix_ga69ede69a9ec2a9ab6f261eb316a6a234}, \doxyref{ps\+\_\+matrix\+\_\+create}{p.}{group__matrix_gadbacb61c46d84fbf556aedbf5e6ea259}, \doxyref{ps\+\_\+matrix\+\_\+create\+\_\+copy}{p.}{group__matrix_gac7c82a5f8aa0c78afec9a8db112d36a4}, \doxyref{ps\+\_\+matrix\+\_\+ref}{p.}{group__matrix_gaedf54a96b2ecf6f1d042c18bb2e92160} +\end{DoxySeeAlso} diff --git a/doc/latex/group__objects.tex b/doc/latex/group__objects.tex new file mode 100644 index 0000000..1843305 --- /dev/null +++ b/doc/latex/group__objects.tex @@ -0,0 +1,210 @@ +\doxysection{Graphic Object Types} +\label{group__objects}\index{Graphic Object Types@{Graphic Object Types}} +\doxysubsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \textbf{ \+\_\+ps\+\_\+glyph} +\begin{DoxyCompactList}\small\item\em A character glyph of a font. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+size} +\begin{DoxyCompactList}\small\item\em A structure that contains width and height values. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+rect} +\begin{DoxyCompactList}\small\item\em A structure that contains location and dimensions of a rectangle. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+point} +\begin{DoxyCompactList}\small\item\em A structure that contains a point in a two-\/dimensional coordinate system. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+color} +\begin{DoxyCompactList}\small\item\em A structure that contains rgba values for a color. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \+\_\+ps\+\_\+context \textbf{ ps\+\_\+context} +\begin{DoxyCompactList}\small\item\em An opaque type represents a Picasso drawing environment. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+canvas \textbf{ ps\+\_\+canvas} +\begin{DoxyCompactList}\small\item\em An opaque type represents a pixel buffer. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+image \textbf{ ps\+\_\+image} +\begin{DoxyCompactList}\small\item\em An opaque type represents an image. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+pattern \textbf{ ps\+\_\+pattern} +\begin{DoxyCompactList}\small\item\em An opaque type represents a pattern. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+gradient \textbf{ ps\+\_\+gradient} +\begin{DoxyCompactList}\small\item\em An opaque type represents a gradient. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+matrix \textbf{ ps\+\_\+matrix} +\begin{DoxyCompactList}\small\item\em An opaque type represents a transform matrix. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+path \textbf{ ps\+\_\+path} +\begin{DoxyCompactList}\small\item\em An opaque type represents a graphic path. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+mask \textbf{ ps\+\_\+mask} +\begin{DoxyCompactList}\small\item\em An opaque type represents an alpha mask. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+font \textbf{ ps\+\_\+font} +\begin{DoxyCompactList}\small\item\em An opaque type represents a font. \end{DoxyCompactList}\item +\mbox{\label{group__objects_gaa30ffeb35a078e431987fce5fa8b06ff}} +typedef struct \textbf{ \+\_\+ps\+\_\+glyph} \textbf{ ps\+\_\+glyph} +\begin{DoxyCompactList}\small\item\em A character glyph of a font. \end{DoxyCompactList}\item +\mbox{\label{group__objects_gae446712406e54b010a113e6f8f22d5f6}} +typedef struct \textbf{ \+\_\+ps\+\_\+size} \textbf{ ps\+\_\+size} +\begin{DoxyCompactList}\small\item\em A structure that contains width and height values. \end{DoxyCompactList}\item +\mbox{\label{group__objects_ga6acefae8e0866450753775eb9424dea7}} +typedef struct \textbf{ \+\_\+ps\+\_\+rect} \textbf{ ps\+\_\+rect} +\begin{DoxyCompactList}\small\item\em A structure that contains location and dimensions of a rectangle. \end{DoxyCompactList}\item +\mbox{\label{group__objects_ga5b009b12407769aca1bc58223deeda7f}} +typedef struct \textbf{ \+\_\+ps\+\_\+point} \textbf{ ps\+\_\+point} +\begin{DoxyCompactList}\small\item\em A structure that contains a point in a two-\/dimensional coordinate system. \end{DoxyCompactList}\item +\mbox{\label{group__objects_gacdacc8fa6a9c402bf92de370d723ade6}} +typedef struct \textbf{ \+\_\+ps\+\_\+color} \textbf{ ps\+\_\+color} +\begin{DoxyCompactList}\small\item\em A structure that contains rgba values for a color. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Typedef Documentation} +\mbox{\label{group__objects_ga3bfe40359f5735c28409d200e20f1d5d}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_canvas@{ps\_canvas}} +\index{ps\_canvas@{ps\_canvas}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_canvas} +{\footnotesize\ttfamily \textbf{ ps\+\_\+canvas}} + + + +An opaque type represents a pixel buffer. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+context}{p.}{group__objects_ga4a70d4a51cfa38485adf65620e5a0ec9}, \doxyref{ps\+\_\+image}{p.}{group__objects_ga29ff73b2e4d6395ac53d9a203ad7f5ca} +\end{DoxySeeAlso} + + +Definition at line 116 of file picasso.\+h. + +\mbox{\label{group__objects_ga4a70d4a51cfa38485adf65620e5a0ec9}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_context@{ps\_context}} +\index{ps\_context@{ps\_context}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_context} +{\footnotesize\ttfamily \textbf{ ps\+\_\+context}} + + + +An opaque type represents a Picasso drawing environment. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas}{p.}{group__objects_ga3bfe40359f5735c28409d200e20f1d5d} +\end{DoxySeeAlso} + + +Definition at line 109 of file picasso.\+h. + +\mbox{\label{group__objects_ga2bfb2ab959ceb77dd895419a6c204b1c}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_font@{ps\_font}} +\index{ps\_font@{ps\_font}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_font} +{\footnotesize\ttfamily \textbf{ ps\+\_\+font}} + + + +An opaque type represents a font. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+context}{p.}{group__objects_ga4a70d4a51cfa38485adf65620e5a0ec9} +\end{DoxySeeAlso} + + +Definition at line 165 of file picasso.\+h. + +\mbox{\label{group__objects_gaed379382c1d4e59b5cc98ec18bbdfeb7}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_gradient@{ps\_gradient}} +\index{ps\_gradient@{ps\_gradient}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_gradient} +{\footnotesize\ttfamily \textbf{ ps\+\_\+gradient}} + + + +An opaque type represents a gradient. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path}{p.}{group__objects_ga0dad506d890c9cd5f8753ccc4da67c0d}, \doxyref{ps\+\_\+matrix}{p.}{group__objects_ga38ccd82f0c7cb9896723aeb6dbc76e4a} +\end{DoxySeeAlso} + + +Definition at line 137 of file picasso.\+h. + +\mbox{\label{group__objects_ga29ff73b2e4d6395ac53d9a203ad7f5ca}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_image@{ps\_image}} +\index{ps\_image@{ps\_image}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_image} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image}} + + + +An opaque type represents an image. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas}{p.}{group__objects_ga3bfe40359f5735c28409d200e20f1d5d}, \doxyref{ps\+\_\+pattern}{p.}{group__objects_gad1e6fe0a47ab5ea036555c64cb791538} +\end{DoxySeeAlso} + + +Definition at line 123 of file picasso.\+h. + +\mbox{\label{group__objects_ga092f94fd838b031395acbda684394b63}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_mask@{ps\_mask}} +\index{ps\_mask@{ps\_mask}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_mask} +{\footnotesize\ttfamily \textbf{ ps\+\_\+mask}} + + + +An opaque type represents an alpha mask. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path}{p.}{group__objects_ga0dad506d890c9cd5f8753ccc4da67c0d}, \doxyref{ps\+\_\+image}{p.}{group__objects_ga29ff73b2e4d6395ac53d9a203ad7f5ca}, \doxyref{ps\+\_\+canvas}{p.}{group__objects_ga3bfe40359f5735c28409d200e20f1d5d} +\end{DoxySeeAlso} + + +Definition at line 158 of file picasso.\+h. + +\mbox{\label{group__objects_ga38ccd82f0c7cb9896723aeb6dbc76e4a}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_matrix@{ps\_matrix}} +\index{ps\_matrix@{ps\_matrix}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_matrix} +{\footnotesize\ttfamily \textbf{ ps\+\_\+matrix}} + + + +An opaque type represents a transform matrix. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path}{p.}{group__objects_ga0dad506d890c9cd5f8753ccc4da67c0d}, \doxyref{ps\+\_\+context}{p.}{group__objects_ga4a70d4a51cfa38485adf65620e5a0ec9} +\end{DoxySeeAlso} + + +Definition at line 144 of file picasso.\+h. + +\mbox{\label{group__objects_ga0dad506d890c9cd5f8753ccc4da67c0d}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_path@{ps\_path}} +\index{ps\_path@{ps\_path}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_path} +{\footnotesize\ttfamily \textbf{ ps\+\_\+path}} + + + +An opaque type represents a graphic path. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+matrix}{p.}{group__objects_ga38ccd82f0c7cb9896723aeb6dbc76e4a}, \doxyref{ps\+\_\+context}{p.}{group__objects_ga4a70d4a51cfa38485adf65620e5a0ec9} +\end{DoxySeeAlso} + + +Definition at line 151 of file picasso.\+h. + +\mbox{\label{group__objects_gad1e6fe0a47ab5ea036555c64cb791538}} +\index{Graphic Object Types@{Graphic Object Types}!ps\_pattern@{ps\_pattern}} +\index{ps\_pattern@{ps\_pattern}!Graphic Object Types@{Graphic Object Types}} +\doxysubsubsection{ps\_pattern} +{\footnotesize\ttfamily \textbf{ ps\+\_\+pattern}} + + + +An opaque type represents a pattern. + +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+canvas}{p.}{group__objects_ga3bfe40359f5735c28409d200e20f1d5d}, \doxyref{ps\+\_\+image}{p.}{group__objects_ga29ff73b2e4d6395ac53d9a203ad7f5ca} +\end{DoxySeeAlso} + + +Definition at line 130 of file picasso.\+h. + diff --git a/doc/latex/group__paint.tex b/doc/latex/group__paint.tex new file mode 100644 index 0000000..228d409 --- /dev/null +++ b/doc/latex/group__paint.tex @@ -0,0 +1,91 @@ +\doxysection{Paint} +\label{group__paint}\index{Paint@{Paint}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+stroke} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Stroke the current path according to the line attributes. After called, the current path will be cleared from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+fill} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Fill the current path according to the source attributes. After called, the current path will be cleared from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+paint} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Fill and stroke the current path according to the source and line attributes. After called, the current path will be cleared from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clear} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Clear the current context with source color. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__paint_ga793a1c39729d5aed04780c236c42c980}} +\index{Paint@{Paint}!ps\_clear@{ps\_clear}} +\index{ps\_clear@{ps\_clear}!Paint@{Paint}} +\doxysubsubsection{ps\_clear()} +{\footnotesize\ttfamily void ps\+\_\+clear (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Clear the current context with source color. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+stroke}{p.}{group__paint_ga70cb382dcc89af84f5ff35a0f0edec9d}, \doxyref{ps\+\_\+fill}{p.}{group__paint_ga0f751ef4beb90e8173c9daeae11d5b1b}, \doxyref{ps\+\_\+paint}{p.}{group__paint_gaff82a5d08a92ffe819136c91bb0c0bf7} +\end{DoxySeeAlso} +\mbox{\label{group__paint_ga0f751ef4beb90e8173c9daeae11d5b1b}} +\index{Paint@{Paint}!ps\_fill@{ps\_fill}} +\index{ps\_fill@{ps\_fill}!Paint@{Paint}} +\doxysubsubsection{ps\_fill()} +{\footnotesize\ttfamily void ps\+\_\+fill (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Fill the current path according to the source attributes. After called, the current path will be cleared from the context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+stroke}{p.}{group__paint_ga70cb382dcc89af84f5ff35a0f0edec9d}, \doxyref{ps\+\_\+paint}{p.}{group__paint_gaff82a5d08a92ffe819136c91bb0c0bf7}, \doxyref{ps\+\_\+clear}{p.}{group__paint_ga793a1c39729d5aed04780c236c42c980} +\end{DoxySeeAlso} +\mbox{\label{group__paint_gaff82a5d08a92ffe819136c91bb0c0bf7}} +\index{Paint@{Paint}!ps\_paint@{ps\_paint}} +\index{ps\_paint@{ps\_paint}!Paint@{Paint}} +\doxysubsubsection{ps\_paint()} +{\footnotesize\ttfamily void ps\+\_\+paint (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Fill and stroke the current path according to the source and line attributes. After called, the current path will be cleared from the context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+stroke}{p.}{group__paint_ga70cb382dcc89af84f5ff35a0f0edec9d}, \doxyref{ps\+\_\+fill}{p.}{group__paint_ga0f751ef4beb90e8173c9daeae11d5b1b}, \doxyref{ps\+\_\+clear}{p.}{group__paint_ga793a1c39729d5aed04780c236c42c980} +\end{DoxySeeAlso} +\mbox{\label{group__paint_ga70cb382dcc89af84f5ff35a0f0edec9d}} +\index{Paint@{Paint}!ps\_stroke@{ps\_stroke}} +\index{ps\_stroke@{ps\_stroke}!Paint@{Paint}} +\doxysubsubsection{ps\_stroke()} +{\footnotesize\ttfamily void ps\+\_\+stroke (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Stroke the current path according to the line attributes. After called, the current path will be cleared from the context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+fill}{p.}{group__paint_ga0f751ef4beb90e8173c9daeae11d5b1b}, \doxyref{ps\+\_\+paint}{p.}{group__paint_gaff82a5d08a92ffe819136c91bb0c0bf7}, \doxyref{ps\+\_\+clear}{p.}{group__paint_ga793a1c39729d5aed04780c236c42c980} +\end{DoxySeeAlso} diff --git a/doc/latex/group__path.tex b/doc/latex/group__path.tex new file mode 100644 index 0000000..927f3ab --- /dev/null +++ b/doc/latex/group__path.tex @@ -0,0 +1,767 @@ +\doxysection{Path} +\label{group__path}\index{Path@{Path}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__path_ga838bdd450d89cf57e318f63aad3c0157}} +typedef enum \textbf{ \+\_\+ps\+\_\+path\+\_\+cmd} \textbf{ ps\+\_\+path\+\_\+cmd} +\begin{DoxyCompactList}\small\item\em Path command for vertices. \end{DoxyCompactList}\item +\mbox{\label{group__path_gaa7a42f9878355aa3312570bd68524a15}} +typedef enum \textbf{ \+\_\+ps\+\_\+path\+\_\+op} \textbf{ ps\+\_\+path\+\_\+operation} +\begin{DoxyCompactList}\small\item\em Path clipping operations. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+path\+\_\+cmd} \{ \newline +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+S\+T\+OP} = 0, +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+M\+O\+V\+E\+\_\+\+TO} = 1, +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+L\+I\+N\+E\+\_\+\+TO} = 2, +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+C\+U\+R\+V\+E3} = 3, +\newline +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+C\+U\+R\+V\+E4} = 4, +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+E\+N\+D\+\_\+\+P\+O\+LY} = 0x0F + \} +\begin{DoxyCompactList}\small\item\em Path command for vertices. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+path\+\_\+op} \{ \textbf{ P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+U\+N\+I\+ON}, +\textbf{ P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+I\+N\+T\+E\+R\+S\+E\+CT}, +\textbf{ P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+X\+OR}, +\textbf{ P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+D\+I\+FF} + \} +\begin{DoxyCompactList}\small\item\em Path clipping operations. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+path} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+create} (void) +\begin{DoxyCompactList}\small\item\em Create a new empty path object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+path} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+create\+\_\+copy} (const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Create a copy from an existing path object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+path} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+ref} (\textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the path by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+unref} (\textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the path object. If the reference count on the path falls to 0, the path is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+move\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Begin a new sub path, and set the current point in the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+line\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Add a line to the path from the current point to given point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+tangent\+\_\+arc\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, float radius, const \textbf{ ps\+\_\+point} $\ast$tp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add an arc to the path which tangent at two line. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+arc\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, float radiusX, float radiusY, float angle, \textbf{ ps\+\_\+bool} large\+\_\+arc, \textbf{ ps\+\_\+bool} clockwise, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add an arc to the path, using radius, angle and end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+bezier\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$fcp, const \textbf{ ps\+\_\+point} $\ast$scp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add a cubic bezier spline to the path from current point to end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+quad\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$cp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add a quadratic bezier spline to the path from current point to end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+sub\+\_\+close} (\textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Close the sub path, and begin a new one. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+get\+\_\+length} (const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Return The length of the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+clear} (\textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Clear the path to empty. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+is\+\_\+empty} (const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Checks whether the path is empty. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT unsigned int P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+get\+\_\+vertex\+\_\+count} (const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Return the count of vertices in the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+path\+\_\+cmd} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+get\+\_\+vertex} (const \textbf{ ps\+\_\+path} $\ast$path, unsigned int index, \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Get a vertex from the path by index, and return the vertex command. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+bounding\+\_\+rect} (const \textbf{ ps\+\_\+path} $\ast$path, \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Get the bounding rectangle of the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+contains} (const \textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$point, \textbf{ ps\+\_\+fill\+\_\+rule} rule) +\begin{DoxyCompactList}\small\item\em Check whether a point is contained in the path by fill method. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+stroke\+\_\+contains} (const \textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$point, float width) +\begin{DoxyCompactList}\small\item\em Check whether a point is contained in the path by stroke method. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+line} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$p1, const \textbf{ ps\+\_\+point} $\ast$p2) +\begin{DoxyCompactList}\small\item\em Add a line to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+arc} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$cp, float radius, float sangle, float eangle, \textbf{ ps\+\_\+bool} clockwise) +\begin{DoxyCompactList}\small\item\em Add a arc to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+rect} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Add a rectangle to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+ellipse} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Add an ellipse to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+rounded\+\_\+rect} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+rect} $\ast$rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby) +\begin{DoxyCompactList}\small\item\em Add a rounded rectangle to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+sub\+\_\+path} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+path} $\ast$spath) +\begin{DoxyCompactList}\small\item\em Add an sub path to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+clipping} (\textbf{ ps\+\_\+path} $\ast$result, \textbf{ ps\+\_\+path\+\_\+operation} op, const \textbf{ ps\+\_\+path} $\ast$a, const \textbf{ ps\+\_\+path} $\ast$b) +\begin{DoxyCompactList}\small\item\em Clipping two path with the operation and get the result path. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__path_ga7e3b1c8bfcf2b95300f3b1f25f2ffdf6}} +\index{Path@{Path}!\_ps\_path\_cmd@{\_ps\_path\_cmd}} +\index{\_ps\_path\_cmd@{\_ps\_path\_cmd}!Path@{Path}} +\doxysubsubsection{\_ps\_path\_cmd} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+path\+\_\+cmd}} + + + +Path command for vertices. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_CMD\_STOP@{PATH\_CMD\_STOP}!Path@{Path}}\index{Path@{Path}!PATH\_CMD\_STOP@{PATH\_CMD\_STOP}}}\mbox{\label{group__path_gga7e3b1c8bfcf2b95300f3b1f25f2ffdf6aeda0c6630855d116e1265db2e4b9b5e5}} +P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+S\+T\+OP&Stop command. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_CMD\_MOVE\_TO@{PATH\_CMD\_MOVE\_TO}!Path@{Path}}\index{Path@{Path}!PATH\_CMD\_MOVE\_TO@{PATH\_CMD\_MOVE\_TO}}}\mbox{\label{group__path_gga7e3b1c8bfcf2b95300f3b1f25f2ffdf6a1df79d06252a2c8a0e19c1769487657b}} +P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+M\+O\+V\+E\+\_\+\+TO&Move to command. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_CMD\_LINE\_TO@{PATH\_CMD\_LINE\_TO}!Path@{Path}}\index{Path@{Path}!PATH\_CMD\_LINE\_TO@{PATH\_CMD\_LINE\_TO}}}\mbox{\label{group__path_gga7e3b1c8bfcf2b95300f3b1f25f2ffdf6a30ad00a964df29b78a19839db15dccea}} +P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+L\+I\+N\+E\+\_\+\+TO&Line to command. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_CMD\_CURVE3@{PATH\_CMD\_CURVE3}!Path@{Path}}\index{Path@{Path}!PATH\_CMD\_CURVE3@{PATH\_CMD\_CURVE3}}}\mbox{\label{group__path_gga7e3b1c8bfcf2b95300f3b1f25f2ffdf6aca4a14ed6fc19013f0c52655ecb1bc64}} +P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+C\+U\+R\+V\+E3&Quad curve to command. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_CMD\_CURVE4@{PATH\_CMD\_CURVE4}!Path@{Path}}\index{Path@{Path}!PATH\_CMD\_CURVE4@{PATH\_CMD\_CURVE4}}}\mbox{\label{group__path_gga7e3b1c8bfcf2b95300f3b1f25f2ffdf6ae08e58bb35199ee27b7e7de4c954b71e}} +P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+C\+U\+R\+V\+E4&Bezier curve to command. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_CMD\_END\_POLY@{PATH\_CMD\_END\_POLY}!Path@{Path}}\index{Path@{Path}!PATH\_CMD\_END\_POLY@{PATH\_CMD\_END\_POLY}}}\mbox{\label{group__path_gga7e3b1c8bfcf2b95300f3b1f25f2ffdf6a919213cca4025864fc0f529be5b870ff}} +P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+E\+N\+D\+\_\+\+P\+O\+LY&End polyline command. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 3301 of file picasso.\+h. + +\mbox{\label{group__path_gae6007109d33fd12e3900ac6da459bf88}} +\index{Path@{Path}!\_ps\_path\_op@{\_ps\_path\_op}} +\index{\_ps\_path\_op@{\_ps\_path\_op}!Path@{Path}} +\doxysubsubsection{\_ps\_path\_op} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+path\+\_\+op}} + + + +Path clipping operations. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_OP\_UNION@{PATH\_OP\_UNION}!Path@{Path}}\index{Path@{Path}!PATH\_OP\_UNION@{PATH\_OP\_UNION}}}\mbox{\label{group__path_ggae6007109d33fd12e3900ac6da459bf88a83fdf2541b52d22cdf11c0df15369bf2}} +P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+U\+N\+I\+ON&Union. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_OP\_INTERSECT@{PATH\_OP\_INTERSECT}!Path@{Path}}\index{Path@{Path}!PATH\_OP\_INTERSECT@{PATH\_OP\_INTERSECT}}}\mbox{\label{group__path_ggae6007109d33fd12e3900ac6da459bf88a6961f8d15b6508d2881e7010ded7d193}} +P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+I\+N\+T\+E\+R\+S\+E\+CT&Intersection. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_OP\_XOR@{PATH\_OP\_XOR}!Path@{Path}}\index{Path@{Path}!PATH\_OP\_XOR@{PATH\_OP\_XOR}}}\mbox{\label{group__path_ggae6007109d33fd12e3900ac6da459bf88aff58d5d380ec319172c3f98cd990f040}} +P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+X\+OR&Exclusive or. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PATH\_OP\_DIFF@{PATH\_OP\_DIFF}!Path@{Path}}\index{Path@{Path}!PATH\_OP\_DIFF@{PATH\_OP\_DIFF}}}\mbox{\label{group__path_ggae6007109d33fd12e3900ac6da459bf88a905c39231d4f801b60e158962daba058}} +P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+D\+I\+FF&Difference. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 3477 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__path_ga4a80afa36939fa41a0d288adaead0067}} +\index{Path@{Path}!ps\_path\_add\_arc@{ps\_path\_add\_arc}} +\index{ps\_path\_add\_arc@{ps\_path\_add\_arc}!Path@{Path}} +\doxysubsubsection{ps\_path\_add\_arc()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+add\+\_\+arc (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{cp, }\item[{float}]{radius, }\item[{float}]{sangle, }\item[{float}]{eangle, }\item[{\textbf{ ps\+\_\+bool}}]{clockwise }\end{DoxyParamCaption})} + + + +Add a arc to the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em cp} & The center point of the arc. \\ +\hline +{\em radius} & The radius of the arc. \\ +\hline +{\em sangle} & The start angle, in radians. \\ +\hline +{\em eangle} & The end angle, in radians. \\ +\hline +{\em clockwise} & True is clockwise, False is counter clockwise.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+add\+\_\+line}{p.}{group__path_gae05db304c5c79f243d4827206f0a61b4}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rect}{p.}{group__path_ga1b21042aa06276a5fb4fbe9d00e68cea}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+ellipse}{p.}{group__path_ga22d76078132b064b8b53a6a7662cc618}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rounded\+\_\+rect}{p.}{group__path_gaf96913ad1feb83ac48a6c543d5217726}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__path_ga49c46824273b0f69457d53eff2a8a75b} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga22d76078132b064b8b53a6a7662cc618}} +\index{Path@{Path}!ps\_path\_add\_ellipse@{ps\_path\_add\_ellipse}} +\index{ps\_path\_add\_ellipse@{ps\_path\_add\_ellipse}!Path@{Path}} +\doxysubsubsection{ps\_path\_add\_ellipse()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+add\+\_\+ellipse (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Add an ellipse to the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em rect} & The rectangle to enclose the ellipse.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+add\+\_\+arc}{p.}{group__path_ga4a80afa36939fa41a0d288adaead0067}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+line}{p.}{group__path_gae05db304c5c79f243d4827206f0a61b4}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rect}{p.}{group__path_ga1b21042aa06276a5fb4fbe9d00e68cea}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rounded\+\_\+rect}{p.}{group__path_gaf96913ad1feb83ac48a6c543d5217726}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__path_ga49c46824273b0f69457d53eff2a8a75b} +\end{DoxySeeAlso} +\mbox{\label{group__path_gae05db304c5c79f243d4827206f0a61b4}} +\index{Path@{Path}!ps\_path\_add\_line@{ps\_path\_add\_line}} +\index{ps\_path\_add\_line@{ps\_path\_add\_line}!Path@{Path}} +\doxysubsubsection{ps\_path\_add\_line()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+add\+\_\+line (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{p1, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{p2 }\end{DoxyParamCaption})} + + + +Add a line to the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em p1} & The start point for the line. \\ +\hline +{\em p2} & The end point for the line.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+add\+\_\+arc}{p.}{group__path_ga4a80afa36939fa41a0d288adaead0067}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rect}{p.}{group__path_ga1b21042aa06276a5fb4fbe9d00e68cea}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+ellipse}{p.}{group__path_ga22d76078132b064b8b53a6a7662cc618}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rounded\+\_\+rect}{p.}{group__path_gaf96913ad1feb83ac48a6c543d5217726}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__path_ga49c46824273b0f69457d53eff2a8a75b} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga1b21042aa06276a5fb4fbe9d00e68cea}} +\index{Path@{Path}!ps\_path\_add\_rect@{ps\_path\_add\_rect}} +\index{ps\_path\_add\_rect@{ps\_path\_add\_rect}!Path@{Path}} +\doxysubsubsection{ps\_path\_add\_rect()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+add\+\_\+rect (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Add a rectangle to the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em rect} & The rectangle to be added.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+add\+\_\+arc}{p.}{group__path_ga4a80afa36939fa41a0d288adaead0067}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+line}{p.}{group__path_gae05db304c5c79f243d4827206f0a61b4}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+ellipse}{p.}{group__path_ga22d76078132b064b8b53a6a7662cc618}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rounded\+\_\+rect}{p.}{group__path_gaf96913ad1feb83ac48a6c543d5217726}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__path_ga49c46824273b0f69457d53eff2a8a75b} +\end{DoxySeeAlso} +\mbox{\label{group__path_gaf96913ad1feb83ac48a6c543d5217726}} +\index{Path@{Path}!ps\_path\_add\_rounded\_rect@{ps\_path\_add\_rounded\_rect}} +\index{ps\_path\_add\_rounded\_rect@{ps\_path\_add\_rounded\_rect}!Path@{Path}} +\doxysubsubsection{ps\_path\_add\_rounded\_rect()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+add\+\_\+rounded\+\_\+rect (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{rect, }\item[{float}]{ltx, }\item[{float}]{lty, }\item[{float}]{rtx, }\item[{float}]{rty, }\item[{float}]{lbx, }\item[{float}]{lby, }\item[{float}]{rbx, }\item[{float}]{rby }\end{DoxyParamCaption})} + + + +Add a rounded rectangle to the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em rect} & The rectangle which will be added. \\ +\hline +{\em ltx} & The left top horizontal radius. \\ +\hline +{\em lty} & The left top vertical radius. \\ +\hline +{\em rtx} & The right top horizontal radius. \\ +\hline +{\em rty} & The right top vertical radius. \\ +\hline +{\em lbx} & The left bottom horizontal radius. \\ +\hline +{\em lby} & The left bottom vertical radius. \\ +\hline +{\em rbx} & The right bottom horizontal radius. \\ +\hline +{\em rby} & The right bottom vertical radius.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+add\+\_\+arc}{p.}{group__path_ga4a80afa36939fa41a0d288adaead0067}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+line}{p.}{group__path_gae05db304c5c79f243d4827206f0a61b4}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rect}{p.}{group__path_ga1b21042aa06276a5fb4fbe9d00e68cea}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+ellipse}{p.}{group__path_ga22d76078132b064b8b53a6a7662cc618}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+sub\+\_\+path}{p.}{group__path_ga49c46824273b0f69457d53eff2a8a75b} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga49c46824273b0f69457d53eff2a8a75b}} +\index{Path@{Path}!ps\_path\_add\_sub\_path@{ps\_path\_add\_sub\_path}} +\index{ps\_path\_add\_sub\_path@{ps\_path\_add\_sub\_path}!Path@{Path}} +\doxysubsubsection{ps\_path\_add\_sub\_path()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+add\+\_\+sub\+\_\+path (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+path} $\ast$}]{spath }\end{DoxyParamCaption})} + + + +Add an sub path to the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em spath} & The path will be added.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+add\+\_\+arc}{p.}{group__path_ga4a80afa36939fa41a0d288adaead0067}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+line}{p.}{group__path_gae05db304c5c79f243d4827206f0a61b4}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rect}{p.}{group__path_ga1b21042aa06276a5fb4fbe9d00e68cea}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+rounded\+\_\+rect}{p.}{group__path_gaf96913ad1feb83ac48a6c543d5217726}, \doxyref{ps\+\_\+path\+\_\+add\+\_\+ellipse}{p.}{group__path_ga22d76078132b064b8b53a6a7662cc618} +\end{DoxySeeAlso} +\mbox{\label{group__path_gaa70c71f36ee733b655730e9c9281d2de}} +\index{Path@{Path}!ps\_path\_arc\_to@{ps\_path\_arc\_to}} +\index{ps\_path\_arc\_to@{ps\_path\_arc\_to}!Path@{Path}} +\doxysubsubsection{ps\_path\_arc\_to()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+arc\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{float}]{radiusX, }\item[{float}]{radiusY, }\item[{float}]{angle, }\item[{\textbf{ ps\+\_\+bool}}]{large\+\_\+arc, }\item[{\textbf{ ps\+\_\+bool}}]{clockwise, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{ep }\end{DoxyParamCaption})} + + + +Add an arc to the path, using radius, angle and end point. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em radiusX} & The horizontal radius of arc. \\ +\hline +{\em radiusY} & The vertical radius of arc. \\ +\hline +{\em angle} & The angle of arc, in radians. \\ +\hline +{\em large\+\_\+arc} & True is large arc, False is small arc. \\ +\hline +{\em clockwise} & True is clockwise, False is counter clockwise. \\ +\hline +{\em ep} & The end point of the arc.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+move\+\_\+to}{p.}{group__path_ga954a589403b65e3f801bec4df75aa8d7}, \doxyref{ps\+\_\+path\+\_\+bezier\+\_\+to}{p.}{group__path_ga654d584f8ba6d3b176e8ae79b0b3d66d}, \doxyref{ps\+\_\+path\+\_\+quad\+\_\+to}{p.}{group__path_ga1f39765e67617217af9716957a2384cb} \doxyref{ps\+\_\+path\+\_\+tangent\+\_\+arc\+\_\+to}{p.}{group__path_gaed6543961c56b224c8e55eb67a9c307d}, \doxyref{ps\+\_\+path\+\_\+line\+\_\+to}{p.}{group__path_gaf84c699925f5d8d27a80c1edfb0f5563} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga654d584f8ba6d3b176e8ae79b0b3d66d}} +\index{Path@{Path}!ps\_path\_bezier\_to@{ps\_path\_bezier\_to}} +\index{ps\_path\_bezier\_to@{ps\_path\_bezier\_to}!Path@{Path}} +\doxysubsubsection{ps\_path\_bezier\_to()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+bezier\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{fcp, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{scp, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{ep }\end{DoxyParamCaption})} + + + +Add a cubic bezier spline to the path from current point to end point. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em fcp} & The first control point of the curve. \\ +\hline +{\em scp} & The second control point of the curve. \\ +\hline +{\em ep} & The end point of the curve.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+move\+\_\+to}{p.}{group__path_ga954a589403b65e3f801bec4df75aa8d7}, \doxyref{ps\+\_\+path\+\_\+arc\+\_\+to}{p.}{group__path_gaa70c71f36ee733b655730e9c9281d2de}, \doxyref{ps\+\_\+path\+\_\+quad\+\_\+to}{p.}{group__path_ga1f39765e67617217af9716957a2384cb} \doxyref{ps\+\_\+path\+\_\+tangent\+\_\+arc\+\_\+to}{p.}{group__path_gaed6543961c56b224c8e55eb67a9c307d}, \doxyref{ps\+\_\+path\+\_\+line\+\_\+to}{p.}{group__path_gaf84c699925f5d8d27a80c1edfb0f5563} +\end{DoxySeeAlso} +\mbox{\label{group__path_gad73761a49225721353dbf33ddac8f09b}} +\index{Path@{Path}!ps\_path\_bounding\_rect@{ps\_path\_bounding\_rect}} +\index{ps\_path\_bounding\_rect@{ps\_path\_bounding\_rect}!Path@{Path}} +\doxysubsubsection{ps\_path\_bounding\_rect()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+path\+\_\+bounding\+\_\+rect (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{\textbf{ ps\+\_\+rect} $\ast$}]{rect }\end{DoxyParamCaption})} + + + +Get the bounding rectangle of the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em rect} & Pointer to a buffer to receiving the rect.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex\+\_\+count}{p.}{group__path_ga5f38d7b21720e6ce0d233eccf352d8e0}, \doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex}{p.}{group__path_ga420531dae755417305bb4092659bab53}, \doxyref{ps\+\_\+path\+\_\+contains}{p.}{group__path_gaf026a4a1760f350873c1a8a9e3a7e8f2}, \doxyref{ps\+\_\+path\+\_\+stroke\+\_\+contains}{p.}{group__path_gaca11c82acc68f1a5cdf886727b3f50d9} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga2966ad40d07c9f5f52f2dc6516107115}} +\index{Path@{Path}!ps\_path\_clear@{ps\_path\_clear}} +\index{ps\_path\_clear@{ps\_path\_clear}!Path@{Path}} +\doxysubsubsection{ps\_path\_clear()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+clear (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Clear the path to empty. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+sub\+\_\+close}{p.}{group__path_gac19ea77b0228e57be93ebc43e7ed2fad}, \doxyref{ps\+\_\+path\+\_\+get\+\_\+length}{p.}{group__path_gaa8a887153c3eb81649a7a67410329aea}, \doxyref{ps\+\_\+path\+\_\+is\+\_\+empty}{p.}{group__path_ga0640542247094b43cdde639ded93e85e} +\end{DoxySeeAlso} +\mbox{\label{group__path_gad2e602bf42ffba80251c4658197aac62}} +\index{Path@{Path}!ps\_path\_clipping@{ps\_path\_clipping}} +\index{ps\_path\_clipping@{ps\_path\_clipping}!Path@{Path}} +\doxysubsubsection{ps\_path\_clipping()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+clipping (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{result, }\item[{\textbf{ ps\+\_\+path\+\_\+operation}}]{op, }\item[{const \textbf{ ps\+\_\+path} $\ast$}]{a, }\item[{const \textbf{ ps\+\_\+path} $\ast$}]{b }\end{DoxyParamCaption})} + + + +Clipping two path with the operation and get the result path. + + +\begin{DoxyParams}{Parameters} +{\em result} & Pointer to an existing path object for result. \\ +\hline +{\em op} & The specified operation for clipping. \\ +\hline +{\em a} & The source path for clipping. \\ +\hline +{\em b} & The path which will be clipping.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex}{p.}{group__path_ga420531dae755417305bb4092659bab53}, \doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex\+\_\+count}{p.}{group__path_ga5f38d7b21720e6ce0d233eccf352d8e0} +\end{DoxySeeAlso} +\mbox{\label{group__path_gaf026a4a1760f350873c1a8a9e3a7e8f2}} +\index{Path@{Path}!ps\_path\_contains@{ps\_path\_contains}} +\index{ps\_path\_contains@{ps\_path\_contains}!Path@{Path}} +\doxysubsubsection{ps\_path\_contains()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+path\+\_\+contains (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{point, }\item[{\textbf{ ps\+\_\+fill\+\_\+rule}}]{rule }\end{DoxyParamCaption})} + + + +Check whether a point is contained in the path by fill method. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em point} & The point to be checked. \\ +\hline +{\em rule} & The filling rule for the path.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if the point is contained, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex\+\_\+count}{p.}{group__path_ga5f38d7b21720e6ce0d233eccf352d8e0}, \doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex}{p.}{group__path_ga420531dae755417305bb4092659bab53}, \doxyref{ps\+\_\+path\+\_\+bounding\+\_\+rect}{p.}{group__path_gad73761a49225721353dbf33ddac8f09b}, \doxyref{ps\+\_\+path\+\_\+stroke\+\_\+contains}{p.}{group__path_gaca11c82acc68f1a5cdf886727b3f50d9} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga1f455e0614bbd5c99aa5bdb9b57b53cc}} +\index{Path@{Path}!ps\_path\_create@{ps\_path\_create}} +\index{ps\_path\_create@{ps\_path\_create}!Path@{Path}} +\doxysubsubsection{ps\_path\_create()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+path} $\ast$ ps\+\_\+path\+\_\+create (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + + + +Create a new empty path object. + +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new path object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+create\+\_\+copy}{p.}{group__path_ga5e21c22823d578d76d8dd4d4ab9e8907}, \doxyref{ps\+\_\+path\+\_\+ref}{p.}{group__path_ga09741627ed2d69456d3ab2300f45d82b}, \doxyref{ps\+\_\+path\+\_\+unref}{p.}{group__path_gac4035cc40b4c9883947cf4430fd99521} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga5e21c22823d578d76d8dd4d4ab9e8907}} +\index{Path@{Path}!ps\_path\_create\_copy@{ps\_path\_create\_copy}} +\index{ps\_path\_create\_copy@{ps\_path\_create\_copy}!Path@{Path}} +\doxysubsubsection{ps\_path\_create\_copy()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+path} $\ast$ ps\+\_\+path\+\_\+create\+\_\+copy (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Create a copy from an existing path object. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new path object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+create}{p.}{group__path_ga1f455e0614bbd5c99aa5bdb9b57b53cc}, \doxyref{ps\+\_\+path\+\_\+ref}{p.}{group__path_ga09741627ed2d69456d3ab2300f45d82b}, \doxyref{ps\+\_\+path\+\_\+unref}{p.}{group__path_gac4035cc40b4c9883947cf4430fd99521} +\end{DoxySeeAlso} +\mbox{\label{group__path_gaa8a887153c3eb81649a7a67410329aea}} +\index{Path@{Path}!ps\_path\_get\_length@{ps\_path\_get\_length}} +\index{ps\_path\_get\_length@{ps\_path\_get\_length}!Path@{Path}} +\doxysubsubsection{ps\_path\_get\_length()} +{\footnotesize\ttfamily float ps\+\_\+path\+\_\+get\+\_\+length (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Return The length of the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the length of the path object. If the function fails, the return value is 0. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+sub\+\_\+close}{p.}{group__path_gac19ea77b0228e57be93ebc43e7ed2fad}, \doxyref{ps\+\_\+path\+\_\+clear}{p.}{group__path_ga2966ad40d07c9f5f52f2dc6516107115}, \doxyref{ps\+\_\+path\+\_\+is\+\_\+empty}{p.}{group__path_ga0640542247094b43cdde639ded93e85e} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga420531dae755417305bb4092659bab53}} +\index{Path@{Path}!ps\_path\_get\_vertex@{ps\_path\_get\_vertex}} +\index{ps\_path\_get\_vertex@{ps\_path\_get\_vertex}!Path@{Path}} +\doxysubsubsection{ps\_path\_get\_vertex()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+path\+\_\+cmd} ps\+\_\+path\+\_\+get\+\_\+vertex (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{unsigned int}]{index, }\item[{\textbf{ ps\+\_\+point} $\ast$}]{point }\end{DoxyParamCaption})} + + + +Get a vertex from the path by index, and return the vertex command. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em index} & The index of the vertex. \\ +\hline +{\em point} & Pointer to a structure to receiving the vertex.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the command of the vertex. If the function fails, the return value is P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+S\+T\+OP. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex\+\_\+count}{p.}{group__path_ga5f38d7b21720e6ce0d233eccf352d8e0}, \doxyref{ps\+\_\+path\+\_\+bounding\+\_\+rect}{p.}{group__path_gad73761a49225721353dbf33ddac8f09b}, \doxyref{ps\+\_\+path\+\_\+contains}{p.}{group__path_gaf026a4a1760f350873c1a8a9e3a7e8f2}, \doxyref{ps\+\_\+path\+\_\+stroke\+\_\+contains}{p.}{group__path_gaca11c82acc68f1a5cdf886727b3f50d9} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga5f38d7b21720e6ce0d233eccf352d8e0}} +\index{Path@{Path}!ps\_path\_get\_vertex\_count@{ps\_path\_get\_vertex\_count}} +\index{ps\_path\_get\_vertex\_count@{ps\_path\_get\_vertex\_count}!Path@{Path}} +\doxysubsubsection{ps\_path\_get\_vertex\_count()} +{\footnotesize\ttfamily unsigned int ps\+\_\+path\+\_\+get\+\_\+vertex\+\_\+count (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Return the count of vertices in the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the vertices count in the path object. If the function fails, the return value is 0. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex}{p.}{group__path_ga420531dae755417305bb4092659bab53}, \doxyref{ps\+\_\+path\+\_\+bounding\+\_\+rect}{p.}{group__path_gad73761a49225721353dbf33ddac8f09b}, \doxyref{ps\+\_\+path\+\_\+contains}{p.}{group__path_gaf026a4a1760f350873c1a8a9e3a7e8f2}, \doxyref{ps\+\_\+path\+\_\+stroke\+\_\+contains}{p.}{group__path_gaca11c82acc68f1a5cdf886727b3f50d9} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga0640542247094b43cdde639ded93e85e}} +\index{Path@{Path}!ps\_path\_is\_empty@{ps\_path\_is\_empty}} +\index{ps\_path\_is\_empty@{ps\_path\_is\_empty}!Path@{Path}} +\doxysubsubsection{ps\_path\_is\_empty()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+path\+\_\+is\+\_\+empty (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Checks whether the path is empty. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+sub\+\_\+close}{p.}{group__path_gac19ea77b0228e57be93ebc43e7ed2fad}, \doxyref{ps\+\_\+path\+\_\+get\+\_\+length}{p.}{group__path_gaa8a887153c3eb81649a7a67410329aea}, \doxyref{ps\+\_\+path\+\_\+clear}{p.}{group__path_ga2966ad40d07c9f5f52f2dc6516107115} +\end{DoxySeeAlso} +\mbox{\label{group__path_gaf84c699925f5d8d27a80c1edfb0f5563}} +\index{Path@{Path}!ps\_path\_line\_to@{ps\_path\_line\_to}} +\index{ps\_path\_line\_to@{ps\_path\_line\_to}!Path@{Path}} +\doxysubsubsection{ps\_path\_line\_to()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+line\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{point }\end{DoxyParamCaption})} + + + +Add a line to the path from the current point to given point. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em point} & The point which will be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+move\+\_\+to}{p.}{group__path_ga954a589403b65e3f801bec4df75aa8d7}, \doxyref{ps\+\_\+path\+\_\+bezier\+\_\+to}{p.}{group__path_ga654d584f8ba6d3b176e8ae79b0b3d66d}, \doxyref{ps\+\_\+path\+\_\+quad\+\_\+to}{p.}{group__path_ga1f39765e67617217af9716957a2384cb} \doxyref{ps\+\_\+path\+\_\+arc\+\_\+to}{p.}{group__path_gaa70c71f36ee733b655730e9c9281d2de}, \doxyref{ps\+\_\+path\+\_\+tangent\+\_\+arc\+\_\+to}{p.}{group__path_gaed6543961c56b224c8e55eb67a9c307d} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga954a589403b65e3f801bec4df75aa8d7}} +\index{Path@{Path}!ps\_path\_move\_to@{ps\_path\_move\_to}} +\index{ps\_path\_move\_to@{ps\_path\_move\_to}!Path@{Path}} +\doxysubsubsection{ps\_path\_move\_to()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+move\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{point }\end{DoxyParamCaption})} + + + +Begin a new sub path, and set the current point in the path. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em point} & The point which will be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+line\+\_\+to}{p.}{group__path_gaf84c699925f5d8d27a80c1edfb0f5563}, \doxyref{ps\+\_\+path\+\_\+bezier\+\_\+to}{p.}{group__path_ga654d584f8ba6d3b176e8ae79b0b3d66d}, \doxyref{ps\+\_\+path\+\_\+quad\+\_\+to}{p.}{group__path_ga1f39765e67617217af9716957a2384cb} \doxyref{ps\+\_\+path\+\_\+arc\+\_\+to}{p.}{group__path_gaa70c71f36ee733b655730e9c9281d2de}, \doxyref{ps\+\_\+path\+\_\+tangent\+\_\+arc\+\_\+to}{p.}{group__path_gaed6543961c56b224c8e55eb67a9c307d} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga1f39765e67617217af9716957a2384cb}} +\index{Path@{Path}!ps\_path\_quad\_to@{ps\_path\_quad\_to}} +\index{ps\_path\_quad\_to@{ps\_path\_quad\_to}!Path@{Path}} +\doxysubsubsection{ps\_path\_quad\_to()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+quad\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{cp, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{ep }\end{DoxyParamCaption})} + + + +Add a quadratic bezier spline to the path from current point to end point. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em cp} & The control point of the curve. \\ +\hline +{\em ep} & The end point of the curve.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+move\+\_\+to}{p.}{group__path_ga954a589403b65e3f801bec4df75aa8d7}, \doxyref{ps\+\_\+path\+\_\+arc\+\_\+to}{p.}{group__path_gaa70c71f36ee733b655730e9c9281d2de}, \doxyref{ps\+\_\+path\+\_\+bezier\+\_\+to}{p.}{group__path_ga654d584f8ba6d3b176e8ae79b0b3d66d} \doxyref{ps\+\_\+path\+\_\+tangent\+\_\+arc\+\_\+to}{p.}{group__path_gaed6543961c56b224c8e55eb67a9c307d}, \doxyref{ps\+\_\+path\+\_\+line\+\_\+to}{p.}{group__path_gaf84c699925f5d8d27a80c1edfb0f5563} +\end{DoxySeeAlso} +\mbox{\label{group__path_ga09741627ed2d69456d3ab2300f45d82b}} +\index{Path@{Path}!ps\_path\_ref@{ps\_path\_ref}} +\index{ps\_path\_ref@{ps\_path\_ref}!Path@{Path}} +\doxysubsubsection{ps\_path\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+path} $\ast$ ps\+\_\+path\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Increases the reference count of the path by 1. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the path object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+create}{p.}{group__path_ga1f455e0614bbd5c99aa5bdb9b57b53cc}, \doxyref{ps\+\_\+path\+\_\+create\+\_\+copy}{p.}{group__path_ga5e21c22823d578d76d8dd4d4ab9e8907}, \doxyref{ps\+\_\+path\+\_\+unref}{p.}{group__path_gac4035cc40b4c9883947cf4430fd99521} +\end{DoxySeeAlso} +\mbox{\label{group__path_gaca11c82acc68f1a5cdf886727b3f50d9}} +\index{Path@{Path}!ps\_path\_stroke\_contains@{ps\_path\_stroke\_contains}} +\index{ps\_path\_stroke\_contains@{ps\_path\_stroke\_contains}!Path@{Path}} +\doxysubsubsection{ps\_path\_stroke\_contains()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+path\+\_\+stroke\+\_\+contains (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{point, }\item[{float}]{width }\end{DoxyParamCaption})} + + + +Check whether a point is contained in the path by stroke method. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em point} & The point to be checked. \\ +\hline +{\em width} & The line width to use, in pixels, must be greater than 0.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if the point is contained, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex\+\_\+count}{p.}{group__path_ga5f38d7b21720e6ce0d233eccf352d8e0}, \doxyref{ps\+\_\+path\+\_\+get\+\_\+vertex}{p.}{group__path_ga420531dae755417305bb4092659bab53}, \doxyref{ps\+\_\+path\+\_\+bounding\+\_\+rect}{p.}{group__path_gad73761a49225721353dbf33ddac8f09b}, \doxyref{ps\+\_\+path\+\_\+contains}{p.}{group__path_gaf026a4a1760f350873c1a8a9e3a7e8f2} +\end{DoxySeeAlso} +\mbox{\label{group__path_gac19ea77b0228e57be93ebc43e7ed2fad}} +\index{Path@{Path}!ps\_path\_sub\_close@{ps\_path\_sub\_close}} +\index{ps\_path\_sub\_close@{ps\_path\_sub\_close}!Path@{Path}} +\doxysubsubsection{ps\_path\_sub\_close()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+sub\+\_\+close (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Close the sub path, and begin a new one. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+get\+\_\+length}{p.}{group__path_gaa8a887153c3eb81649a7a67410329aea}, \doxyref{ps\+\_\+path\+\_\+clear}{p.}{group__path_ga2966ad40d07c9f5f52f2dc6516107115}, \doxyref{ps\+\_\+path\+\_\+is\+\_\+empty}{p.}{group__path_ga0640542247094b43cdde639ded93e85e} +\end{DoxySeeAlso} +\mbox{\label{group__path_gaed6543961c56b224c8e55eb67a9c307d}} +\index{Path@{Path}!ps\_path\_tangent\_arc\_to@{ps\_path\_tangent\_arc\_to}} +\index{ps\_path\_tangent\_arc\_to@{ps\_path\_tangent\_arc\_to}!Path@{Path}} +\doxysubsubsection{ps\_path\_tangent\_arc\_to()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+tangent\+\_\+arc\+\_\+to (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path, }\item[{float}]{radius, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{tp, }\item[{const \textbf{ ps\+\_\+point} $\ast$}]{ep }\end{DoxyParamCaption})} + + + +Add an arc to the path which tangent at two line. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object. \\ +\hline +{\em radius} & The radius of the arc. \\ +\hline +{\em tp} & The point which the first tangent line from current point to. \\ +\hline +{\em ep} & The point which the second tangent line from {\itshape tp} to.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+move\+\_\+to}{p.}{group__path_ga954a589403b65e3f801bec4df75aa8d7}, \doxyref{ps\+\_\+path\+\_\+bezier\+\_\+to}{p.}{group__path_ga654d584f8ba6d3b176e8ae79b0b3d66d}, \doxyref{ps\+\_\+path\+\_\+quad\+\_\+to}{p.}{group__path_ga1f39765e67617217af9716957a2384cb} \doxyref{ps\+\_\+path\+\_\+arc\+\_\+to}{p.}{group__path_gaa70c71f36ee733b655730e9c9281d2de}, \doxyref{ps\+\_\+path\+\_\+line\+\_\+to}{p.}{group__path_gaf84c699925f5d8d27a80c1edfb0f5563} +\end{DoxySeeAlso} +\mbox{\label{group__path_gac4035cc40b4c9883947cf4430fd99521}} +\index{Path@{Path}!ps\_path\_unref@{ps\_path\_unref}} +\index{ps\_path\_unref@{ps\_path\_unref}!Path@{Path}} +\doxysubsubsection{ps\_path\_unref()} +{\footnotesize\ttfamily void ps\+\_\+path\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Decrements the reference count for the path object. If the reference count on the path falls to 0, the path is freed. + + +\begin{DoxyParams}{Parameters} +{\em path} & Pointer to an existing path object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+path\+\_\+create}{p.}{group__path_ga1f455e0614bbd5c99aa5bdb9b57b53cc}, \doxyref{ps\+\_\+path\+\_\+create\+\_\+copy}{p.}{group__path_ga5e21c22823d578d76d8dd4d4ab9e8907}, \doxyref{ps\+\_\+path\+\_\+ref}{p.}{group__path_ga09741627ed2d69456d3ab2300f45d82b} +\end{DoxySeeAlso} diff --git a/doc/latex/group__pattern.tex b/doc/latex/group__pattern.tex new file mode 100644 index 0000000..59721df --- /dev/null +++ b/doc/latex/group__pattern.tex @@ -0,0 +1,151 @@ +\doxysection{Pattern} +\label{group__pattern}\index{Pattern@{Pattern}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__pattern_gacfdf5c50e09ee1aef9694e78fbde961b}} +typedef enum \textbf{ \+\_\+ps\+\_\+wrap\+\_\+type} \textbf{ ps\+\_\+wrap\+\_\+type} +\begin{DoxyCompactList}\small\item\em Fill type of pattern. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+wrap\+\_\+type} \{ \textbf{ W\+R\+A\+P\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+P\+E\+AT}, +\textbf{ W\+R\+A\+P\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+F\+L\+E\+CT} + \} +\begin{DoxyCompactList}\small\item\em Fill type of pattern. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+pattern} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+pattern\+\_\+create\+\_\+image} (const \textbf{ ps\+\_\+image} $\ast$img, \textbf{ ps\+\_\+wrap\+\_\+type} x\+\_\+wrap, \textbf{ ps\+\_\+wrap\+\_\+type} y\+\_\+wrap, const \textbf{ ps\+\_\+matrix} $\ast$transform) +\begin{DoxyCompactList}\small\item\em Create a new pattern with an existing image. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+pattern\+\_\+transform} (\textbf{ ps\+\_\+pattern} $\ast$pattern, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Transform the pattern object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+pattern} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+pattern\+\_\+ref} (\textbf{ ps\+\_\+pattern} $\ast$pattern) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the pattern by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+pattern\+\_\+unref} (\textbf{ ps\+\_\+pattern} $\ast$pattern) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the pattern object. If the reference count on the pattern falls to 0, the pattern is freed. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__pattern_gafdbe8821163a2902b7fa19558a01efef}} +\index{Pattern@{Pattern}!\_ps\_wrap\_type@{\_ps\_wrap\_type}} +\index{\_ps\_wrap\_type@{\_ps\_wrap\_type}!Pattern@{Pattern}} +\doxysubsubsection{\_ps\_wrap\_type} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+wrap\+\_\+type}} + + + +Fill type of pattern. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{WRAP\_TYPE\_REPEAT@{WRAP\_TYPE\_REPEAT}!Pattern@{Pattern}}\index{Pattern@{Pattern}!WRAP\_TYPE\_REPEAT@{WRAP\_TYPE\_REPEAT}}}\mbox{\label{group__pattern_ggafdbe8821163a2902b7fa19558a01efefa33a3825c4a4bedf87e8043ba0769fdb5}} +W\+R\+A\+P\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+P\+E\+AT&Wrap repeat, the pattern is repeated. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{WRAP\_TYPE\_REFLECT@{WRAP\_TYPE\_REFLECT}!Pattern@{Pattern}}\index{Pattern@{Pattern}!WRAP\_TYPE\_REFLECT@{WRAP\_TYPE\_REFLECT}}}\mbox{\label{group__pattern_ggafdbe8821163a2902b7fa19558a01efefaa6a5ad01dde236ba1847d1af2e3cb6cd}} +W\+R\+A\+P\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+F\+L\+E\+CT&Wrap reflect the pattern is reflected. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 864 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__pattern_ga39be185ceee870d24cc2b95e2e2dc553}} +\index{Pattern@{Pattern}!ps\_pattern\_create\_image@{ps\_pattern\_create\_image}} +\index{ps\_pattern\_create\_image@{ps\_pattern\_create\_image}!Pattern@{Pattern}} +\doxysubsubsection{ps\_pattern\_create\_image()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+pattern} $\ast$ ps\+\_\+pattern\+\_\+create\+\_\+image (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+image} $\ast$}]{img, }\item[{\textbf{ ps\+\_\+wrap\+\_\+type}}]{x\+\_\+wrap, }\item[{\textbf{ ps\+\_\+wrap\+\_\+type}}]{y\+\_\+wrap, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{transform }\end{DoxyParamCaption})} + + + +Create a new pattern with an existing image. + + +\begin{DoxyParams}{Parameters} +{\em img} & An existing image object which will be a tiled of pattern object. \\ +\hline +{\em x\+\_\+wrap} & The horizontal wrap type, of the required pattern. \\ +\hline +{\em y\+\_\+wrap} & The vertical wrap type, of the required pattern. \\ +\hline +{\em transform} & A matrix that represents a transform for every tiled. If no transform needed, pass N\+U\+LL.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to a new pattern object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+pattern\+\_\+ref}{p.}{group__pattern_ga288ba7739d222010cd45146b64e79306}, \doxyref{ps\+\_\+pattern\+\_\+unref}{p.}{group__pattern_gabbc7857ee6f53b0d47f9321c8c4a4351} +\end{DoxySeeAlso} +\mbox{\label{group__pattern_ga288ba7739d222010cd45146b64e79306}} +\index{Pattern@{Pattern}!ps\_pattern\_ref@{ps\_pattern\_ref}} +\index{ps\_pattern\_ref@{ps\_pattern\_ref}!Pattern@{Pattern}} +\doxysubsubsection{ps\_pattern\_ref()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+pattern} $\ast$ ps\+\_\+pattern\+\_\+ref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+pattern} $\ast$}]{pattern }\end{DoxyParamCaption})} + + + +Increases the reference count of the pattern by 1. + + +\begin{DoxyParams}{Parameters} +{\em pattern} & Pointer to an existing pattern object.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the pointer to the pattern object. If the function fails, the return value is N\+U\+LL. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+pattern\+\_\+create\+\_\+image}{p.}{group__pattern_ga39be185ceee870d24cc2b95e2e2dc553}, \doxyref{ps\+\_\+pattern\+\_\+unref}{p.}{group__pattern_gabbc7857ee6f53b0d47f9321c8c4a4351} +\end{DoxySeeAlso} +\mbox{\label{group__pattern_ga98f3f55017d3fffd9c1e030bbcacc5e8}} +\index{Pattern@{Pattern}!ps\_pattern\_transform@{ps\_pattern\_transform}} +\index{ps\_pattern\_transform@{ps\_pattern\_transform}!Pattern@{Pattern}} +\doxysubsubsection{ps\_pattern\_transform()} +{\footnotesize\ttfamily void ps\+\_\+pattern\+\_\+transform (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+pattern} $\ast$}]{pattern, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Transform the pattern object. + + +\begin{DoxyParams}{Parameters} +{\em pattern} & Pointer to an existing pattern object. \\ +\hline +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+pattern\+\_\+create\+\_\+image}{p.}{group__pattern_ga39be185ceee870d24cc2b95e2e2dc553}, \doxyref{ps\+\_\+pattern\+\_\+ref}{p.}{group__pattern_ga288ba7739d222010cd45146b64e79306}, \doxyref{ps\+\_\+pattern\+\_\+unref}{p.}{group__pattern_gabbc7857ee6f53b0d47f9321c8c4a4351} +\end{DoxySeeAlso} +\mbox{\label{group__pattern_gabbc7857ee6f53b0d47f9321c8c4a4351}} +\index{Pattern@{Pattern}!ps\_pattern\_unref@{ps\_pattern\_unref}} +\index{ps\_pattern\_unref@{ps\_pattern\_unref}!Pattern@{Pattern}} +\doxysubsubsection{ps\_pattern\_unref()} +{\footnotesize\ttfamily void ps\+\_\+pattern\+\_\+unref (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+pattern} $\ast$}]{pattern }\end{DoxyParamCaption})} + + + +Decrements the reference count for the pattern object. If the reference count on the pattern falls to 0, the pattern is freed. + + +\begin{DoxyParams}{Parameters} +{\em pattern} & Pointer to an existing pattern object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+pattern\+\_\+create\+\_\+image}{p.}{group__pattern_ga39be185ceee870d24cc2b95e2e2dc553}, \doxyref{ps\+\_\+pattern\+\_\+ref}{p.}{group__pattern_ga288ba7739d222010cd45146b64e79306} +\end{DoxySeeAlso} diff --git a/doc/latex/group__shadow.tex b/doc/latex/group__shadow.tex new file mode 100644 index 0000000..e46c7d7 --- /dev/null +++ b/doc/latex/group__shadow.tex @@ -0,0 +1,79 @@ +\doxysection{Shadow} +\label{group__shadow}\index{Shadow@{Shadow}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+shadow} (\textbf{ ps\+\_\+context} $\ast$ctx, float x\+\_\+offset, float y\+\_\+offset, float blur) +\begin{DoxyCompactList}\small\item\em Enables shadowing in a context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+shadow\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set the color of shadow. Default is a black color with 1/3 alpha. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+reset\+\_\+shadow} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Disables shadowing in a context. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__shadow_ga41b33a18f9daaafc4359ebc6875af5ea}} +\index{Shadow@{Shadow}!ps\_reset\_shadow@{ps\_reset\_shadow}} +\index{ps\_reset\_shadow@{ps\_reset\_shadow}!Shadow@{Shadow}} +\doxysubsubsection{ps\_reset\_shadow()} +{\footnotesize\ttfamily void ps\+\_\+reset\+\_\+shadow (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Disables shadowing in a context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+shadow\+\_\+color}{p.}{group__shadow_ga475d69bb4ab0a3d28e15b994b9cefb2f}, \doxyref{ps\+\_\+set\+\_\+shadow}{p.}{group__shadow_ga6c83e2dd73888bea4f478ea8af2e5df9} +\end{DoxySeeAlso} +\mbox{\label{group__shadow_ga6c83e2dd73888bea4f478ea8af2e5df9}} +\index{Shadow@{Shadow}!ps\_set\_shadow@{ps\_set\_shadow}} +\index{ps\_set\_shadow@{ps\_set\_shadow}!Shadow@{Shadow}} +\doxysubsubsection{ps\_set\_shadow()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+shadow (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{x\+\_\+offset, }\item[{float}]{y\+\_\+offset, }\item[{float}]{blur }\end{DoxyParamCaption})} + + + +Enables shadowing in a context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em x\+\_\+offset} & Offset on horizontal from origin (0,0). \\ +\hline +{\em y\+\_\+offset} & Offset on vertical from origin (0,0). \\ +\hline +{\em blur} & Specifying the amount of blur (0 $\sim$ 1).\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+shadow\+\_\+color}{p.}{group__shadow_ga475d69bb4ab0a3d28e15b994b9cefb2f}, \doxyref{ps\+\_\+reset\+\_\+shadow}{p.}{group__shadow_ga41b33a18f9daaafc4359ebc6875af5ea} +\end{DoxySeeAlso} +\mbox{\label{group__shadow_ga475d69bb4ab0a3d28e15b994b9cefb2f}} +\index{Shadow@{Shadow}!ps\_set\_shadow\_color@{ps\_set\_shadow\_color}} +\index{ps\_set\_shadow\_color@{ps\_set\_shadow\_color}!Shadow@{Shadow}} +\doxysubsubsection{ps\_set\_shadow\_color()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+shadow\+\_\+color (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+color} $\ast$}]{color }\end{DoxyParamCaption})} + + + +Set the color of shadow. Default is a black color with 1/3 alpha. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em color} & Specifies the color of the shadow.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+shadow}{p.}{group__shadow_ga6c83e2dd73888bea4f478ea8af2e5df9}, \doxyref{ps\+\_\+reset\+\_\+shadow}{p.}{group__shadow_ga41b33a18f9daaafc4359ebc6875af5ea} +\end{DoxySeeAlso} diff --git a/doc/latex/group__state.tex b/doc/latex/group__state.tex new file mode 100644 index 0000000..3b5860b --- /dev/null +++ b/doc/latex/group__state.tex @@ -0,0 +1,72 @@ +\doxysection{State} +\label{group__state}\index{State@{State}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+save} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Pushes a copy of the current graphics state on to stack for context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+restore} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Set the current graphics state to the state most recently saved. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__state_gaf3b7528409d5bd0fc83b6609adea1d1a}} +\index{State@{State}!ps\_restore@{ps\_restore}} +\index{ps\_restore@{ps\_restore}!State@{State}} +\doxysubsubsection{ps\_restore()} +{\footnotesize\ttfamily void ps\+\_\+restore (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Set the current graphics state to the state most recently saved. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+save}{p.}{group__state_gaf1ad684e2ab0ec406357af6900d10854} +\end{DoxySeeAlso} +\mbox{\label{group__state_gaf1ad684e2ab0ec406357af6900d10854}} +\index{State@{State}!ps\_save@{ps\_save}} +\index{ps\_save@{ps\_save}!State@{State}} +\doxysubsubsection{ps\_save()} +{\footnotesize\ttfamily void ps\+\_\+save (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Pushes a copy of the current graphics state on to stack for context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. The graphics state saved are\+: +\begin{DoxyItemize} +\item Image filter +\item Font object +\item Gamma value +\item Alpha value +\item Blur value +\item Text stroke color +\item Text fill color +\item Compositing method +\item Transform matrix +\item Line width +\item Line cap +\item Line join +\item Line dash +\item Stroke object +\item Source object +\item Fill color +\item Fill rule +\item Clip region +\item Shadow parameters +\end{DoxyItemize}\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+restore}{p.}{group__state_gaf3b7528409d5bd0fc83b6609adea1d1a} +\end{DoxySeeAlso} diff --git a/doc/latex/group__stroke.tex b/doc/latex/group__stroke.tex new file mode 100644 index 0000000..37eee75 --- /dev/null +++ b/doc/latex/group__stroke.tex @@ -0,0 +1,423 @@ +\doxysection{Stroke} +\label{group__stroke}\index{Stroke@{Stroke}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__stroke_ga1c0d5411b21fcd5d49964059183f07cb}} +typedef enum \textbf{ \+\_\+ps\+\_\+line\+\_\+cap} \textbf{ ps\+\_\+line\+\_\+cap} +\begin{DoxyCompactList}\small\item\em Styles for rendering the endpoint of a stroked line. \end{DoxyCompactList}\item +\mbox{\label{group__stroke_gadb58833800fc62f3da63618554f29ab3}} +typedef enum \textbf{ \+\_\+ps\+\_\+line\+\_\+join} \textbf{ ps\+\_\+line\+\_\+join} +\begin{DoxyCompactList}\small\item\em Junction types for stroked lines. \end{DoxyCompactList}\item +\mbox{\label{group__stroke_ga6fb9e7c25d715510f0274c7fc65d40c3}} +typedef enum \textbf{ \+\_\+ps\+\_\+line\+\_\+inner\+\_\+join} \textbf{ ps\+\_\+line\+\_\+inner\+\_\+join} +\begin{DoxyCompactList}\small\item\em Inner junction types for stroked lines. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+line\+\_\+cap} \{ \textbf{ L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+B\+U\+TT}, +\textbf{ L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+R\+O\+U\+ND}, +\textbf{ L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+S\+Q\+U\+A\+RE} + \} +\begin{DoxyCompactList}\small\item\em Styles for rendering the endpoint of a stroked line. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+line\+\_\+join} \{ \newline +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+ER}, +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+E\+R\+\_\+\+R\+E\+V\+E\+RT}, +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+E\+R\+\_\+\+R\+O\+U\+ND}, +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+R\+O\+U\+ND}, +\newline +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+B\+E\+V\+EL} + \} +\begin{DoxyCompactList}\small\item\em Junction types for stroked lines. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+line\+\_\+inner\+\_\+join} \{ \textbf{ L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+M\+I\+T\+ER}, +\textbf{ L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+B\+E\+V\+EL}, +\textbf{ L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+J\+AG}, +\textbf{ L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+R\+O\+U\+ND} + \} +\begin{DoxyCompactList}\small\item\em Inner junction types for stroked lines. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+cap} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+line\+\_\+cap} line\+\_\+cap) +\begin{DoxyCompactList}\small\item\em Set the style for the endpoint of lines in a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+join} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+line\+\_\+join} line\+\_\+join) +\begin{DoxyCompactList}\small\item\em Set the style for the joins of connected lines in a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+line\+\_\+inner\+\_\+join} line\+\_\+inner\+\_\+join) +\begin{DoxyCompactList}\small\item\em Set the style for the inner joins of connected lines in a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+width} (\textbf{ ps\+\_\+context} $\ast$ctx, float width) +\begin{DoxyCompactList}\small\item\em Set the line width for a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+miter\+\_\+limit} (\textbf{ ps\+\_\+context} $\ast$ctx, float limit) +\begin{DoxyCompactList}\small\item\em Set the miter limit for the joins of connected lines in a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set a color to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+image} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+image} $\ast$image) +\begin{DoxyCompactList}\small\item\em Set a image to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+pattern} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+pattern} $\ast$pattern) +\begin{DoxyCompactList}\small\item\em Set a pattern to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+gradient} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Set a gradient to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+canvas} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Set a canvas to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+dash} (\textbf{ ps\+\_\+context} $\ast$ctx, float start, const float $\ast$dashes, unsigned int num\+\_\+dashes) +\begin{DoxyCompactList}\small\item\em Set the pattern for dashed lines in the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+reset\+\_\+line\+\_\+dash} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Clear the dashs from the context, and set to solid. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__stroke_gad06e1eb6d05a3774d8f937e22946ca21}} +\index{Stroke@{Stroke}!\_ps\_line\_cap@{\_ps\_line\_cap}} +\index{\_ps\_line\_cap@{\_ps\_line\_cap}!Stroke@{Stroke}} +\doxysubsubsection{\_ps\_line\_cap} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+line\+\_\+cap}} + + + +Styles for rendering the endpoint of a stroked line. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_CAP\_BUTT@{LINE\_CAP\_BUTT}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_CAP\_BUTT@{LINE\_CAP\_BUTT}}}\mbox{\label{group__stroke_ggad06e1eb6d05a3774d8f937e22946ca21a8910eb5475ca75588a31eba74a76f4db}} +L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+B\+U\+TT&A line with a squared-\/off end. The line to extend only to the endpoint.(Default) \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_CAP\_ROUND@{LINE\_CAP\_ROUND}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_CAP\_ROUND@{LINE\_CAP\_ROUND}}}\mbox{\label{group__stroke_ggad06e1eb6d05a3774d8f937e22946ca21ae96cdf9710bc89f885e66cc56a6f069f}} +L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+R\+O\+U\+ND&A line with a rounded end. The line to extend beyond the endpoint. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_CAP\_SQUARE@{LINE\_CAP\_SQUARE}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_CAP\_SQUARE@{LINE\_CAP\_SQUARE}}}\mbox{\label{group__stroke_ggad06e1eb6d05a3774d8f937e22946ca21a609139315e4f1e69bd3353960f481bad}} +L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+S\+Q\+U\+A\+RE&A line with a squared-\/off end. The line to extend beyond the endpoint. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1231 of file picasso.\+h. + +\mbox{\label{group__stroke_ga3e82d0c5809ff0fd87c09490c1245db1}} +\index{Stroke@{Stroke}!\_ps\_line\_inner\_join@{\_ps\_line\_inner\_join}} +\index{\_ps\_line\_inner\_join@{\_ps\_line\_inner\_join}!Stroke@{Stroke}} +\doxysubsubsection{\_ps\_line\_inner\_join} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+line\+\_\+inner\+\_\+join}} + + + +Inner junction types for stroked lines. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_INNER\_MITER@{LINE\_INNER\_MITER}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_INNER\_MITER@{LINE\_INNER\_MITER}}}\mbox{\label{group__stroke_gga3e82d0c5809ff0fd87c09490c1245db1a193d472a29f40401f17ba960ba853a26}} +L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+M\+I\+T\+ER&A inner join with a sharp corner.(Default) \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_INNER\_BEVEL@{LINE\_INNER\_BEVEL}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_INNER\_BEVEL@{LINE\_INNER\_BEVEL}}}\mbox{\label{group__stroke_gga3e82d0c5809ff0fd87c09490c1245db1aa069b15b856f5a0c307bd62d8bc82f8a}} +L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+B\+E\+V\+EL&A inner join with a squared-\/off end. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_INNER\_JAG@{LINE\_INNER\_JAG}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_INNER\_JAG@{LINE\_INNER\_JAG}}}\mbox{\label{group__stroke_gga3e82d0c5809ff0fd87c09490c1245db1a70ce45d1e12e9451460504c70c78e215}} +L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+J\+AG&A inner join with a jag end. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_INNER\_ROUND@{LINE\_INNER\_ROUND}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_INNER\_ROUND@{LINE\_INNER\_ROUND}}}\mbox{\label{group__stroke_gga3e82d0c5809ff0fd87c09490c1245db1acf9f45f258b750ebb39cbfb903da1e4f}} +L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+R\+O\+U\+ND&A inner join with a rounded end. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1299 of file picasso.\+h. + +\mbox{\label{group__stroke_gab18ffd06505620c2063013630acb4497}} +\index{Stroke@{Stroke}!\_ps\_line\_join@{\_ps\_line\_join}} +\index{\_ps\_line\_join@{\_ps\_line\_join}!Stroke@{Stroke}} +\doxysubsubsection{\_ps\_line\_join} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+line\+\_\+join}} + + + +Junction types for stroked lines. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_JOIN\_MITER@{LINE\_JOIN\_MITER}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_JOIN\_MITER@{LINE\_JOIN\_MITER}}}\mbox{\label{group__stroke_ggab18ffd06505620c2063013630acb4497a01a1a0463b45ecab78b9dbdaecac8ffa}} +L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+ER&A join with a sharp corner.(Default) \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_JOIN\_MITER\_REVERT@{LINE\_JOIN\_MITER\_REVERT}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_JOIN\_MITER\_REVERT@{LINE\_JOIN\_MITER\_REVERT}}}\mbox{\label{group__stroke_ggab18ffd06505620c2063013630acb4497ab09d0f418528b767fc1fe1db27859158}} +L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+E\+R\+\_\+\+R\+E\+V\+E\+RT&A join with a sharp corner revert. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_JOIN\_MITER\_ROUND@{LINE\_JOIN\_MITER\_ROUND}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_JOIN\_MITER\_ROUND@{LINE\_JOIN\_MITER\_ROUND}}}\mbox{\label{group__stroke_ggab18ffd06505620c2063013630acb4497a3c27fd4871a8faef3a187a01b53b3764}} +L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+E\+R\+\_\+\+R\+O\+U\+ND&A join with a miter rounded end. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_JOIN\_ROUND@{LINE\_JOIN\_ROUND}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_JOIN\_ROUND@{LINE\_JOIN\_ROUND}}}\mbox{\label{group__stroke_ggab18ffd06505620c2063013630acb4497aeddde88638157f20507d690e544d3a64}} +L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+R\+O\+U\+ND&A join with a rounded end. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{LINE\_JOIN\_BEVEL@{LINE\_JOIN\_BEVEL}!Stroke@{Stroke}}\index{Stroke@{Stroke}!LINE\_JOIN\_BEVEL@{LINE\_JOIN\_BEVEL}}}\mbox{\label{group__stroke_ggab18ffd06505620c2063013630acb4497acc86470d4d8002843ded335755e9dda2}} +L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+B\+E\+V\+EL&A join with a squared-\/off end. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1261 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}} +\index{Stroke@{Stroke}!ps\_reset\_line\_dash@{ps\_reset\_line\_dash}} +\index{ps\_reset\_line\_dash@{ps\_reset\_line\_dash}!Stroke@{Stroke}} +\doxysubsubsection{ps\_reset\_line\_dash()} +{\footnotesize\ttfamily void ps\+\_\+reset\+\_\+line\+\_\+dash (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Clear the dashs from the context, and set to solid. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}} +\index{Stroke@{Stroke}!ps\_set\_line\_cap@{ps\_set\_line\_cap}} +\index{ps\_set\_line\_cap@{ps\_set\_line\_cap}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_line\_cap()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+line\+\_\+cap (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+line\+\_\+cap}}]{line\+\_\+cap }\end{DoxyParamCaption})} + + + +Set the style for the endpoint of lines in a graphics context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em line\+\_\+cap} & The cap style of the lines.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}} +\index{Stroke@{Stroke}!ps\_set\_line\_dash@{ps\_set\_line\_dash}} +\index{ps\_set\_line\_dash@{ps\_set\_line\_dash}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_line\_dash()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+line\+\_\+dash (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{start, }\item[{const float $\ast$}]{dashes, }\item[{unsigned int}]{num\+\_\+dashes }\end{DoxyParamCaption})} + + + +Set the pattern for dashed lines in the context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em start} & A value that specifies how far into the dash pattern the line start. \\ +\hline +{\em dashes} & An array of values that specify the length of the painted segments and unpainted segments. \\ +\hline +{\em num\+\_\+dashes} & The number of elements in the array.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_ga14303807813ac01122f298e5212fb5fc}} +\index{Stroke@{Stroke}!ps\_set\_line\_inner\_join@{ps\_set\_line\_inner\_join}} +\index{ps\_set\_line\_inner\_join@{ps\_set\_line\_inner\_join}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_line\_inner\_join()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+line\+\_\+inner\+\_\+join}}]{line\+\_\+inner\+\_\+join }\end{DoxyParamCaption})} + + + +Set the style for the inner joins of connected lines in a graphics context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em line\+\_\+inner\+\_\+join} & The inner join style of the lines.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}} +\index{Stroke@{Stroke}!ps\_set\_line\_join@{ps\_set\_line\_join}} +\index{ps\_set\_line\_join@{ps\_set\_line\_join}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_line\_join()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+line\+\_\+join (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+line\+\_\+join}}]{line\+\_\+join }\end{DoxyParamCaption})} + + + +Set the style for the joins of connected lines in a graphics context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em line\+\_\+join} & The join style of the lines.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_gaa7c2102304123fab38eb57b68af23440}} +\index{Stroke@{Stroke}!ps\_set\_line\_width@{ps\_set\_line\_width}} +\index{ps\_set\_line\_width@{ps\_set\_line\_width}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_line\_width()} +{\footnotesize\ttfamily float ps\+\_\+set\+\_\+line\+\_\+width (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{width }\end{DoxyParamCaption})} + + + +Set the line width for a graphics context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em width} & The line width to use, in pixels, must be greater than 0. Default value is 1.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the old width. If the function fails, the return value is 0. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_ga83568c0d29c26a834d05c93e48909328}} +\index{Stroke@{Stroke}!ps\_set\_miter\_limit@{ps\_set\_miter\_limit}} +\index{ps\_set\_miter\_limit@{ps\_set\_miter\_limit}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_miter\_limit()} +{\footnotesize\ttfamily float ps\+\_\+set\+\_\+miter\+\_\+limit (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{limit }\end{DoxyParamCaption})} + + + +Set the miter limit for the joins of connected lines in a graphics context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em limit} & The miter limit to use, must be greater than 0. Default value is 4.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +If the function succeeds, the return value is the old miter limit. If the function fails, the return value is 0. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_ga6ddddfdba22f22a1583119e1b150e6fb}} +\index{Stroke@{Stroke}!ps\_set\_stroke\_canvas@{ps\_set\_stroke\_canvas}} +\index{ps\_set\_stroke\_canvas@{ps\_set\_stroke\_canvas}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_stroke\_canvas()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+stroke\+\_\+canvas (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+canvas} $\ast$}]{canvas }\end{DoxyParamCaption})} + + + +Set a canvas to the context, it is used to stroke a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em canvas} & The canvas to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076} \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+image}{p.}{group__stroke_ga0cd821b1abab722e43fda7c48e01bca6}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+pattern}{p.}{group__stroke_ga87c581e0da2e0e66c0e6f3037ba64e40}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+gradient}{p.}{group__stroke_gaeea9b60ea7eabf6ff291a3a7d002770e} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_gacc37293e8d7ceda573a0a3625b169076}} +\index{Stroke@{Stroke}!ps\_set\_stroke\_color@{ps\_set\_stroke\_color}} +\index{ps\_set\_stroke\_color@{ps\_set\_stroke\_color}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_stroke\_color()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+stroke\+\_\+color (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+color} $\ast$}]{color }\end{DoxyParamCaption})} + + + +Set a color to the context, it is used to stroke a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em color} & The color to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+image}{p.}{group__stroke_ga0cd821b1abab722e43fda7c48e01bca6} \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+pattern}{p.}{group__stroke_ga87c581e0da2e0e66c0e6f3037ba64e40}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+gradient}{p.}{group__stroke_gaeea9b60ea7eabf6ff291a3a7d002770e}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+canvas}{p.}{group__stroke_ga6ddddfdba22f22a1583119e1b150e6fb} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_gaeea9b60ea7eabf6ff291a3a7d002770e}} +\index{Stroke@{Stroke}!ps\_set\_stroke\_gradient@{ps\_set\_stroke\_gradient}} +\index{ps\_set\_stroke\_gradient@{ps\_set\_stroke\_gradient}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_stroke\_gradient()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+stroke\+\_\+gradient (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+gradient} $\ast$}]{gradient }\end{DoxyParamCaption})} + + + +Set a gradient to the context, it is used to stroke a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em gradient} & The gradient to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076} \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+image}{p.}{group__stroke_ga0cd821b1abab722e43fda7c48e01bca6}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+pattern}{p.}{group__stroke_ga87c581e0da2e0e66c0e6f3037ba64e40}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+canvas}{p.}{group__stroke_ga6ddddfdba22f22a1583119e1b150e6fb} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_ga0cd821b1abab722e43fda7c48e01bca6}} +\index{Stroke@{Stroke}!ps\_set\_stroke\_image@{ps\_set\_stroke\_image}} +\index{ps\_set\_stroke\_image@{ps\_set\_stroke\_image}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_stroke\_image()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+stroke\+\_\+image (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+image} $\ast$}]{image }\end{DoxyParamCaption})} + + + +Set a image to the context, it is used to stroke a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em image} & The image to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076} \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+pattern}{p.}{group__stroke_ga87c581e0da2e0e66c0e6f3037ba64e40}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+gradient}{p.}{group__stroke_gaeea9b60ea7eabf6ff291a3a7d002770e}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+canvas}{p.}{group__stroke_ga6ddddfdba22f22a1583119e1b150e6fb} +\end{DoxySeeAlso} +\mbox{\label{group__stroke_ga87c581e0da2e0e66c0e6f3037ba64e40}} +\index{Stroke@{Stroke}!ps\_set\_stroke\_pattern@{ps\_set\_stroke\_pattern}} +\index{ps\_set\_stroke\_pattern@{ps\_set\_stroke\_pattern}!Stroke@{Stroke}} +\doxysubsubsection{ps\_set\_stroke\_pattern()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+stroke\+\_\+pattern (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+pattern} $\ast$}]{pattern }\end{DoxyParamCaption})} + + + +Set a pattern to the context, it is used to stroke a graphic object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em pattern} & The pattern to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+line\+\_\+cap}{p.}{group__stroke_gadb1c82ca13abac1c02f09e0e4804b33a}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+join}{p.}{group__stroke_ga502a7abc4f46bbd8ba54b187a9f05220}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+width}{p.}{group__stroke_gaa7c2102304123fab38eb57b68af23440}, \doxyref{ps\+\_\+set\+\_\+miter\+\_\+limit}{p.}{group__stroke_ga83568c0d29c26a834d05c93e48909328}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+dash}{p.}{group__stroke_ga14690c35aae12a4262af1bfb2fbdd96e}, \doxyref{ps\+\_\+reset\+\_\+line\+\_\+dash}{p.}{group__stroke_ga6d9522c011d21ff17a4c5f6e5ef7f914}, \doxyref{ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join}{p.}{group__stroke_ga14303807813ac01122f298e5212fb5fc}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+color}{p.}{group__stroke_gacc37293e8d7ceda573a0a3625b169076} \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+image}{p.}{group__stroke_ga0cd821b1abab722e43fda7c48e01bca6}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+gradient}{p.}{group__stroke_gaeea9b60ea7eabf6ff291a3a7d002770e}, \doxyref{ps\+\_\+set\+\_\+stroke\+\_\+canvas}{p.}{group__stroke_ga6ddddfdba22f22a1583119e1b150e6fb} +\end{DoxySeeAlso} diff --git a/doc/latex/group__text.tex b/doc/latex/group__text.tex new file mode 100644 index 0000000..f109db5 --- /dev/null +++ b/doc/latex/group__text.tex @@ -0,0 +1,522 @@ +\doxysection{Text} +\label{group__text}\index{Text@{Text}} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__text_gaa0ce9699b5df689c3b29adc7f9801305}} +typedef enum \textbf{ \+\_\+ps\+\_\+text\+\_\+type} \textbf{ ps\+\_\+text\+\_\+type} +\begin{DoxyCompactList}\small\item\em Text rendering type. \end{DoxyCompactList}\item +\mbox{\label{group__text_ga40b43dab2c47ceb5785de4a3211776d5}} +typedef enum \textbf{ \+\_\+ps\+\_\+draw\+\_\+text\+\_\+type} \textbf{ ps\+\_\+draw\+\_\+text\+\_\+type} +\begin{DoxyCompactList}\small\item\em Draw mode for rending text. \end{DoxyCompactList}\item +\mbox{\label{group__text_gab55b17eee1e3e00cfb82fa0e98d52fac}} +typedef enum \textbf{ \+\_\+ps\+\_\+text\+\_\+align} \textbf{ ps\+\_\+text\+\_\+align} +\begin{DoxyCompactList}\small\item\em Text align mode for drawing text. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+text\+\_\+type} \{ \textbf{ T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+S\+M\+O\+O\+TH}, +\textbf{ T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+O\+NO}, +\textbf{ T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+S\+T\+R\+O\+KE} + \} +\begin{DoxyCompactList}\small\item\em Text rendering type. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+draw\+\_\+text\+\_\+type} \{ \textbf{ D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+F\+I\+LL}, +\textbf{ D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+S\+T\+R\+O\+KE}, +\textbf{ D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+B\+O\+TH} + \} +\begin{DoxyCompactList}\small\item\em Draw mode for rending text. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+text\+\_\+align} \{ \newline +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+C\+E\+N\+T\+ER} = 0, +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+T\+OP} = 1, +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+B\+O\+T\+T\+OM} = 2, +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+L\+E\+FT} = 4, +\newline +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+R\+I\+G\+HT} = 8 + \} +\begin{DoxyCompactList}\small\item\em Text align mode for drawing text. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+text\+\_\+extent} (\textbf{ ps\+\_\+context} $\ast$ctx, const void $\ast$text, unsigned int length, \textbf{ ps\+\_\+size} $\ast$rsize) +\begin{DoxyCompactList}\small\item\em Get extent for text using current font which selected to graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set the text fill color for the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set the text stroke color for the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+text\+\_\+transform} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Transform text matrix for the graphic context. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+matrix} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Set text matrix for the graphic context. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+text\+\_\+type} type) +\begin{DoxyCompactList}\small\item\em Set rendering type for text. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+antialias} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+bool} antialias) +\begin{DoxyCompactList}\small\item\em Set whether the font allowed be anti-\/aliasing. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+kerning} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+bool} kerning) +\begin{DoxyCompactList}\small\item\em Set whether the font auto kerning is allowed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+text\+\_\+out\+\_\+length} (\textbf{ ps\+\_\+context} $\ast$ctx, float x, float y, const char $\ast$text, unsigned int length) +\begin{DoxyCompactList}\small\item\em Draw single byte characters (latin-\/1) at location in user space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+wide\+\_\+text\+\_\+out\+\_\+length} (\textbf{ ps\+\_\+context} $\ast$ctx, float x, float y, const \textbf{ ps\+\_\+uchar16} $\ast$text, unsigned int length) +\begin{DoxyCompactList}\small\item\em Draw unicode characters (ucs-\/2) at location in user space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+draw\+\_\+text} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$area, const void $\ast$text, unsigned int length, \textbf{ ps\+\_\+draw\+\_\+text\+\_\+type} type, \textbf{ ps\+\_\+text\+\_\+align} align) +\begin{DoxyCompactList}\small\item\em Draw text in a rectangle area, using font object which is selected in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+glyph} (\textbf{ ps\+\_\+context} $\ast$ctx, int ch, \textbf{ ps\+\_\+glyph} $\ast$glyph) +\begin{DoxyCompactList}\small\item\em Get the glyph from a given character, using font object which is selected in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+show\+\_\+glyphs} (\textbf{ ps\+\_\+context} $\ast$ctx, float x, float y, \textbf{ ps\+\_\+glyph} $\ast$glyphs, unsigned int length) +\begin{DoxyCompactList}\small\item\em Draw an array of glyphs at location in user space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+path\+\_\+from\+\_\+glyph} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+glyph} $\ast$glyph, \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Get the path from a given glyph object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+glyph\+\_\+get\+\_\+extent} (const \textbf{ ps\+\_\+glyph} $\ast$glyph, \textbf{ ps\+\_\+size} $\ast$rsize) +\begin{DoxyCompactList}\small\item\em Get extent for a glyph object. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__text_gaf761c220adcef1796c24f81566888987}} +\index{Text@{Text}!\_ps\_draw\_text\_type@{\_ps\_draw\_text\_type}} +\index{\_ps\_draw\_text\_type@{\_ps\_draw\_text\_type}!Text@{Text}} +\doxysubsubsection{\_ps\_draw\_text\_type} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+draw\+\_\+text\+\_\+type}} + + + +Draw mode for rending text. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{DRAW\_TEXT\_FILL@{DRAW\_TEXT\_FILL}!Text@{Text}}\index{Text@{Text}!DRAW\_TEXT\_FILL@{DRAW\_TEXT\_FILL}}}\mbox{\label{group__text_ggaf761c220adcef1796c24f81566888987a8906b7905694eb25236cdb940348ccc7}} +D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+F\+I\+LL&Perform a fill operation on the text. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{DRAW\_TEXT\_STROKE@{DRAW\_TEXT\_STROKE}!Text@{Text}}\index{Text@{Text}!DRAW\_TEXT\_STROKE@{DRAW\_TEXT\_STROKE}}}\mbox{\label{group__text_ggaf761c220adcef1796c24f81566888987a088752030725262182a2588af86ca607}} +D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+S\+T\+R\+O\+KE&Perform a stroke operation on the text. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{DRAW\_TEXT\_BOTH@{DRAW\_TEXT\_BOTH}!Text@{Text}}\index{Text@{Text}!DRAW\_TEXT\_BOTH@{DRAW\_TEXT\_BOTH}}}\mbox{\label{group__text_ggaf761c220adcef1796c24f81566888987a9d50d79300d371c8d34a0f07b68c7ce3}} +D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+B\+O\+TH&Perform fill,then stroke operation on the text. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 2302 of file picasso.\+h. + +\mbox{\label{group__text_gaac566a8c2ea1627be2b9cdaf8b3b39e7}} +\index{Text@{Text}!\_ps\_text\_align@{\_ps\_text\_align}} +\index{\_ps\_text\_align@{\_ps\_text\_align}!Text@{Text}} +\doxysubsubsection{\_ps\_text\_align} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+text\+\_\+align}} + + + +Text align mode for drawing text. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{TEXT\_ALIGN\_CENTER@{TEXT\_ALIGN\_CENTER}!Text@{Text}}\index{Text@{Text}!TEXT\_ALIGN\_CENTER@{TEXT\_ALIGN\_CENTER}}}\mbox{\label{group__text_ggaac566a8c2ea1627be2b9cdaf8b3b39e7a4da3c85cde615e7442df8ef17d0753ba}} +T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+C\+E\+N\+T\+ER&Centers text horizontally in the rectangle. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{TEXT\_ALIGN\_TOP@{TEXT\_ALIGN\_TOP}!Text@{Text}}\index{Text@{Text}!TEXT\_ALIGN\_TOP@{TEXT\_ALIGN\_TOP}}}\mbox{\label{group__text_ggaac566a8c2ea1627be2b9cdaf8b3b39e7a0c5d12ee712ba28edc34f4d1b4a8c458}} +T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+T\+OP&Justifies the text to the top of the rectangle. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{TEXT\_ALIGN\_BOTTOM@{TEXT\_ALIGN\_BOTTOM}!Text@{Text}}\index{Text@{Text}!TEXT\_ALIGN\_BOTTOM@{TEXT\_ALIGN\_BOTTOM}}}\mbox{\label{group__text_ggaac566a8c2ea1627be2b9cdaf8b3b39e7a1cb0e6129b3c5514109b92b4228f6ac8}} +T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+B\+O\+T\+T\+OM&Justifies the text to the bottom of the rectangle. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{TEXT\_ALIGN\_LEFT@{TEXT\_ALIGN\_LEFT}!Text@{Text}}\index{Text@{Text}!TEXT\_ALIGN\_LEFT@{TEXT\_ALIGN\_LEFT}}}\mbox{\label{group__text_ggaac566a8c2ea1627be2b9cdaf8b3b39e7a3b85bc4d8cfda6b273b534eb2e1cebfc}} +T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+L\+E\+FT&Aligns text to left. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{TEXT\_ALIGN\_RIGHT@{TEXT\_ALIGN\_RIGHT}!Text@{Text}}\index{Text@{Text}!TEXT\_ALIGN\_RIGHT@{TEXT\_ALIGN\_RIGHT}}}\mbox{\label{group__text_ggaac566a8c2ea1627be2b9cdaf8b3b39e7abc81ce8623a972fc7b97f497189c494b}} +T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+R\+I\+G\+HT&Aligns text to right. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 2320 of file picasso.\+h. + +\mbox{\label{group__text_gae259beafbac1631008928e8fd20fc423}} +\index{Text@{Text}!\_ps\_text\_type@{\_ps\_text\_type}} +\index{\_ps\_text\_type@{\_ps\_text\_type}!Text@{Text}} +\doxysubsubsection{\_ps\_text\_type} +{\footnotesize\ttfamily enum \textbf{ \+\_\+ps\+\_\+text\+\_\+type}} + + + +Text rendering type. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{TEXT\_TYPE\_SMOOTH@{TEXT\_TYPE\_SMOOTH}!Text@{Text}}\index{Text@{Text}!TEXT\_TYPE\_SMOOTH@{TEXT\_TYPE\_SMOOTH}}}\mbox{\label{group__text_ggae259beafbac1631008928e8fd20fc423a4ef8f14ede4d779f625783c7c9f2680e}} +T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+S\+M\+O\+O\+TH&Smooth rendering. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{TEXT\_TYPE\_MONO@{TEXT\_TYPE\_MONO}!Text@{Text}}\index{Text@{Text}!TEXT\_TYPE\_MONO@{TEXT\_TYPE\_MONO}}}\mbox{\label{group__text_ggae259beafbac1631008928e8fd20fc423a19a723289708d86e998c76a484cc68ec}} +T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+O\+NO&Mono rendering. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{TEXT\_TYPE\_STROKE@{TEXT\_TYPE\_STROKE}!Text@{Text}}\index{Text@{Text}!TEXT\_TYPE\_STROKE@{TEXT\_TYPE\_STROKE}}}\mbox{\label{group__text_ggae259beafbac1631008928e8fd20fc423a610856b2f70f639da20060cd20842a95}} +T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+S\+T\+R\+O\+KE&Out\+Line rendering. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 2150 of file picasso.\+h. + + + +\doxysubsection{Function Documentation} +\mbox{\label{group__text_ga6a0eb97cb87386ce25f1c8f5c95d6027}} +\index{Text@{Text}!ps\_draw\_text@{ps\_draw\_text}} +\index{ps\_draw\_text@{ps\_draw\_text}!Text@{Text}} +\doxysubsubsection{ps\_draw\_text()} +{\footnotesize\ttfamily void ps\+\_\+draw\+\_\+text (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+rect} $\ast$}]{area, }\item[{const void $\ast$}]{text, }\item[{unsigned int}]{length, }\item[{\textbf{ ps\+\_\+draw\+\_\+text\+\_\+type}}]{type, }\item[{\textbf{ ps\+\_\+text\+\_\+align}}]{align }\end{DoxyParamCaption})} + + + +Draw text in a rectangle area, using font object which is selected in graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em area} & The rectangle area which text to be drawn. \\ +\hline +{\em text} & The unicode text string to be draw. \\ +\hline +{\em length} & The length of the text string. \\ +\hline +{\em type} & The rending type of text. \\ +\hline +{\em align} & The text align mode.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+text\+\_\+out\+\_\+length}{p.}{group__text_gae94b0d7c8256fce8e8de5e214666bdec}, \doxyref{ps\+\_\+wide\+\_\+text\+\_\+out\+\_\+length}{p.}{group__text_ga33400352bdb79ff76c25980020bd69cf} +\end{DoxySeeAlso} +\mbox{\label{group__text_gab9da1b7b31c4506634ef682bba172c49}} +\index{Text@{Text}!ps\_get\_glyph@{ps\_get\_glyph}} +\index{ps\_get\_glyph@{ps\_get\_glyph}!Text@{Text}} +\doxysubsubsection{ps\_get\_glyph()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+get\+\_\+glyph (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{int}]{ch, }\item[{\textbf{ ps\+\_\+glyph} $\ast$}]{glyph }\end{DoxyParamCaption})} + + + +Get the glyph from a given character, using font object which is selected in graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em ch} & The character value. \\ +\hline +{\em glyph} & Pointer to a structure to receiving the glyph.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+show\+\_\+glyphs}{p.}{group__text_ga4a7af174d4c6b7b5bf79910d9fee3b32}, \doxyref{ps\+\_\+get\+\_\+path\+\_\+from\+\_\+glyph}{p.}{group__text_gae9ec60c25a891742464c03114fbf2bc7} +\end{DoxySeeAlso} +\mbox{\label{group__text_gae9ec60c25a891742464c03114fbf2bc7}} +\index{Text@{Text}!ps\_get\_path\_from\_glyph@{ps\_get\_path\_from\_glyph}} +\index{ps\_get\_path\_from\_glyph@{ps\_get\_path\_from\_glyph}!Text@{Text}} +\doxysubsubsection{ps\_get\_path\_from\_glyph()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+get\+\_\+path\+\_\+from\+\_\+glyph (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+glyph} $\ast$}]{glyph, }\item[{\textbf{ ps\+\_\+path} $\ast$}]{path }\end{DoxyParamCaption})} + + + +Get the path from a given glyph object. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em glyph} & The glyph object. \\ +\hline +{\em path} & Pointer to a structure to receiving the path.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+show\+\_\+glyphs}{p.}{group__text_ga4a7af174d4c6b7b5bf79910d9fee3b32} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga42ef6b742f45fcf0ac21a71a10843c2b}} +\index{Text@{Text}!ps\_get\_text\_extent@{ps\_get\_text\_extent}} +\index{ps\_get\_text\_extent@{ps\_get\_text\_extent}!Text@{Text}} +\doxysubsubsection{ps\_get\_text\_extent()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+get\+\_\+text\+\_\+extent (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const void $\ast$}]{text, }\item[{unsigned int}]{length, }\item[{\textbf{ ps\+\_\+size} $\ast$}]{rsize }\end{DoxyParamCaption})} + + + +Get extent for text using current font which selected to graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em text} & Text which being tested. It can be latin-\/1 or unicode encoding. \\ +\hline +{\em length} & Length of the text. \\ +\hline +{\em rsize} & Pointer to a buffer to receiving the size.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+glyph\+\_\+get\+\_\+extent}{p.}{group__text_ga2ad0879e402446f412809a4d3ebd49d2} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga2ad0879e402446f412809a4d3ebd49d2}} +\index{Text@{Text}!ps\_glyph\_get\_extent@{ps\_glyph\_get\_extent}} +\index{ps\_glyph\_get\_extent@{ps\_glyph\_get\_extent}!Text@{Text}} +\doxysubsubsection{ps\_glyph\_get\_extent()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+glyph\+\_\+get\+\_\+extent (\begin{DoxyParamCaption}\item[{const \textbf{ ps\+\_\+glyph} $\ast$}]{glyph, }\item[{\textbf{ ps\+\_\+size} $\ast$}]{rsize }\end{DoxyParamCaption})} + + + +Get extent for a glyph object. + + +\begin{DoxyParams}{Parameters} +{\em glyph} & Pointer to an existing glyph object. \\ +\hline +{\em rsize} & Pointer to a buffer to receiving the size.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxyNote}{Note} +To get extended error information, call {\itshape ps\+\_\+last\+\_\+status}. +\end{DoxyNote} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+get\+\_\+text\+\_\+extent}{p.}{group__text_ga42ef6b742f45fcf0ac21a71a10843c2b} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga2578080dcff888eb5d52c669451ba0bf}} +\index{Text@{Text}!ps\_set\_text\_antialias@{ps\_set\_text\_antialias}} +\index{ps\_set\_text\_antialias@{ps\_set\_text\_antialias}!Text@{Text}} +\doxysubsubsection{ps\_set\_text\_antialias()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+text\+\_\+antialias (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+bool}}]{antialias }\end{DoxyParamCaption})} + + + +Set whether the font allowed be anti-\/aliasing. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em antialias} & Boolean value whether anti-\/aliasing is allowed. (True default)\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+text\+\_\+matrix}{p.}{group__text_ga6e193574b5c044ee6430062554693396}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+color}{p.}{group__text_ga09aad6a9aa1b6bdb4d3a54bc0c8d4f27}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color}{p.}{group__text_ga07d2a86f3a5074f756d85ff87a0f0d48}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type}{p.}{group__text_gad087544df03c06e5676771e684e901a9}, \doxyref{ps\+\_\+text\+\_\+transform}{p.}{group__text_ga50f52f55f32dedc0dc0f171298268966}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+kerning}{p.}{group__text_ga854b138c2357034dd34513c49a40c02f} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga09aad6a9aa1b6bdb4d3a54bc0c8d4f27}} +\index{Text@{Text}!ps\_set\_text\_color@{ps\_set\_text\_color}} +\index{ps\_set\_text\_color@{ps\_set\_text\_color}!Text@{Text}} +\doxysubsubsection{ps\_set\_text\_color()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+text\+\_\+color (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+color} $\ast$}]{color }\end{DoxyParamCaption})} + + + +Set the text fill color for the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em color} & The text fill color.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+transform}{p.}{group__transform_ga3c2ad1c918dcd43eb68b42e60a4ff136}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+matrix}{p.}{group__text_ga6e193574b5c044ee6430062554693396}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+antialias}{p.}{group__text_ga2578080dcff888eb5d52c669451ba0bf}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color}{p.}{group__text_ga07d2a86f3a5074f756d85ff87a0f0d48}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type}{p.}{group__text_gad087544df03c06e5676771e684e901a9}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+kerning}{p.}{group__text_ga854b138c2357034dd34513c49a40c02f} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga854b138c2357034dd34513c49a40c02f}} +\index{Text@{Text}!ps\_set\_text\_kerning@{ps\_set\_text\_kerning}} +\index{ps\_set\_text\_kerning@{ps\_set\_text\_kerning}!Text@{Text}} +\doxysubsubsection{ps\_set\_text\_kerning()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+text\+\_\+kerning (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+bool}}]{kerning }\end{DoxyParamCaption})} + + + +Set whether the font auto kerning is allowed. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em kerning} & Boolean value whether auto kerning is allowed. (True default)\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+text\+\_\+matrix}{p.}{group__text_ga6e193574b5c044ee6430062554693396}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+color}{p.}{group__text_ga09aad6a9aa1b6bdb4d3a54bc0c8d4f27}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color}{p.}{group__text_ga07d2a86f3a5074f756d85ff87a0f0d48}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type}{p.}{group__text_gad087544df03c06e5676771e684e901a9}, \doxyref{ps\+\_\+text\+\_\+transform}{p.}{group__text_ga50f52f55f32dedc0dc0f171298268966}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+antialias}{p.}{group__text_ga2578080dcff888eb5d52c669451ba0bf} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga6e193574b5c044ee6430062554693396}} +\index{Text@{Text}!ps\_set\_text\_matrix@{ps\_set\_text\_matrix}} +\index{ps\_set\_text\_matrix@{ps\_set\_text\_matrix}!Text@{Text}} +\doxysubsubsection{ps\_set\_text\_matrix()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+text\+\_\+matrix (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Set text matrix for the graphic context. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+text\+\_\+transform}{p.}{group__text_ga50f52f55f32dedc0dc0f171298268966}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+antialias}{p.}{group__text_ga2578080dcff888eb5d52c669451ba0bf}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+color}{p.}{group__text_ga09aad6a9aa1b6bdb4d3a54bc0c8d4f27}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color}{p.}{group__text_ga07d2a86f3a5074f756d85ff87a0f0d48}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type}{p.}{group__text_gad087544df03c06e5676771e684e901a9}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+kerning}{p.}{group__text_ga854b138c2357034dd34513c49a40c02f} +\end{DoxySeeAlso} +\mbox{\label{group__text_gad087544df03c06e5676771e684e901a9}} +\index{Text@{Text}!ps\_set\_text\_render\_type@{ps\_set\_text\_render\_type}} +\index{ps\_set\_text\_render\_type@{ps\_set\_text\_render\_type}!Text@{Text}} +\doxysubsubsection{ps\_set\_text\_render\_type()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+text\+\_\+type}}]{type }\end{DoxyParamCaption})} + + + +Set rendering type for text. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em type} & Rendering type for the text.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+text\+\_\+matrix}{p.}{group__text_ga6e193574b5c044ee6430062554693396}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+color}{p.}{group__text_ga09aad6a9aa1b6bdb4d3a54bc0c8d4f27}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color}{p.}{group__text_ga07d2a86f3a5074f756d85ff87a0f0d48}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+antialias}{p.}{group__text_ga2578080dcff888eb5d52c669451ba0bf}, \doxyref{ps\+\_\+text\+\_\+transform}{p.}{group__text_ga50f52f55f32dedc0dc0f171298268966}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+kerning}{p.}{group__text_ga854b138c2357034dd34513c49a40c02f} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga07d2a86f3a5074f756d85ff87a0f0d48}} +\index{Text@{Text}!ps\_set\_text\_stroke\_color@{ps\_set\_text\_stroke\_color}} +\index{ps\_set\_text\_stroke\_color@{ps\_set\_text\_stroke\_color}!Text@{Text}} +\doxysubsubsection{ps\_set\_text\_stroke\_color()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+color} $\ast$}]{color }\end{DoxyParamCaption})} + + + +Set the text stroke color for the graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em color} & The text stroke color.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+text\+\_\+color}{p.}{group__text_ga09aad6a9aa1b6bdb4d3a54bc0c8d4f27}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+matrix}{p.}{group__text_ga6e193574b5c044ee6430062554693396}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+antialias}{p.}{group__text_ga2578080dcff888eb5d52c669451ba0bf}, \doxyref{ps\+\_\+text\+\_\+transform}{p.}{group__text_ga50f52f55f32dedc0dc0f171298268966}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type}{p.}{group__text_gad087544df03c06e5676771e684e901a9}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+kerning}{p.}{group__text_ga854b138c2357034dd34513c49a40c02f} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga4a7af174d4c6b7b5bf79910d9fee3b32}} +\index{Text@{Text}!ps\_show\_glyphs@{ps\_show\_glyphs}} +\index{ps\_show\_glyphs@{ps\_show\_glyphs}!Text@{Text}} +\doxysubsubsection{ps\_show\_glyphs()} +{\footnotesize\ttfamily void ps\+\_\+show\+\_\+glyphs (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{x, }\item[{float}]{y, }\item[{\textbf{ ps\+\_\+glyph} $\ast$}]{glyphs, }\item[{unsigned int}]{length }\end{DoxyParamCaption})} + + + +Draw an array of glyphs at location in user space. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em x} & The X-\/coordinate at which to draw the glyphs. \\ +\hline +{\em y} & The Y-\/coordinate at which to draw the glyphs. \\ +\hline +{\em glyphs} & The array of glyphs. \\ +\hline +{\em length} & The length of array.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+get\+\_\+path\+\_\+from\+\_\+glyph}{p.}{group__text_gae9ec60c25a891742464c03114fbf2bc7} +\end{DoxySeeAlso} +\mbox{\label{group__text_gae94b0d7c8256fce8e8de5e214666bdec}} +\index{Text@{Text}!ps\_text\_out\_length@{ps\_text\_out\_length}} +\index{ps\_text\_out\_length@{ps\_text\_out\_length}!Text@{Text}} +\doxysubsubsection{ps\_text\_out\_length()} +{\footnotesize\ttfamily void ps\+\_\+text\+\_\+out\+\_\+length (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{x, }\item[{float}]{y, }\item[{const char $\ast$}]{text, }\item[{unsigned int}]{length }\end{DoxyParamCaption})} + + + +Draw single byte characters (latin-\/1) at location in user space. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em x} & The X-\/coordinate at which to draw the text. \\ +\hline +{\em y} & The Y-\/coordinate at which to draw the text. \\ +\hline +{\em text} & The text string to be draw. \\ +\hline +{\em length} & The length of the text string.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+wide\+\_\+text\+\_\+out\+\_\+length}{p.}{group__text_ga33400352bdb79ff76c25980020bd69cf}, \doxyref{ps\+\_\+draw\+\_\+text}{p.}{group__text_ga6a0eb97cb87386ce25f1c8f5c95d6027} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga50f52f55f32dedc0dc0f171298268966}} +\index{Text@{Text}!ps\_text\_transform@{ps\_text\_transform}} +\index{ps\_text\_transform@{ps\_text\_transform}!Text@{Text}} +\doxysubsubsection{ps\_text\_transform()} +{\footnotesize\ttfamily void ps\+\_\+text\+\_\+transform (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Transform text matrix for the graphic context. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em matrix} & Pointer to an existing matrix object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+text\+\_\+matrix}{p.}{group__text_ga6e193574b5c044ee6430062554693396}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+antialias}{p.}{group__text_ga2578080dcff888eb5d52c669451ba0bf}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+color}{p.}{group__text_ga09aad6a9aa1b6bdb4d3a54bc0c8d4f27}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color}{p.}{group__text_ga07d2a86f3a5074f756d85ff87a0f0d48}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type}{p.}{group__text_gad087544df03c06e5676771e684e901a9}, \doxyref{ps\+\_\+set\+\_\+text\+\_\+kerning}{p.}{group__text_ga854b138c2357034dd34513c49a40c02f} +\end{DoxySeeAlso} +\mbox{\label{group__text_ga33400352bdb79ff76c25980020bd69cf}} +\index{Text@{Text}!ps\_wide\_text\_out\_length@{ps\_wide\_text\_out\_length}} +\index{ps\_wide\_text\_out\_length@{ps\_wide\_text\_out\_length}!Text@{Text}} +\doxysubsubsection{ps\_wide\_text\_out\_length()} +{\footnotesize\ttfamily void ps\+\_\+wide\+\_\+text\+\_\+out\+\_\+length (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{x, }\item[{float}]{y, }\item[{const \textbf{ ps\+\_\+uchar16} $\ast$}]{text, }\item[{unsigned int}]{length }\end{DoxyParamCaption})} + + + +Draw unicode characters (ucs-\/2) at location in user space. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em x} & The X-\/coordinate at which to draw the text. \\ +\hline +{\em y} & The Y-\/coordinate at which to draw the text. \\ +\hline +{\em text} & The unicode text string to be draw. \\ +\hline +{\em length} & The length of the text string.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+text\+\_\+out\+\_\+length}{p.}{group__text_gae94b0d7c8256fce8e8de5e214666bdec}, \doxyref{ps\+\_\+draw\+\_\+text}{p.}{group__text_ga6a0eb97cb87386ce25f1c8f5c95d6027} +\end{DoxySeeAlso} diff --git a/doc/latex/group__transform.tex b/doc/latex/group__transform.tex new file mode 100644 index 0000000..62584ca --- /dev/null +++ b/doc/latex/group__transform.tex @@ -0,0 +1,238 @@ +\doxysection{Transform} +\label{group__transform}\index{Transform@{Transform}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+translate} (\textbf{ ps\+\_\+context} $\ast$ctx, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Changes the origin of the user coordinate system in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+scale} (\textbf{ ps\+\_\+context} $\ast$ctx, float sx, float sy) +\begin{DoxyCompactList}\small\item\em Changes the scale of the user coordinate system in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+shear} (\textbf{ ps\+\_\+context} $\ast$ctx, float shx, float shy) +\begin{DoxyCompactList}\small\item\em Changes the shear of the user coordinate system in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+rotate} (\textbf{ ps\+\_\+context} $\ast$ctx, float angle) +\begin{DoxyCompactList}\small\item\em Rotates the user coordinate system in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+identity} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Reset the current transformation matrix to identity matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+transform} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Transforms the user coordinate system in graphic context using a specified matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+matrix} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Modifies the current transformation matrix to the given matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+matrix} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Get the current transformation matrix from graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+world\+\_\+to\+\_\+viewport} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Transform a coordinate from device space to user space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+viewport\+\_\+to\+\_\+world} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Transform a coordinate from user space to device space. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Function Documentation} +\mbox{\label{group__transform_ga6fc44d5bc6960f17d9585cb460230b29}} +\index{Transform@{Transform}!ps\_get\_matrix@{ps\_get\_matrix}} +\index{ps\_get\_matrix@{ps\_get\_matrix}!Transform@{Transform}} +\doxysubsubsection{ps\_get\_matrix()} +{\footnotesize\ttfamily \textbf{ ps\+\_\+bool} ps\+\_\+get\+\_\+matrix (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Get the current transformation matrix from graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em matrix} & Pointer to a matrix object to receiving the current transformation.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if is success, otherwise False. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+set\+\_\+matrix}{p.}{group__transform_gafdd79be45c9dd686968a28e26dad197a} +\end{DoxySeeAlso} +\mbox{\label{group__transform_ga5b70ca1210e0c47d3c600ddb0be28d36}} +\index{Transform@{Transform}!ps\_identity@{ps\_identity}} +\index{ps\_identity@{ps\_identity}!Transform@{Transform}} +\doxysubsubsection{ps\_identity()} +{\footnotesize\ttfamily void ps\+\_\+identity (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx }\end{DoxyParamCaption})} + + + +Reset the current transformation matrix to identity matrix. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+translate}{p.}{group__transform_ga70d073a90a6c15ec6fb724294169ed61}, \doxyref{ps\+\_\+scale}{p.}{group__transform_ga0edb5a79c27a2c74110aa73172be60c2}, \doxyref{ps\+\_\+shear}{p.}{group__transform_ga57d6341a69881c51eee52598a6fd2a55}, \doxyref{ps\+\_\+rotate}{p.}{group__transform_ga540c9dad7b1755d283dbe5b9c197e82c}, \doxyref{ps\+\_\+transform}{p.}{group__transform_ga3c2ad1c918dcd43eb68b42e60a4ff136} +\end{DoxySeeAlso} +\mbox{\label{group__transform_ga540c9dad7b1755d283dbe5b9c197e82c}} +\index{Transform@{Transform}!ps\_rotate@{ps\_rotate}} +\index{ps\_rotate@{ps\_rotate}!Transform@{Transform}} +\doxysubsubsection{ps\_rotate()} +{\footnotesize\ttfamily void ps\+\_\+rotate (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{angle }\end{DoxyParamCaption})} + + + +Rotates the user coordinate system in graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em angle} & The angle, in radians, which to rotate the specified context.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+translate}{p.}{group__transform_ga70d073a90a6c15ec6fb724294169ed61}, \doxyref{ps\+\_\+scale}{p.}{group__transform_ga0edb5a79c27a2c74110aa73172be60c2}, \doxyref{ps\+\_\+shear}{p.}{group__transform_ga57d6341a69881c51eee52598a6fd2a55}, \doxyref{ps\+\_\+identity}{p.}{group__transform_ga5b70ca1210e0c47d3c600ddb0be28d36}, \doxyref{ps\+\_\+transform}{p.}{group__transform_ga3c2ad1c918dcd43eb68b42e60a4ff136} +\end{DoxySeeAlso} +\mbox{\label{group__transform_ga0edb5a79c27a2c74110aa73172be60c2}} +\index{Transform@{Transform}!ps\_scale@{ps\_scale}} +\index{ps\_scale@{ps\_scale}!Transform@{Transform}} +\doxysubsubsection{ps\_scale()} +{\footnotesize\ttfamily void ps\+\_\+scale (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{sx, }\item[{float}]{sy }\end{DoxyParamCaption})} + + + +Changes the scale of the user coordinate system in graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em sx} & The scale factor for the X dimension. \\ +\hline +{\em sy} & The scale factor for the Y dimension.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+translate}{p.}{group__transform_ga70d073a90a6c15ec6fb724294169ed61}, \doxyref{ps\+\_\+shear}{p.}{group__transform_ga57d6341a69881c51eee52598a6fd2a55}, \doxyref{ps\+\_\+rotate}{p.}{group__transform_ga540c9dad7b1755d283dbe5b9c197e82c}, \doxyref{ps\+\_\+identity}{p.}{group__transform_ga5b70ca1210e0c47d3c600ddb0be28d36}, \doxyref{ps\+\_\+transform}{p.}{group__transform_ga3c2ad1c918dcd43eb68b42e60a4ff136} +\end{DoxySeeAlso} +\mbox{\label{group__transform_gafdd79be45c9dd686968a28e26dad197a}} +\index{Transform@{Transform}!ps\_set\_matrix@{ps\_set\_matrix}} +\index{ps\_set\_matrix@{ps\_set\_matrix}!Transform@{Transform}} +\doxysubsubsection{ps\_set\_matrix()} +{\footnotesize\ttfamily void ps\+\_\+set\+\_\+matrix (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Modifies the current transformation matrix to the given matrix. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em matrix} & The transformation matrix to be set.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+get\+\_\+matrix}{p.}{group__transform_ga6fc44d5bc6960f17d9585cb460230b29} +\end{DoxySeeAlso} +\mbox{\label{group__transform_ga57d6341a69881c51eee52598a6fd2a55}} +\index{Transform@{Transform}!ps\_shear@{ps\_shear}} +\index{ps\_shear@{ps\_shear}!Transform@{Transform}} +\doxysubsubsection{ps\_shear()} +{\footnotesize\ttfamily void ps\+\_\+shear (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{shx, }\item[{float}]{shy }\end{DoxyParamCaption})} + + + +Changes the shear of the user coordinate system in graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em shx} & The shear factor for the horizontal. \\ +\hline +{\em shy} & The shear factor for the vertical.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+translate}{p.}{group__transform_ga70d073a90a6c15ec6fb724294169ed61}, \doxyref{ps\+\_\+scale}{p.}{group__transform_ga0edb5a79c27a2c74110aa73172be60c2}, \doxyref{ps\+\_\+rotate}{p.}{group__transform_ga540c9dad7b1755d283dbe5b9c197e82c}, \doxyref{ps\+\_\+identity}{p.}{group__transform_ga5b70ca1210e0c47d3c600ddb0be28d36}, \doxyref{ps\+\_\+transform}{p.}{group__transform_ga3c2ad1c918dcd43eb68b42e60a4ff136} +\end{DoxySeeAlso} +\mbox{\label{group__transform_ga3c2ad1c918dcd43eb68b42e60a4ff136}} +\index{Transform@{Transform}!ps\_transform@{ps\_transform}} +\index{ps\_transform@{ps\_transform}!Transform@{Transform}} +\doxysubsubsection{ps\_transform()} +{\footnotesize\ttfamily void ps\+\_\+transform (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{const \textbf{ ps\+\_\+matrix} $\ast$}]{matrix }\end{DoxyParamCaption})} + + + +Transforms the user coordinate system in graphic context using a specified matrix. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em matrix} & The matrix to apply to the specified context\textquotesingle{}s current transformation matrix.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+translate}{p.}{group__transform_ga70d073a90a6c15ec6fb724294169ed61}, \doxyref{ps\+\_\+scale}{p.}{group__transform_ga0edb5a79c27a2c74110aa73172be60c2}, \doxyref{ps\+\_\+shear}{p.}{group__transform_ga57d6341a69881c51eee52598a6fd2a55}, \doxyref{ps\+\_\+rotate}{p.}{group__transform_ga540c9dad7b1755d283dbe5b9c197e82c}, \doxyref{ps\+\_\+identity}{p.}{group__transform_ga5b70ca1210e0c47d3c600ddb0be28d36} +\end{DoxySeeAlso} +\mbox{\label{group__transform_ga70d073a90a6c15ec6fb724294169ed61}} +\index{Transform@{Transform}!ps\_translate@{ps\_translate}} +\index{ps\_translate@{ps\_translate}!Transform@{Transform}} +\doxysubsubsection{ps\_translate()} +{\footnotesize\ttfamily void ps\+\_\+translate (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{float}]{tx, }\item[{float}]{ty }\end{DoxyParamCaption})} + + + +Changes the origin of the user coordinate system in graphic context. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em tx} & The amount, in pixels, which to translate in x direction. \\ +\hline +{\em ty} & The amount, in pixels, which to translate in y direction.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+scale}{p.}{group__transform_ga0edb5a79c27a2c74110aa73172be60c2}, \doxyref{ps\+\_\+shear}{p.}{group__transform_ga57d6341a69881c51eee52598a6fd2a55}, \doxyref{ps\+\_\+rotate}{p.}{group__transform_ga540c9dad7b1755d283dbe5b9c197e82c}, \doxyref{ps\+\_\+identity}{p.}{group__transform_ga5b70ca1210e0c47d3c600ddb0be28d36}, \doxyref{ps\+\_\+transform}{p.}{group__transform_ga3c2ad1c918dcd43eb68b42e60a4ff136} +\end{DoxySeeAlso} +\mbox{\label{group__transform_gabce5a2c20dc021f94fe02de38ba13563}} +\index{Transform@{Transform}!ps\_viewport\_to\_world@{ps\_viewport\_to\_world}} +\index{ps\_viewport\_to\_world@{ps\_viewport\_to\_world}!Transform@{Transform}} +\doxysubsubsection{ps\_viewport\_to\_world()} +{\footnotesize\ttfamily void ps\+\_\+viewport\+\_\+to\+\_\+world (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+point} $\ast$}]{point }\end{DoxyParamCaption})} + + + +Transform a coordinate from user space to device space. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em point} & The point which to be transformed.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+world\+\_\+to\+\_\+viewport}{p.}{group__transform_ga5fc9c185a38b1a5e79a8fd7c14cbc40c} +\end{DoxySeeAlso} +\mbox{\label{group__transform_ga5fc9c185a38b1a5e79a8fd7c14cbc40c}} +\index{Transform@{Transform}!ps\_world\_to\_viewport@{ps\_world\_to\_viewport}} +\index{ps\_world\_to\_viewport@{ps\_world\_to\_viewport}!Transform@{Transform}} +\doxysubsubsection{ps\_world\_to\_viewport()} +{\footnotesize\ttfamily void ps\+\_\+world\+\_\+to\+\_\+viewport (\begin{DoxyParamCaption}\item[{\textbf{ ps\+\_\+context} $\ast$}]{ctx, }\item[{\textbf{ ps\+\_\+point} $\ast$}]{point }\end{DoxyParamCaption})} + + + +Transform a coordinate from device space to user space. + + +\begin{DoxyParams}{Parameters} +{\em ctx} & Pointer to an existing context object. \\ +\hline +{\em point} & The point which to be transformed.\\ +\hline +\end{DoxyParams} +\begin{DoxySeeAlso}{See also} +\doxyref{ps\+\_\+viewport\+\_\+to\+\_\+world}{p.}{group__transform_gabce5a2c20dc021f94fe02de38ba13563} +\end{DoxySeeAlso} diff --git a/doc/latex/group__types.tex b/doc/latex/group__types.tex new file mode 100644 index 0000000..17c6c92 --- /dev/null +++ b/doc/latex/group__types.tex @@ -0,0 +1,290 @@ +\doxysection{X\+Image Object Types} +\label{group__types}\index{XImage Object Types@{XImage Object Types}} +\doxysubsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \textbf{ \+\_\+psx\+\_\+image\+\_\+frame} +\begin{DoxyCompactList}\small\item\em A frame image data. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+psx\+\_\+image} +\begin{DoxyCompactList}\small\item\em A image object. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+psx\+\_\+image\+\_\+header} +\begin{DoxyCompactList}\small\item\em Image reader header define. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+psx\+\_\+image\+\_\+operator} +\begin{DoxyCompactList}\small\item\em The image operator define. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \textbf{ I\+M\+G\+\_\+\+O\+BJ}(image)~\textbf{ I\+M\+G\+\_\+\+O\+B\+J\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0) +\begin{DoxyCompactList}\small\item\em Get first ps\+\_\+image obj. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+A\+TA}(image)~\textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0) +\begin{DoxyCompactList}\small\item\em Get first image frame data. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+ZE}(image)~\textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+Z\+E\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0) +\begin{DoxyCompactList}\small\item\em Get first image frame data size. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+O\+B\+J\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, idx)~(image-\/$>$frames[idx].img) +\begin{DoxyCompactList}\small\item\em Get ps\+\_\+image obj at index. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, idx)~(image-\/$>$frames[idx].data) +\begin{DoxyCompactList}\small\item\em Get image frame data at index. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+Z\+E\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(img, idx)~(img-\/$>$frames[idx].size) +\begin{DoxyCompactList}\small\item\em Get image frame data size at index. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+U\+R\+A\+T\+I\+O\+N\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(img, idx)~(img-\/$>$frames[idx].duration) +\begin{DoxyCompactList}\small\item\em Get image frame duration at index. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +\mbox{\label{group__types_ga9c73a9e18c3dbe35627caf3ca2576e9d}} +typedef struct \textbf{ \+\_\+psx\+\_\+image\+\_\+frame} \textbf{ psx\+\_\+image\+\_\+frame} +\begin{DoxyCompactList}\small\item\em A frame image data. \end{DoxyCompactList}\item +\mbox{\label{group__types_gadf288af52cc3e0bcd015ad1d5cb34555}} +typedef struct \textbf{ \+\_\+psx\+\_\+image} \textbf{ psx\+\_\+image} +\begin{DoxyCompactList}\small\item\em A image object. \end{DoxyCompactList}\item +\mbox{\label{group__types_ga2a329fae95e995b3152f5794f40577c8}} +typedef struct \textbf{ \+\_\+psx\+\_\+image\+\_\+header} \textbf{ psx\+\_\+image\+\_\+header} +\begin{DoxyCompactList}\small\item\em Image reader header define. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+psx\+\_\+image\+\_\+operator} \textbf{ psx\+\_\+image\+\_\+operator} +\begin{DoxyCompactList}\small\item\em The image operator define. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+psx\+\_\+priority\+\_\+level} \textbf{ psx\+\_\+priority\+\_\+level} +\begin{DoxyCompactList}\small\item\em Priority level for image\+\_\+operator. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \{ \newline +\textbf{ S\+\_\+\+OK} = 0, +\textbf{ S\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+MS} = 1, +\textbf{ S\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+RT} = 2, +\textbf{ S\+\_\+\+O\+U\+T\+\_\+\+O\+F\+\_\+\+M\+E\+M\+O\+RY} = 3, +\newline +\textbf{ S\+\_\+\+I\+N\+I\+T\+\_\+\+F\+A\+I\+L\+U\+RE} = 4, +\textbf{ S\+\_\+\+F\+A\+I\+L\+U\+RE} = 5 + \} +\begin{DoxyCompactList}\small\item\em Status code return by call A\+P\+Is. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+psx\+\_\+priority\+\_\+level} \{ \textbf{ P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+E\+X\+T\+E\+N\+T\+ED} = -\/1, +\textbf{ P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+D\+E\+F\+A\+U\+LT} = 0, +\textbf{ P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+M\+A\+S\+T\+ER} = 1 + \} +\begin{DoxyCompactList}\small\item\em Priority level for image\+\_\+operator. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} + + +\doxysubsection{Macro Definition Documentation} +\mbox{\label{group__types_ga7659f81b8f07953d369f89e6ccb76946}} +\index{XImage Object Types@{XImage Object Types}!IMG\_DATA@{IMG\_DATA}} +\index{IMG\_DATA@{IMG\_DATA}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{IMG\_DATA} +{\footnotesize\ttfamily \#define I\+M\+G\+\_\+\+D\+A\+TA(\begin{DoxyParamCaption}\item[{}]{image }\end{DoxyParamCaption})~\textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0)} + + + +Get first image frame data. + +\begin{DoxySeeAlso}{See also} +\doxyref{I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}{p.}{group__types_ga55ebbcf390dafc4dbcc392b8a126fa54} +\end{DoxySeeAlso} + + +Definition at line 84 of file psx\+\_\+image.\+h. + +\mbox{\label{group__types_ga55ebbcf390dafc4dbcc392b8a126fa54}} +\index{XImage Object Types@{XImage Object Types}!IMG\_DATA\_AT\_INDEX@{IMG\_DATA\_AT\_INDEX}} +\index{IMG\_DATA\_AT\_INDEX@{IMG\_DATA\_AT\_INDEX}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{IMG\_DATA\_AT\_INDEX} +{\footnotesize\ttfamily \#define I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX(\begin{DoxyParamCaption}\item[{}]{image, }\item[{}]{idx }\end{DoxyParamCaption})~(image-\/$>$frames[idx].data)} + + + +Get image frame data at index. + +\begin{DoxySeeAlso}{See also} +\doxyref{I\+M\+G\+\_\+\+D\+A\+TA}{p.}{group__types_ga7659f81b8f07953d369f89e6ccb76946} +\end{DoxySeeAlso} + + +Definition at line 105 of file psx\+\_\+image.\+h. + +\mbox{\label{group__types_ga0c129ffe2ff88a4549acc8dc41dcc8e8}} +\index{XImage Object Types@{XImage Object Types}!IMG\_DATA\_SIZE@{IMG\_DATA\_SIZE}} +\index{IMG\_DATA\_SIZE@{IMG\_DATA\_SIZE}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{IMG\_DATA\_SIZE} +{\footnotesize\ttfamily \#define I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+ZE(\begin{DoxyParamCaption}\item[{}]{image }\end{DoxyParamCaption})~\textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+Z\+E\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0)} + + + +Get first image frame data size. + +\begin{DoxySeeAlso}{See also} +\doxyref{I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+Z\+E\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}{p.}{group__types_ga03cb372f7ebc94296372e691e56d1a81} +\end{DoxySeeAlso} + + +Definition at line 91 of file psx\+\_\+image.\+h. + +\mbox{\label{group__types_ga03cb372f7ebc94296372e691e56d1a81}} +\index{XImage Object Types@{XImage Object Types}!IMG\_DATA\_SIZE\_AT\_INDEX@{IMG\_DATA\_SIZE\_AT\_INDEX}} +\index{IMG\_DATA\_SIZE\_AT\_INDEX@{IMG\_DATA\_SIZE\_AT\_INDEX}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{IMG\_DATA\_SIZE\_AT\_INDEX} +{\footnotesize\ttfamily \#define I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+Z\+E\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX(\begin{DoxyParamCaption}\item[{}]{img, }\item[{}]{idx }\end{DoxyParamCaption})~(img-\/$>$frames[idx].size)} + + + +Get image frame data size at index. + +\begin{DoxySeeAlso}{See also} +\doxyref{I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+ZE}{p.}{group__types_ga0c129ffe2ff88a4549acc8dc41dcc8e8} +\end{DoxySeeAlso} + + +Definition at line 112 of file psx\+\_\+image.\+h. + +\mbox{\label{group__types_ga844356bd32f7c49562ffe9e403eebde5}} +\index{XImage Object Types@{XImage Object Types}!IMG\_DURATION\_AT\_INDEX@{IMG\_DURATION\_AT\_INDEX}} +\index{IMG\_DURATION\_AT\_INDEX@{IMG\_DURATION\_AT\_INDEX}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{IMG\_DURATION\_AT\_INDEX} +{\footnotesize\ttfamily \#define I\+M\+G\+\_\+\+D\+U\+R\+A\+T\+I\+O\+N\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX(\begin{DoxyParamCaption}\item[{}]{img, }\item[{}]{idx }\end{DoxyParamCaption})~(img-\/$>$frames[idx].duration)} + + + +Get image frame duration at index. + +\begin{DoxySeeAlso}{See also} +\doxyref{I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+ZE}{p.}{group__types_ga0c129ffe2ff88a4549acc8dc41dcc8e8}, \doxyref{I\+M\+G\+\_\+\+D\+A\+TA}{p.}{group__types_ga7659f81b8f07953d369f89e6ccb76946} +\end{DoxySeeAlso} + + +Definition at line 119 of file psx\+\_\+image.\+h. + +\mbox{\label{group__types_ga4f220b976061c8b3604e2cc0f1acc894}} +\index{XImage Object Types@{XImage Object Types}!IMG\_OBJ@{IMG\_OBJ}} +\index{IMG\_OBJ@{IMG\_OBJ}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{IMG\_OBJ} +{\footnotesize\ttfamily \#define I\+M\+G\+\_\+\+O\+BJ(\begin{DoxyParamCaption}\item[{}]{image }\end{DoxyParamCaption})~\textbf{ I\+M\+G\+\_\+\+O\+B\+J\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0)} + + + +Get first ps\+\_\+image obj. + +\begin{DoxySeeAlso}{See also} +\doxyref{I\+M\+G\+\_\+\+O\+B\+J\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}{p.}{group__types_ga7d8aed5aba80028b8b14faa09c4afbce} +\end{DoxySeeAlso} + + +Definition at line 77 of file psx\+\_\+image.\+h. + +\mbox{\label{group__types_ga7d8aed5aba80028b8b14faa09c4afbce}} +\index{XImage Object Types@{XImage Object Types}!IMG\_OBJ\_AT\_INDEX@{IMG\_OBJ\_AT\_INDEX}} +\index{IMG\_OBJ\_AT\_INDEX@{IMG\_OBJ\_AT\_INDEX}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{IMG\_OBJ\_AT\_INDEX} +{\footnotesize\ttfamily \#define I\+M\+G\+\_\+\+O\+B\+J\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX(\begin{DoxyParamCaption}\item[{}]{image, }\item[{}]{idx }\end{DoxyParamCaption})~(image-\/$>$frames[idx].img)} + + + +Get ps\+\_\+image obj at index. + +\begin{DoxySeeAlso}{See also} +\doxyref{I\+M\+G\+\_\+\+O\+BJ}{p.}{group__types_ga4f220b976061c8b3604e2cc0f1acc894} +\end{DoxySeeAlso} + + +Definition at line 98 of file psx\+\_\+image.\+h. + + + +\doxysubsection{Typedef Documentation} +\mbox{\label{group__types_ga3873a0f73c90a4cf33afd3ff7ab6b7b3}} +\index{XImage Object Types@{XImage Object Types}!psx\_image\_operator@{psx\_image\_operator}} +\index{psx\_image\_operator@{psx\_image\_operator}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{psx\_image\_operator} +{\footnotesize\ttfamily typedef struct \textbf{ \+\_\+psx\+\_\+image\+\_\+operator} \textbf{ psx\+\_\+image\+\_\+operator}} + + + +The image operator define. + +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+register\+\_\+operator}{p.}{group__interface_gac2c1fc7d317f49ee5c246f9aff61e13a} \doxyref{psx\+\_\+image\+\_\+unregister\+\_\+operator}{p.}{group__interface_ga50213dff3b0bec9b77c059bb85126bed} +\end{DoxySeeAlso} +\mbox{\label{group__types_ga56bd2eeea302e1c420d7e7b09fa1b75c}} +\index{XImage Object Types@{XImage Object Types}!psx\_priority\_level@{psx\_priority\_level}} +\index{psx\_priority\_level@{psx\_priority\_level}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{psx\_priority\_level} +{\footnotesize\ttfamily typedef enum \textbf{ \+\_\+psx\+\_\+priority\+\_\+level} \textbf{ psx\+\_\+priority\+\_\+level}} + + + +Priority level for image\+\_\+operator. + +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+register\+\_\+operator}{p.}{group__interface_gac2c1fc7d317f49ee5c246f9aff61e13a} +\end{DoxySeeAlso} + + +\doxysubsection{Enumeration Type Documentation} +\mbox{\label{group__types_ga06fc87d81c62e9abb8790b6e5713c55b}} +\doxysubsubsection{anonymous enum} +{\footnotesize\ttfamily anonymous enum} + + + +Status code return by call A\+P\+Is. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_OK@{S\_OK}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!S\_OK@{S\_OK}}}\mbox{\label{group__types_gga06fc87d81c62e9abb8790b6e5713c55bae36cb8bfb9670d44e24261506cae2791}} +S\+\_\+\+OK&Successful no errors. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_BAD\_PARAMS@{S\_BAD\_PARAMS}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!S\_BAD\_PARAMS@{S\_BAD\_PARAMS}}}\mbox{\label{group__types_gga06fc87d81c62e9abb8790b6e5713c55ba149bfeb516955c855e9f170db6dc093c}} +S\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+MS&Invalid params input. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_NOT\_SUPPORT@{S\_NOT\_SUPPORT}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!S\_NOT\_SUPPORT@{S\_NOT\_SUPPORT}}}\mbox{\label{group__types_gga06fc87d81c62e9abb8790b6e5713c55badc433abcd1da990b49c947a7c16dd657}} +S\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+RT&Not support format or decoder module not found. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_OUT\_OF\_MEMORY@{S\_OUT\_OF\_MEMORY}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!S\_OUT\_OF\_MEMORY@{S\_OUT\_OF\_MEMORY}}}\mbox{\label{group__types_gga06fc87d81c62e9abb8790b6e5713c55ba6d6bd1f44f637e595bb3564c1d914863}} +S\+\_\+\+O\+U\+T\+\_\+\+O\+F\+\_\+\+M\+E\+M\+O\+RY&Not enough memory. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_INIT\_FAILURE@{S\_INIT\_FAILURE}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!S\_INIT\_FAILURE@{S\_INIT\_FAILURE}}}\mbox{\label{group__types_gga06fc87d81c62e9abb8790b6e5713c55ba28b75b1b6ca84b4239cf23b1b8b506f2}} +S\+\_\+\+I\+N\+I\+T\+\_\+\+F\+A\+I\+L\+U\+RE&Not initialize system. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{S\_FAILURE@{S\_FAILURE}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!S\_FAILURE@{S\_FAILURE}}}\mbox{\label{group__types_gga06fc87d81c62e9abb8790b6e5713c55bacd33e5b280a7fed8bd4a5521bd5e4b87}} +S\+\_\+\+F\+A\+I\+L\+U\+RE&Operation failed by internal errors. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 124 of file psx\+\_\+image.\+h. + +\mbox{\label{group__types_ga57d2d84e226ccbbbd2a1d9b593f7a4d9}} +\index{XImage Object Types@{XImage Object Types}!\_psx\_priority\_level@{\_psx\_priority\_level}} +\index{\_psx\_priority\_level@{\_psx\_priority\_level}!XImage Object Types@{XImage Object Types}} +\doxysubsubsection{\_psx\_priority\_level} +{\footnotesize\ttfamily enum \textbf{ \+\_\+psx\+\_\+priority\+\_\+level}} + + + +Priority level for image\+\_\+operator. + +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+register\+\_\+operator}{p.}{group__interface_gac2c1fc7d317f49ee5c246f9aff61e13a} +\end{DoxySeeAlso} +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIORITY\_EXTENTED@{PRIORITY\_EXTENTED}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!PRIORITY\_EXTENTED@{PRIORITY\_EXTENTED}}}\mbox{\label{group__types_gga57d2d84e226ccbbbd2a1d9b593f7a4d9acf0e249bf51a1ce199e4c7f485476ffd}} +P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+E\+X\+T\+E\+N\+T\+ED&Low level operator. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIORITY\_DEFAULT@{PRIORITY\_DEFAULT}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!PRIORITY\_DEFAULT@{PRIORITY\_DEFAULT}}}\mbox{\label{group__types_gga57d2d84e226ccbbbd2a1d9b593f7a4d9ad0ec54805bc039724d6e94735ca936a5}} +P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+D\+E\+F\+A\+U\+LT&Default level operator. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{PRIORITY\_MASTER@{PRIORITY\_MASTER}!XImage Object Types@{XImage Object Types}}\index{XImage Object Types@{XImage Object Types}!PRIORITY\_MASTER@{PRIORITY\_MASTER}}}\mbox{\label{group__types_gga57d2d84e226ccbbbd2a1d9b593f7a4d9a6243765615c4bde8b09e02fe0364d3f1}} +P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+M\+A\+S\+T\+ER&High level operator. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 89 of file psx\+\_\+image\+\_\+plugin.\+h. + diff --git a/doc/latex/longtable_doxygen.sty b/doc/latex/longtable_doxygen.sty new file mode 100644 index 0000000..a0eb314 --- /dev/null +++ b/doc/latex/longtable_doxygen.sty @@ -0,0 +1,448 @@ +%% +%% This is file `longtable.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% longtable.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% The source is maintained by the LaTeX Project team and bug +%% reports for it can be opened at http://latex-project.org/bugs.html +%% (but please observe conditions on bug reports sent to that address!) +%% +%% Copyright 1993-2016 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. +%% -------------------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' +%% without such generated files. +%% +%% The list of all files belonging to the LaTeX `Tools Bundle' is +%% given in the file `manifest.txt'. +%% +%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{longtable_doxygen} + [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen] +\def\LT@err{\PackageError{longtable}} +\def\LT@warn{\PackageWarning{longtable}} +\def\LT@final@warn{% + \AtEndDocument{% + \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}% + \global\let\LT@final@warn\relax} +\DeclareOption{errorshow}{% + \def\LT@warn{\PackageInfo{longtable}}} +\DeclareOption{pausing}{% + \def\LT@warn#1{% + \LT@err{#1}{This is not really an error}}} +\DeclareOption{set}{} +\DeclareOption{final}{} +\ProcessOptions +\newskip\LTleft \LTleft=\fill +\newskip\LTright \LTright=\fill +\newskip\LTpre \LTpre=\bigskipamount +\newskip\LTpost \LTpost=\bigskipamount +\newcount\LTchunksize \LTchunksize=20 +\let\c@LTchunksize\LTchunksize +\newdimen\LTcapwidth \LTcapwidth=4in +\newbox\LT@head +\newbox\LT@firsthead +\newbox\LT@foot +\newbox\LT@lastfoot +\newcount\LT@cols +\newcount\LT@rows +\newcounter{LT@tables} +\newcounter{LT@chunks}[LT@tables] +\ifx\c@table\undefined + \newcounter{table} + \def\fnum@table{\tablename~\thetable} +\fi +\ifx\tablename\undefined + \def\tablename{Table} +\fi +\newtoks\LT@p@ftn +\mathchardef\LT@end@pen=30000 +\def\longtable{% + \par + \ifx\multicols\@undefined + \else + \ifnum\col@number>\@ne + \@twocolumntrue + \fi + \fi + \if@twocolumn + \LT@err{longtable not in 1-column mode}\@ehc + \fi + \begingroup + \@ifnextchar[\LT@array{\LT@array[x]}} +\def\LT@array[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr\let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \xdef\LT@bchunk{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{}\lineskip\z@\baselineskip\z@ + \LT@bchunk} +\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} +\def\LT@start{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \dimen@ii\vfuzz + \vfuzz\maxdimen + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \vfuzz\dimen@ii + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@\vfil\break\fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak + \output{\LT@output}} +\def\endlongtable{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column \@width s have changed\MessageBreak + in table \thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \endgroup + \global\@mparbottom\z@ + \pagegoal\vsize + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi} +\def\LT@nofcols#1&{% + \futurelet\@let@token\LT@n@fcols} +\def\LT@n@fcols{% + \advance\LT@cols\@ne + \ifx\@let@token\LT@nofcols + \expandafter\@gobble + \else + \expandafter\LT@nofcols + \fi} +\def\LT@tabularcr{% + \relax\iffalse{\fi\ifnum0=`}\fi + \@ifstar + {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr + \LT@t@bularcr}% + {\LT@t@bularcr}} +\let\LT@crcr\crcr +\let\LT@setprevdepth\relax +\def\LT@t@bularcr{% + \global\advance\LT@rows\@ne + \ifnum\LT@rows=\LTchunksize + \gdef\LT@setprevdepth{% + \prevdepth\z@\global + \global\let\LT@setprevdepth\relax}% + \expandafter\LT@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LT@LL@FM@cr + \fi} +\def\LT@xtabularcr{% + \@ifnextchar[\LT@argtabularcr\LT@ntabularcr} +\def\LT@ntabularcr{% + \ifnum0=`{}\fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@argtabularcr[#1]{% + \ifnum0=`{}\fi + \ifdim #1>\z@ + \unskip\@xargarraycr{#1}% + \else + \@yargarraycr{#1}% + \fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@echunk{% + \crcr\LT@save@row\cr\egroup + \global\setbox\@ne\lastbox + \unskip + \egroup} +\def\LT@entry#1#2{% + \ifhmode\@firstofone{&}\fi\omit + \ifnum#1=\c@LT@chunks + \else + \kern#2\relax + \fi} +\def\LT@entry@chop#1#2{% + \noexpand\LT@entry + {\ifnum#1>\c@LT@chunks + 1}{0pt% + \else + #1}{#2% + \fi}} +\def\LT@entry@write{% + \noexpand\LT@entry^^J% + \@spaces} +\def\LT@kill{% + \LT@echunk + \LT@get@widths + \expandafter\LT@rebox\LT@bchunk} +\def\LT@rebox#1\bgroup{% + #1\bgroup + \unvbox\z@ + \unskip + \setbox\z@\lastbox} +\def\LT@blank@row{% + \xdef\LT@save@row{\expandafter\LT@build@blank + \romannumeral\number\LT@cols 001 }} +\def\LT@build@blank#1{% + \if#1m% + \noexpand\LT@entry{1}{0pt}% + \expandafter\LT@build@blank + \fi} +\def\LT@make@row{% + \global\expandafter\let\expandafter\LT@save@row + \csname LT@\romannumeral\c@LT@tables\endcsname + \ifx\LT@save@row\relax + \LT@blank@row + \else + {\let\LT@entry\or + \if!% + \ifcase\expandafter\expandafter\expandafter\LT@cols + \expandafter\@gobble\LT@save@row + \or + \else + \relax + \fi + !% + \else + \aftergroup\LT@blank@row + \fi}% + \fi} +\let\setlongtables\relax +\def\LT@get@widths{% + \setbox\tw@\hbox{% + \unhbox\@ne + \let\LT@old@row\LT@save@row + \global\let\LT@save@row\@empty + \count@\LT@cols + \loop + \unskip + \setbox\tw@\lastbox + \ifhbox\tw@ + \LT@def@row + \advance\count@\m@ne + \repeat}% + \ifx\LT@@save@row\@undefined + \let\LT@@save@row\LT@save@row + \fi} +\def\LT@def@row{% + \let\LT@entry\or + \edef\@tempa{% + \ifcase\expandafter\count@\LT@old@row + \else + {1}{0pt}% + \fi}% + \let\LT@entry\relax + \xdef\LT@save@row{% + \LT@entry + \expandafter\LT@max@sel\@tempa + \LT@save@row}} +\def\LT@max@sel#1#2{% + {\ifdim#2=\wd\tw@ + #1% + \else + \number\c@LT@chunks + \fi}% + {\the\wd\tw@}} +\def\LT@hline{% + \noalign{\ifnum0=`}\fi + \penalty\@M + \futurelet\@let@token\LT@@hline} +\def\LT@@hline{% + \ifx\@let@token\hline + \global\let\@gtempa\@gobble + \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}% + \else + \global\let\@gtempa\@empty + \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\LT@sep}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\penalty\@M}% + \@gtempa} +\def\LT@caption{% + \noalign\bgroup + \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n} +\def\LT@c@ption#1[#2]#3{% + \LT@makecaption#1\fnum@table{#3}% + \def\@tempa{#2}% + \ifx\@tempa\@empty\else + {\let\\\space + \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}% + \fi} +\def\LT@capti@n{% + \@ifstar + {\egroup\LT@c@ption\@gobble[]}% + {\egroup\@xdblarg{\LT@c@ption\@firstofone}}} +\def\LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \sbox\@tempboxa{#1{#2: }#3}% + \ifdim\wd\@tempboxa>\hsize + #1{#2: }#3% + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +\def\LT@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LT@end@pen + \LT@err{floats and marginpars not allowed in a longtable}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LT@lastfoot>\ht\LT@foot + \dimen@\pagegoal + \advance\dimen@-\ht\LT@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% + \@makecol + \@outputpage + \setbox\z@\vbox{\box\LT@head}% + \fi + \fi + \global\@colroom\@colht + \global\vsize\@colht + \vbox + {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LT@head\nobreak + \fi} +\def\LT@end@hd@ft#1{% + \LT@echunk + \ifx\LT@start\endgraf + \LT@err + {Longtable head or foot not at start of table}% + {Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths + \LT@bchunk} +\def\endfirsthead{\LT@end@hd@ft\LT@firsthead} +\def\endhead{\LT@end@hd@ft\LT@head} +\def\endfoot{\LT@end@hd@ft\LT@foot} +\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot} +\def\LT@startpbox#1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \vrule \@height \ht\@arstrutbox \@width \z@} +\def\LT@endpbox{% + \@finalstrut\@arstrutbox + \egroup + \the\LT@p@ftn + \global\LT@p@ftn{}% + \hfil} +\def\LT@p@ftntext#1{% + \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}% + \global\LT@p@ftn\expandafter{\@tempa{#1}}}% + +\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen} +\endinput +%% +%% End of file `longtable.sty'. diff --git a/doc/latex/modules.tex b/doc/latex/modules.tex new file mode 100644 index 0000000..c68156e --- /dev/null +++ b/doc/latex/modules.tex @@ -0,0 +1,41 @@ +\doxysection{Modules} +Here is a list of all modules\+:\begin{DoxyCompactList} +\item \contentsline{section}{Extensions}{\pageref{group__extension}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{X\+Image Extension}{\pageref{group__extimg}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{X\+Image Object Types}{\pageref{group__types}}{} +\item \contentsline{section}{X\+Image Functions}{\pageref{group__functions}}{} +\item \contentsline{section}{X\+Image Coders Register functions}{\pageref{group__interface}}{} +\item \contentsline{section}{X\+Image Coders Plugin side functions}{\pageref{group__coder}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} +\item \contentsline{section}{Data Types}{\pageref{group__data}}{} +\item \contentsline{section}{Graphic Object Types}{\pageref{group__objects}}{} +\item \contentsline{section}{Common Functions}{\pageref{group__common}}{} +\item \contentsline{section}{Graphic Functions}{\pageref{group__graphic}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{Context}{\pageref{group__context}}{} +\item \contentsline{section}{Canvas}{\pageref{group__canvas}}{} +\item \contentsline{section}{Image}{\pageref{group__image}}{} +\item \contentsline{section}{Pattern}{\pageref{group__pattern}}{} +\item \contentsline{section}{Gradient}{\pageref{group__gradient}}{} +\item \contentsline{section}{Mask}{\pageref{group__mask}}{} +\item \contentsline{section}{Drawing}{\pageref{group__drawing}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{Fill}{\pageref{group__fill}}{} +\item \contentsline{section}{Stroke}{\pageref{group__stroke}}{} +\item \contentsline{section}{Shadow}{\pageref{group__shadow}}{} +\item \contentsline{section}{Attribute}{\pageref{group__attr}}{} +\item \contentsline{section}{Paint}{\pageref{group__paint}}{} +\item \contentsline{section}{Clip}{\pageref{group__clip}}{} +\item \contentsline{section}{State}{\pageref{group__state}}{} +\end{DoxyCompactList} +\item \contentsline{section}{Font}{\pageref{group__font}}{} +\item \contentsline{section}{Text}{\pageref{group__text}}{} +\item \contentsline{section}{Transform}{\pageref{group__transform}}{} +\item \contentsline{section}{Matrix}{\pageref{group__matrix}}{} +\item \contentsline{section}{Geometry}{\pageref{group__geometry}}{} +\item \contentsline{section}{Path}{\pageref{group__path}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} diff --git a/doc/latex/picasso_8h.tex b/doc/latex/picasso_8h.tex new file mode 100644 index 0000000..9b82083 --- /dev/null +++ b/doc/latex/picasso_8h.tex @@ -0,0 +1,671 @@ +\doxysection{include/picasso.h File Reference} +\label{picasso_8h}\index{include/picasso.h@{include/picasso.h}} +{\ttfamily \#include $<$stdint.\+h$>$}\newline +\doxysubsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \textbf{ \+\_\+ps\+\_\+glyph} +\begin{DoxyCompactList}\small\item\em A character glyph of a font. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+size} +\begin{DoxyCompactList}\small\item\em A structure that contains width and height values. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+rect} +\begin{DoxyCompactList}\small\item\em A structure that contains location and dimensions of a rectangle. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+point} +\begin{DoxyCompactList}\small\item\em A structure that contains a point in a two-\/dimensional coordinate system. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+color} +\begin{DoxyCompactList}\small\item\em A structure that contains rgba values for a color. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+ps\+\_\+font\+\_\+info} +\begin{DoxyCompactList}\small\item\em A structure that contains font information. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \textbf{ True}~1 +\begin{DoxyCompactList}\small\item\em define true value \end{DoxyCompactList}\item +\#define \textbf{ False}~0 +\begin{DoxyCompactList}\small\item\em define false value \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef int \textbf{ ps\+\_\+bool} +\begin{DoxyCompactList}\small\item\em boolean type \end{DoxyCompactList}\item +typedef uint16\+\_\+t \textbf{ ps\+\_\+uchar16} +\begin{DoxyCompactList}\small\item\em 16 bit unsigned unicode character \end{DoxyCompactList}\item +typedef int16\+\_\+t \textbf{ ps\+\_\+schar16} +\begin{DoxyCompactList}\small\item\em 16 bit signed unicode character \end{DoxyCompactList}\item +typedef uint8\+\_\+t \textbf{ ps\+\_\+byte} +\begin{DoxyCompactList}\small\item\em byte data type \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+context \textbf{ ps\+\_\+context} +\begin{DoxyCompactList}\small\item\em An opaque type represents a Picasso drawing environment. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+canvas \textbf{ ps\+\_\+canvas} +\begin{DoxyCompactList}\small\item\em An opaque type represents a pixel buffer. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+image \textbf{ ps\+\_\+image} +\begin{DoxyCompactList}\small\item\em An opaque type represents an image. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+pattern \textbf{ ps\+\_\+pattern} +\begin{DoxyCompactList}\small\item\em An opaque type represents a pattern. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+gradient \textbf{ ps\+\_\+gradient} +\begin{DoxyCompactList}\small\item\em An opaque type represents a gradient. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+matrix \textbf{ ps\+\_\+matrix} +\begin{DoxyCompactList}\small\item\em An opaque type represents a transform matrix. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+path \textbf{ ps\+\_\+path} +\begin{DoxyCompactList}\small\item\em An opaque type represents a graphic path. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+mask \textbf{ ps\+\_\+mask} +\begin{DoxyCompactList}\small\item\em An opaque type represents an alpha mask. \end{DoxyCompactList}\item +typedef struct \+\_\+ps\+\_\+font \textbf{ ps\+\_\+font} +\begin{DoxyCompactList}\small\item\em An opaque type represents a font. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+ps\+\_\+glyph} \textbf{ ps\+\_\+glyph} +\begin{DoxyCompactList}\small\item\em A character glyph of a font. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+ps\+\_\+size} \textbf{ ps\+\_\+size} +\begin{DoxyCompactList}\small\item\em A structure that contains width and height values. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+ps\+\_\+rect} \textbf{ ps\+\_\+rect} +\begin{DoxyCompactList}\small\item\em A structure that contains location and dimensions of a rectangle. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+ps\+\_\+point} \textbf{ ps\+\_\+point} +\begin{DoxyCompactList}\small\item\em A structure that contains a point in a two-\/dimensional coordinate system. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+ps\+\_\+color} \textbf{ ps\+\_\+color} +\begin{DoxyCompactList}\small\item\em A structure that contains rgba values for a color. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+status} \textbf{ ps\+\_\+status} +\begin{DoxyCompactList}\small\item\em Status code return by call ps\+\_\+last\+\_\+status function. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+color\+\_\+format} \textbf{ ps\+\_\+color\+\_\+format} +\begin{DoxyCompactList}\small\item\em Pixel formats of canvas or image. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+wrap\+\_\+type} \textbf{ ps\+\_\+wrap\+\_\+type} +\begin{DoxyCompactList}\small\item\em Fill type of pattern. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+gradient\+\_\+spread} \textbf{ ps\+\_\+gradient\+\_\+spread} +\begin{DoxyCompactList}\small\item\em Fill type of outside the gradient area. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+line\+\_\+cap} \textbf{ ps\+\_\+line\+\_\+cap} +\begin{DoxyCompactList}\small\item\em Styles for rendering the endpoint of a stroked line. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+line\+\_\+join} \textbf{ ps\+\_\+line\+\_\+join} +\begin{DoxyCompactList}\small\item\em Junction types for stroked lines. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+line\+\_\+inner\+\_\+join} \textbf{ ps\+\_\+line\+\_\+inner\+\_\+join} +\begin{DoxyCompactList}\small\item\em Inner junction types for stroked lines. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+composite} \textbf{ ps\+\_\+composite} +\begin{DoxyCompactList}\small\item\em Compositing operations for graphics context. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+filter} \textbf{ ps\+\_\+filter} +\begin{DoxyCompactList}\small\item\em Graphics quality for rendering an image. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+fill\+\_\+rule} \textbf{ ps\+\_\+fill\+\_\+rule} +\begin{DoxyCompactList}\small\item\em Fill rules for graphics. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+charset} \textbf{ ps\+\_\+charset} +\begin{DoxyCompactList}\small\item\em Charset for a font. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+font\+\_\+weight} \textbf{ ps\+\_\+font\+\_\+weight} +\begin{DoxyCompactList}\small\item\em Font weight. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+ps\+\_\+font\+\_\+info} \textbf{ ps\+\_\+font\+\_\+info} +\begin{DoxyCompactList}\small\item\em A structure that contains font information. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+text\+\_\+type} \textbf{ ps\+\_\+text\+\_\+type} +\begin{DoxyCompactList}\small\item\em Text rendering type. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+draw\+\_\+text\+\_\+type} \textbf{ ps\+\_\+draw\+\_\+text\+\_\+type} +\begin{DoxyCompactList}\small\item\em Draw mode for rending text. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+text\+\_\+align} \textbf{ ps\+\_\+text\+\_\+align} +\begin{DoxyCompactList}\small\item\em Text align mode for drawing text. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+path\+\_\+cmd} \textbf{ ps\+\_\+path\+\_\+cmd} +\begin{DoxyCompactList}\small\item\em Path command for vertices. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+ps\+\_\+path\+\_\+op} \textbf{ ps\+\_\+path\+\_\+operation} +\begin{DoxyCompactList}\small\item\em Path clipping operations. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+ps\+\_\+status} \{ \newline +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+S\+U\+C\+C\+E\+ED}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+O\+U\+T\+\_\+\+O\+F\+\_\+\+M\+E\+M\+O\+RY}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+I\+N\+V\+A\+L\+I\+D\+\_\+\+A\+R\+G\+U\+M\+E\+NT}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+RT}, +\newline +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+D\+E\+V\+I\+C\+E\+\_\+\+E\+R\+R\+OR}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+M\+I\+S\+M\+A\+T\+C\+H\+I\+N\+G\+\_\+\+F\+O\+R\+M\+AT}, +\textbf{ S\+T\+A\+T\+U\+S\+\_\+\+U\+N\+K\+N\+O\+W\+N\+\_\+\+E\+R\+R\+OR} + \} +\begin{DoxyCompactList}\small\item\em Status code return by call ps\+\_\+last\+\_\+status function. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+color\+\_\+format} \{ \newline +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+BA}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+A\+R\+GB}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+A\+B\+GR}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+B\+G\+RA}, +\newline +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+GB}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+B\+GR}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+B565}, +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+R\+G\+B555}, +\newline +\textbf{ C\+O\+L\+O\+R\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+U\+N\+K\+N\+O\+WN} + \} +\begin{DoxyCompactList}\small\item\em Pixel formats of canvas or image. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+wrap\+\_\+type} \{ \textbf{ W\+R\+A\+P\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+P\+E\+AT}, +\textbf{ W\+R\+A\+P\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+F\+L\+E\+CT} + \} +\begin{DoxyCompactList}\small\item\em Fill type of pattern. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+gradient\+\_\+spread} \{ \textbf{ G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+P\+AD}, +\textbf{ G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+R\+E\+P\+E\+AT}, +\textbf{ G\+R\+A\+D\+I\+E\+N\+T\+\_\+\+S\+P\+R\+E\+A\+D\+\_\+\+R\+E\+F\+L\+E\+CT} + \} +\begin{DoxyCompactList}\small\item\em Fill type of outside the gradient area. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+line\+\_\+cap} \{ \textbf{ L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+B\+U\+TT}, +\textbf{ L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+R\+O\+U\+ND}, +\textbf{ L\+I\+N\+E\+\_\+\+C\+A\+P\+\_\+\+S\+Q\+U\+A\+RE} + \} +\begin{DoxyCompactList}\small\item\em Styles for rendering the endpoint of a stroked line. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+line\+\_\+join} \{ \newline +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+ER}, +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+E\+R\+\_\+\+R\+E\+V\+E\+RT}, +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+M\+I\+T\+E\+R\+\_\+\+R\+O\+U\+ND}, +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+R\+O\+U\+ND}, +\newline +\textbf{ L\+I\+N\+E\+\_\+\+J\+O\+I\+N\+\_\+\+B\+E\+V\+EL} + \} +\begin{DoxyCompactList}\small\item\em Junction types for stroked lines. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+line\+\_\+inner\+\_\+join} \{ \textbf{ L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+M\+I\+T\+ER}, +\textbf{ L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+B\+E\+V\+EL}, +\textbf{ L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+J\+AG}, +\textbf{ L\+I\+N\+E\+\_\+\+I\+N\+N\+E\+R\+\_\+\+R\+O\+U\+ND} + \} +\begin{DoxyCompactList}\small\item\em Inner junction types for stroked lines. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+composite} \{ \newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+L\+E\+AR}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+RC}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+O\+V\+ER}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+IN}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+O\+UT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+R\+C\+\_\+\+A\+T\+OP}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+ST}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+O\+V\+ER}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+IN}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+O\+UT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+S\+T\+\_\+\+A\+T\+OP}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+X\+OR}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+A\+R\+K\+EN}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+L\+I\+G\+H\+T\+EN}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+O\+V\+E\+R\+L\+AY}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+C\+R\+E\+EN}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+M\+U\+L\+T\+I\+P\+LY}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+P\+L\+US}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+M\+I\+N\+US}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+E\+X\+C\+L\+U\+S\+I\+ON}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+I\+F\+F\+E\+R\+E\+N\+CE}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+O\+F\+T\+L\+I\+G\+HT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+H\+A\+R\+D\+L\+I\+G\+HT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+B\+U\+RN}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+D\+O\+D\+GE}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+O\+N\+T\+R\+A\+ST}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+I\+N\+V\+E\+RT}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+I\+N\+V\+E\+R\+T\+\_\+\+B\+L\+E\+ND}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+H\+UE}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+S\+A\+T\+U\+R\+A\+T\+I\+ON}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+C\+O\+L\+OR}, +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+L\+U\+M\+I\+N\+O\+S\+I\+TY}, +\newline +\textbf{ C\+O\+M\+P\+O\+S\+I\+T\+E\+\_\+\+E\+R\+R\+OR} + \} +\begin{DoxyCompactList}\small\item\em Compositing operations for graphics context. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+filter} \{ \newline +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+N\+E\+A\+R\+E\+ST}, +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+B\+I\+L\+I\+N\+E\+AR}, +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+G\+A\+U\+S\+S\+I\+AN}, +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+B\+I\+C\+U\+B\+IC}, +\newline +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+Q\+U\+A\+D\+R\+IC}, +\textbf{ F\+I\+L\+T\+E\+R\+\_\+\+U\+N\+K\+N\+O\+WN} + \} +\begin{DoxyCompactList}\small\item\em Graphics quality for rendering an image. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+fill\+\_\+rule} \{ \textbf{ F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+W\+I\+N\+D\+I\+NG}, +\textbf{ F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+E\+V\+E\+N\+\_\+\+O\+DD}, +\textbf{ F\+I\+L\+L\+\_\+\+R\+U\+L\+E\+\_\+\+E\+R\+R\+OR} + \} +\begin{DoxyCompactList}\small\item\em Fill rules for graphics. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+charset} \{ \textbf{ C\+H\+A\+R\+S\+E\+T\+\_\+\+A\+N\+SI}, +\textbf{ C\+H\+A\+R\+S\+E\+T\+\_\+\+U\+N\+I\+C\+O\+DE} + \} +\begin{DoxyCompactList}\small\item\em Charset for a font. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+font\+\_\+weight} \{ \textbf{ F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+R\+E\+G\+U\+L\+AR} = 400, +\textbf{ F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+M\+E\+D\+I\+UM} = 500, +\textbf{ F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+B\+O\+LD} = 700, +\textbf{ F\+O\+N\+T\+\_\+\+W\+E\+I\+G\+H\+T\+\_\+\+H\+E\+A\+VY} = 900 + \} +\begin{DoxyCompactList}\small\item\em Font weight. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+text\+\_\+type} \{ \textbf{ T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+S\+M\+O\+O\+TH}, +\textbf{ T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+O\+NO}, +\textbf{ T\+E\+X\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+S\+T\+R\+O\+KE} + \} +\begin{DoxyCompactList}\small\item\em Text rendering type. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+draw\+\_\+text\+\_\+type} \{ \textbf{ D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+F\+I\+LL}, +\textbf{ D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+S\+T\+R\+O\+KE}, +\textbf{ D\+R\+A\+W\+\_\+\+T\+E\+X\+T\+\_\+\+B\+O\+TH} + \} +\begin{DoxyCompactList}\small\item\em Draw mode for rending text. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+text\+\_\+align} \{ \newline +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+C\+E\+N\+T\+ER} = 0, +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+T\+OP} = 1, +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+B\+O\+T\+T\+OM} = 2, +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+L\+E\+FT} = 4, +\newline +\textbf{ T\+E\+X\+T\+\_\+\+A\+L\+I\+G\+N\+\_\+\+R\+I\+G\+HT} = 8 + \} +\begin{DoxyCompactList}\small\item\em Text align mode for drawing text. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+path\+\_\+cmd} \{ \newline +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+S\+T\+OP} = 0, +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+M\+O\+V\+E\+\_\+\+TO} = 1, +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+L\+I\+N\+E\+\_\+\+TO} = 2, +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+C\+U\+R\+V\+E3} = 3, +\newline +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+C\+U\+R\+V\+E4} = 4, +\textbf{ P\+A\+T\+H\+\_\+\+C\+M\+D\+\_\+\+E\+N\+D\+\_\+\+P\+O\+LY} = 0x0F + \} +\begin{DoxyCompactList}\small\item\em Path command for vertices. \end{DoxyCompactList}\item +enum \textbf{ \+\_\+ps\+\_\+path\+\_\+op} \{ \textbf{ P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+U\+N\+I\+ON}, +\textbf{ P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+I\+N\+T\+E\+R\+S\+E\+CT}, +\textbf{ P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+X\+OR}, +\textbf{ P\+A\+T\+H\+\_\+\+O\+P\+\_\+\+D\+I\+FF} + \} +\begin{DoxyCompactList}\small\item\em Path clipping operations. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ ps\+\_\+version} (void) +\begin{DoxyCompactList}\small\item\em Return current version of picasso. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+initialize} (void) +\begin{DoxyCompactList}\small\item\em Initialize the picasso drawing environment. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+shutdown} (void) +\begin{DoxyCompactList}\small\item\em Shutdown the picasso drawing environment. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+status} P\+I\+C\+A\+PI \textbf{ ps\+\_\+last\+\_\+status} (void) +\begin{DoxyCompactList}\small\item\em Return the last status code of picasso. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+context} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+create} (\textbf{ ps\+\_\+canvas} $\ast$canvas, \textbf{ ps\+\_\+context} $\ast$shared\+\_\+context) +\begin{DoxyCompactList}\small\item\em Create a new graphic context for a canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+context} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+ref} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the context by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+unref} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the context object. If the reference count on the context falls to 0, the context is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+set\+\_\+canvas} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Set a new canvas into a context, and return the old one. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+context\+\_\+get\+\_\+canvas} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Get the canvas from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create} (\textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new canvas using the given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch) +\begin{DoxyCompactList}\small\item\em Create a new canvas using a given address in memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create\+\_\+compatible} (const \textbf{ ps\+\_\+canvas} $\ast$canvas, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new canvas to compatible with an existing canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+canvas} (\textbf{ ps\+\_\+canvas} $\ast$canvas, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Create a new canvas using part of an existing canvas in same pixel buffer. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+create\+\_\+from\+\_\+image} (\textbf{ ps\+\_\+image} $\ast$img, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Create a new canvas using part of an existing ps\+\_\+image object in same pixel buffer. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+replace\+\_\+data} (\textbf{ ps\+\_\+canvas} $\ast$canvas, \textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch) +\begin{DoxyCompactList}\small\item\em Replace a canvas target rendering buffer address in memory, which is only use for canvas create by {\itshape ps\+\_\+canvas\+\_\+create\+\_\+with\+\_\+data}. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+canvas} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+ref} (\textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the canvas by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+unref} (\textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the canvas object. If the reference count on the canvas falls to 0, the canvas is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+get\+\_\+size} (const \textbf{ ps\+\_\+canvas} $\ast$canvas, \textbf{ ps\+\_\+size} $\ast$rsize) +\begin{DoxyCompactList}\small\item\em Return the size of the canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+color\+\_\+format} P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+get\+\_\+format} (const \textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Return the pixel format of the canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+set\+\_\+mask} (\textbf{ ps\+\_\+canvas} $\ast$canvas, const \textbf{ ps\+\_\+mask} $\ast$mask) +\begin{DoxyCompactList}\small\item\em Set a new mask into an existing canvas object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+reset\+\_\+mask} (\textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Clear the mask from the canvas object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+canvas\+\_\+bitblt} (\textbf{ ps\+\_\+canvas} $\ast$src, const \textbf{ ps\+\_\+rect} $\ast$rect, \textbf{ ps\+\_\+canvas} $\ast$dst, const \textbf{ ps\+\_\+point} $\ast$location) +\begin{DoxyCompactList}\small\item\em Copy raster data between two canvas objects. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create} (\textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new image using the given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+with\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch) +\begin{DoxyCompactList}\small\item\em Create a new image using a given address in memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch) +\begin{DoxyCompactList}\small\item\em Create a new image using a copy of given address in memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+compatible} (const \textbf{ ps\+\_\+canvas} $\ast$canvas, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new image to compatible with an existing canvas. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+canvas} (\textbf{ ps\+\_\+canvas} $\ast$canvas, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Create a new image using part of an existing canvas in same pixel buffer. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+create\+\_\+from\+\_\+image} (\textbf{ ps\+\_\+image} $\ast$img, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Create a new image using part of an existing ps\+\_\+image object in same pixel buffer. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+ref} (\textbf{ ps\+\_\+image} $\ast$img) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the image by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+unref} (\textbf{ ps\+\_\+image} $\ast$img) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the image object. If the reference count on the image falls to 0, the image is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+set\+\_\+allow\+\_\+transparent} (\textbf{ ps\+\_\+image} $\ast$img, \textbf{ ps\+\_\+bool} allow) +\begin{DoxyCompactList}\small\item\em Set whether the image allowed be transparent, False is default. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+set\+\_\+transparent\+\_\+color} (\textbf{ ps\+\_\+image} $\ast$img, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set the transparent color for the image. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+get\+\_\+size} (const \textbf{ ps\+\_\+image} $\ast$img, \textbf{ ps\+\_\+size} $\ast$rsize) +\begin{DoxyCompactList}\small\item\em Return the size of the image. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+color\+\_\+format} P\+I\+C\+A\+PI \textbf{ ps\+\_\+image\+\_\+get\+\_\+format} (const \textbf{ ps\+\_\+image} $\ast$img) +\begin{DoxyCompactList}\small\item\em Return the pixel format of the image. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+pattern} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+pattern\+\_\+create\+\_\+image} (const \textbf{ ps\+\_\+image} $\ast$img, \textbf{ ps\+\_\+wrap\+\_\+type} x\+\_\+wrap, \textbf{ ps\+\_\+wrap\+\_\+type} y\+\_\+wrap, const \textbf{ ps\+\_\+matrix} $\ast$transform) +\begin{DoxyCompactList}\small\item\em Create a new pattern with an existing image. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+pattern\+\_\+transform} (\textbf{ ps\+\_\+pattern} $\ast$pattern, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Transform the pattern object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+pattern} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+pattern\+\_\+ref} (\textbf{ ps\+\_\+pattern} $\ast$pattern) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the pattern by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+pattern\+\_\+unref} (\textbf{ ps\+\_\+pattern} $\ast$pattern) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the pattern object. If the reference count on the pattern falls to 0, the pattern is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+gradient} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+create\+\_\+linear} (\textbf{ ps\+\_\+gradient\+\_\+spread} spread, const \textbf{ ps\+\_\+point} $\ast$start, const \textbf{ ps\+\_\+point} $\ast$end) +\begin{DoxyCompactList}\small\item\em Create a new gradient that varies along the line defined by provided starting and ending points. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+gradient} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+create\+\_\+radial} (\textbf{ ps\+\_\+gradient\+\_\+spread} spread, const \textbf{ ps\+\_\+point} $\ast$start, float sradius, const \textbf{ ps\+\_\+point} $\ast$end, float eradius) +\begin{DoxyCompactList}\small\item\em Create a new gradient that varies along the area defined by provided starting and ending circles. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+gradient} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+create\+\_\+conic} (\textbf{ ps\+\_\+gradient\+\_\+spread} spread, const \textbf{ ps\+\_\+point} $\ast$origin, float sangle) +\begin{DoxyCompactList}\small\item\em Create a new gradient that varies along the area defined by provided concentric circles. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+transform} (\textbf{ ps\+\_\+gradient} $\ast$gradient, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Transform the gradient object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+gradient} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+ref} (\textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the gradient by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+unref} (\textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the gradient object. If the reference count on the gradient falls to 0, the gradient is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+add\+\_\+color\+\_\+stop} (\textbf{ ps\+\_\+gradient} $\ast$gradient, float offset, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Add a color stop to a gradient. The offset specifies the location along the gradient\textquotesingle{}s control vector. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+gradient\+\_\+clear\+\_\+color\+\_\+stops} (\textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Clear color stops from gradient\textquotesingle{}s control vector. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+mask} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+create\+\_\+with\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, int width, int height) +\begin{DoxyCompactList}\small\item\em Create a new mask using a given data block. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+mask} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+ref} (\textbf{ ps\+\_\+mask} $\ast$mask) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the mask by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+unref} (\textbf{ ps\+\_\+mask} $\ast$mask) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the mask object. If the reference count on the mask falls to 0, the mask is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+add\+\_\+color\+\_\+filter} (\textbf{ ps\+\_\+mask} $\ast$mask, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Add a color filter to a mask. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+mask\+\_\+clear\+\_\+color\+\_\+filters} (\textbf{ ps\+\_\+mask} $\ast$mask) +\begin{DoxyCompactList}\small\item\em Clear all colors from mask\textquotesingle{}s filter. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set a Color to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+image} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+image} $\ast$image) +\begin{DoxyCompactList}\small\item\em Set a image to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+pattern} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+pattern} $\ast$pattern) +\begin{DoxyCompactList}\small\item\em Set a pattern to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+gradient} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Set a gradient to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+source\+\_\+canvas} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Set a canvas to the context, it is used to fill a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+cap} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+line\+\_\+cap} line\+\_\+cap) +\begin{DoxyCompactList}\small\item\em Set the style for the endpoint of lines in a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+join} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+line\+\_\+join} line\+\_\+join) +\begin{DoxyCompactList}\small\item\em Set the style for the joins of connected lines in a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+inner\+\_\+join} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+line\+\_\+inner\+\_\+join} line\+\_\+inner\+\_\+join) +\begin{DoxyCompactList}\small\item\em Set the style for the inner joins of connected lines in a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+width} (\textbf{ ps\+\_\+context} $\ast$ctx, float width) +\begin{DoxyCompactList}\small\item\em Set the line width for a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+miter\+\_\+limit} (\textbf{ ps\+\_\+context} $\ast$ctx, float limit) +\begin{DoxyCompactList}\small\item\em Set the miter limit for the joins of connected lines in a graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set a color to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+image} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+image} $\ast$image) +\begin{DoxyCompactList}\small\item\em Set a image to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+pattern} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+pattern} $\ast$pattern) +\begin{DoxyCompactList}\small\item\em Set a pattern to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+gradient} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+gradient} $\ast$gradient) +\begin{DoxyCompactList}\small\item\em Set a gradient to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+stroke\+\_\+canvas} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+canvas} $\ast$canvas) +\begin{DoxyCompactList}\small\item\em Set a canvas to the context, it is used to stroke a graphic object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+line\+\_\+dash} (\textbf{ ps\+\_\+context} $\ast$ctx, float start, const float $\ast$dashes, unsigned int num\+\_\+dashes) +\begin{DoxyCompactList}\small\item\em Set the pattern for dashed lines in the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+reset\+\_\+line\+\_\+dash} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Clear the dashs from the context, and set to solid. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+shadow} (\textbf{ ps\+\_\+context} $\ast$ctx, float x\+\_\+offset, float y\+\_\+offset, float blur) +\begin{DoxyCompactList}\small\item\em Enables shadowing in a context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+shadow\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set the color of shadow. Default is a black color with 1/3 alpha. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+reset\+\_\+shadow} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Disables shadowing in a context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+composite} P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+composite\+\_\+operator} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+composite} composite) +\begin{DoxyCompactList}\small\item\em Set composites opertaions for graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+filter} P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+filter} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+filter} filter) +\begin{DoxyCompactList}\small\item\em Set interpolation filter for graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+fill\+\_\+rule} P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+fill\+\_\+rule} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+fill\+\_\+rule} rule) +\begin{DoxyCompactList}\small\item\em Set fill rule for graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+alpha} (\textbf{ ps\+\_\+context} $\ast$ctx, float alpha) +\begin{DoxyCompactList}\small\item\em Set the opacity level for objects drawn in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+gamma} (\textbf{ ps\+\_\+context} $\ast$ctx, float gamma) +\begin{DoxyCompactList}\small\item\em Set the gamma value for the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+antialias} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+bool} antialias) +\begin{DoxyCompactList}\small\item\em Set whether the Anti-\/aliasing should be turn on. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+blur} (\textbf{ ps\+\_\+context} $\ast$ctx, float blur) +\begin{DoxyCompactList}\small\item\em Set the blur level for the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+stroke} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Stroke the current path according to the line attributes. After called, the current path will be cleared from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+fill} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Fill the current path according to the source attributes. After called, the current path will be cleared from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+paint} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Fill and stroke the current path according to the source and line attributes. After called, the current path will be cleared from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clear} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Clear the current context with source color. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clip} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Clipping the current path, using the current fill rule. After called, the current path will be cleared from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clip\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+path} $\ast$path, \textbf{ ps\+\_\+fill\+\_\+rule} rule) +\begin{DoxyCompactList}\small\item\em Clipping specified path, using the given fill rule. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clip\+\_\+rect} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Clipping specified rectangle. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+scissor\+\_\+rect} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em The fast way to clipping specified rectangle, the clip rect can not be transformed by world matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+clip\+\_\+rects} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rects, unsigned int num\+\_\+rects) +\begin{DoxyCompactList}\small\item\em Clipping specified area defined by an array of rectangles. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+reset\+\_\+clip} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Clear the clipping area from the context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+save} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Pushes a copy of the current graphics state on to stack for context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+restore} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Set the current graphics state to the state most recently saved. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+font} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+create} (const char $\ast$name, \textbf{ ps\+\_\+charset} charset, float size, int weight, \textbf{ ps\+\_\+bool} italic) +\begin{DoxyCompactList}\small\item\em Create a font object using the given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+font} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+create\+\_\+copy} (const \textbf{ ps\+\_\+font} $\ast$font) +\begin{DoxyCompactList}\small\item\em Create a copy from an existing font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+font} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+ref} (\textbf{ ps\+\_\+font} $\ast$font) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the font by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+unref} (\textbf{ ps\+\_\+font} $\ast$font) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the font object. If the reference count on the font falls to 0, the font is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+size} (\textbf{ ps\+\_\+font} $\ast$font, float size) +\begin{DoxyCompactList}\small\item\em Set size for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+weight} (\textbf{ ps\+\_\+font} $\ast$font, int weight) +\begin{DoxyCompactList}\small\item\em Set weight for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+italic} (\textbf{ ps\+\_\+font} $\ast$font, \textbf{ ps\+\_\+bool} italic) +\begin{DoxyCompactList}\small\item\em Set italic for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+charset} (\textbf{ ps\+\_\+font} $\ast$font, \textbf{ ps\+\_\+charset} charset) +\begin{DoxyCompactList}\small\item\em Set charset for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+hint} (\textbf{ ps\+\_\+font} $\ast$font, \textbf{ ps\+\_\+bool} hint) +\begin{DoxyCompactList}\small\item\em Set hiting for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+font\+\_\+set\+\_\+flip} (\textbf{ ps\+\_\+font} $\ast$font, \textbf{ ps\+\_\+bool} flip) +\begin{DoxyCompactList}\small\item\em Set flip for a font object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+font\+\_\+info} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+font\+\_\+info} $\ast$info) +\begin{DoxyCompactList}\small\item\em Return the font information from the graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+font} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+font} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+font} $\ast$font) +\begin{DoxyCompactList}\small\item\em Set a new font to graphics context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+text\+\_\+extent} (\textbf{ ps\+\_\+context} $\ast$ctx, const void $\ast$text, unsigned int length, \textbf{ ps\+\_\+size} $\ast$rsize) +\begin{DoxyCompactList}\small\item\em Get extent for text using current font which selected to graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set the text fill color for the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+stroke\+\_\+color} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+color} $\ast$color) +\begin{DoxyCompactList}\small\item\em Set the text stroke color for the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+text\+\_\+transform} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Transform text matrix for the graphic context. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+matrix} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Set text matrix for the graphic context. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix. The text matrix is an attribute of graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+render\+\_\+type} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+text\+\_\+type} type) +\begin{DoxyCompactList}\small\item\em Set rendering type for text. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+antialias} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+bool} antialias) +\begin{DoxyCompactList}\small\item\em Set whether the font allowed be anti-\/aliasing. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+text\+\_\+kerning} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+bool} kerning) +\begin{DoxyCompactList}\small\item\em Set whether the font auto kerning is allowed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+text\+\_\+out\+\_\+length} (\textbf{ ps\+\_\+context} $\ast$ctx, float x, float y, const char $\ast$text, unsigned int length) +\begin{DoxyCompactList}\small\item\em Draw single byte characters (latin-\/1) at location in user space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+wide\+\_\+text\+\_\+out\+\_\+length} (\textbf{ ps\+\_\+context} $\ast$ctx, float x, float y, const \textbf{ ps\+\_\+uchar16} $\ast$text, unsigned int length) +\begin{DoxyCompactList}\small\item\em Draw unicode characters (ucs-\/2) at location in user space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+draw\+\_\+text} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$area, const void $\ast$text, unsigned int length, \textbf{ ps\+\_\+draw\+\_\+text\+\_\+type} type, \textbf{ ps\+\_\+text\+\_\+align} align) +\begin{DoxyCompactList}\small\item\em Draw text in a rectangle area, using font object which is selected in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+glyph} (\textbf{ ps\+\_\+context} $\ast$ctx, int ch, \textbf{ ps\+\_\+glyph} $\ast$glyph) +\begin{DoxyCompactList}\small\item\em Get the glyph from a given character, using font object which is selected in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+show\+\_\+glyphs} (\textbf{ ps\+\_\+context} $\ast$ctx, float x, float y, \textbf{ ps\+\_\+glyph} $\ast$glyphs, unsigned int length) +\begin{DoxyCompactList}\small\item\em Draw an array of glyphs at location in user space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+path\+\_\+from\+\_\+glyph} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+glyph} $\ast$glyph, \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Get the path from a given glyph object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+glyph\+\_\+get\+\_\+extent} (const \textbf{ ps\+\_\+glyph} $\ast$glyph, \textbf{ ps\+\_\+size} $\ast$rsize) +\begin{DoxyCompactList}\small\item\em Get extent for a glyph object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+translate} (\textbf{ ps\+\_\+context} $\ast$ctx, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Changes the origin of the user coordinate system in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+scale} (\textbf{ ps\+\_\+context} $\ast$ctx, float sx, float sy) +\begin{DoxyCompactList}\small\item\em Changes the scale of the user coordinate system in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+shear} (\textbf{ ps\+\_\+context} $\ast$ctx, float shx, float shy) +\begin{DoxyCompactList}\small\item\em Changes the shear of the user coordinate system in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+rotate} (\textbf{ ps\+\_\+context} $\ast$ctx, float angle) +\begin{DoxyCompactList}\small\item\em Rotates the user coordinate system in graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+identity} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Reset the current transformation matrix to identity matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+transform} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Transforms the user coordinate system in graphic context using a specified matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+matrix} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Modifies the current transformation matrix to the given matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+matrix} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Get the current transformation matrix from graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+world\+\_\+to\+\_\+viewport} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Transform a coordinate from device space to user space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+viewport\+\_\+to\+\_\+world} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Transform a coordinate from user space to device space. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+matrix} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+create} (void) +\begin{DoxyCompactList}\small\item\em Create a identity matrix object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+matrix} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+create\+\_\+init} (float sx, float shy, float shx, float sy, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Create a matrix with given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+matrix} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+create\+\_\+copy} (const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Create a matrix copy from an exist one. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+matrix} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+ref} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the matrix by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+unref} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the matrix object. If the reference count on the matrix falls to 0, the matrix is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+init} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float sx, float shy, float shx, float sy, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Initialize an existing matrix object with given parameters. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+translate} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Modify a matrix by translating. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+scale} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float sx, float sy) +\begin{DoxyCompactList}\small\item\em Modify a matrix by scaling. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+rotate} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float angle) +\begin{DoxyCompactList}\small\item\em Modify a matrix by rotating. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+shear} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float shx, float shy) +\begin{DoxyCompactList}\small\item\em Modify a matrix by shearing. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+invert} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Modify a matrix by inverting. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+identity} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Reset a matrix to identity matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+flip\+\_\+x} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Flip a matrix in the horizontal direction. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+flip\+\_\+y} (\textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Flip a matrix in the vertical direction. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+multiply} (\textbf{ ps\+\_\+matrix} $\ast$result, const \textbf{ ps\+\_\+matrix} $\ast$a, const \textbf{ ps\+\_\+matrix} $\ast$b) +\begin{DoxyCompactList}\small\item\em Multiplies the matrix in a and b together and stores the result in result. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+is\+\_\+identity} (const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Checks whether the matrix is the identity transform matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+is\+\_\+equal} (const \textbf{ ps\+\_\+matrix} $\ast$a, const \textbf{ ps\+\_\+matrix} $\ast$b) +\begin{DoxyCompactList}\small\item\em Checks whether two matrix are equal. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+get\+\_\+determinant} (const \textbf{ ps\+\_\+matrix} $\ast$matrix) +\begin{DoxyCompactList}\small\item\em Return the determinant from a matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+set\+\_\+translate\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float tx, float ty) +\begin{DoxyCompactList}\small\item\em Set the translate factors to the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+get\+\_\+translate\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float $\ast$tx, float $\ast$ty) +\begin{DoxyCompactList}\small\item\em Get the translate factors from the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+set\+\_\+scale\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float sx, float sy) +\begin{DoxyCompactList}\small\item\em Set the scale factors to the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+get\+\_\+scale\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float $\ast$sx, float $\ast$sy) +\begin{DoxyCompactList}\small\item\em Get the scale factors from the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+set\+\_\+shear\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float shx, float shy) +\begin{DoxyCompactList}\small\item\em Set the shear factors to the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+get\+\_\+shear\+\_\+factor} (\textbf{ ps\+\_\+matrix} $\ast$matrix, float $\ast$shx, float $\ast$shy) +\begin{DoxyCompactList}\small\item\em Get the shear factors from the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+transform\+\_\+point} (const \textbf{ ps\+\_\+matrix} $\ast$matrix, \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Transform an existing point using the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+transform\+\_\+rect} (const \textbf{ ps\+\_\+matrix} $\ast$matrix, \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Transform an existing rectangle using the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+matrix\+\_\+transform\+\_\+path} (const \textbf{ ps\+\_\+matrix} $\ast$matrix, \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Transform an existing path using the matrix. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+new\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Create a new empty path in the graphic context, clear the old one. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+new\+\_\+sub\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Close the current path, and add a new empty sub path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+add\+\_\+sub\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Add a new sub path to current path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+set\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Replace the current path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+get\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx, \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Get the current path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+close\+\_\+path} (\textbf{ ps\+\_\+context} $\ast$ctx) +\begin{DoxyCompactList}\small\item\em Close the current path in the graphic context. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+move\+\_\+to} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Begin a new sub path, and set the current point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+line\+\_\+to} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Add a line to the current path from the current point to given point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+bezier\+\_\+curve\+\_\+to} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$fcp, const \textbf{ ps\+\_\+point} $\ast$scp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add a cubic bezier spline to the current path from current point to end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+quad\+\_\+curve\+\_\+to} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$cp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add a quadratic bezier spline to the current path from current point to end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+arc} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+point} $\ast$cp, float radius, float sangle, float eangle, \textbf{ ps\+\_\+bool} clockwise) +\begin{DoxyCompactList}\small\item\em Add a circular arc to the current path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+tangent\+\_\+arc} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect, float sangle, float sweep) +\begin{DoxyCompactList}\small\item\em Add a circular arc which is inner tangent from a rectangle. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+rectangle} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Add a rectangle to the current path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+rounded\+\_\+rect} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby) +\begin{DoxyCompactList}\small\item\em Add a rounded rectangle to the current path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+ellipse} (\textbf{ ps\+\_\+context} $\ast$ctx, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Adds an ellipse to the current path which fits inside the specified rectangle. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+path} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+create} (void) +\begin{DoxyCompactList}\small\item\em Create a new empty path object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+path} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+create\+\_\+copy} (const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Create a copy from an existing path object. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+path} $\ast$P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+ref} (\textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Increases the reference count of the path by 1. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+unref} (\textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Decrements the reference count for the path object. If the reference count on the path falls to 0, the path is freed. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+move\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Begin a new sub path, and set the current point in the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+line\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Add a line to the path from the current point to given point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+tangent\+\_\+arc\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, float radius, const \textbf{ ps\+\_\+point} $\ast$tp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add an arc to the path which tangent at two line. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+arc\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, float radiusX, float radiusY, float angle, \textbf{ ps\+\_\+bool} large\+\_\+arc, \textbf{ ps\+\_\+bool} clockwise, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add an arc to the path, using radius, angle and end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+bezier\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$fcp, const \textbf{ ps\+\_\+point} $\ast$scp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add a cubic bezier spline to the path from current point to end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+quad\+\_\+to} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$cp, const \textbf{ ps\+\_\+point} $\ast$ep) +\begin{DoxyCompactList}\small\item\em Add a quadratic bezier spline to the path from current point to end point. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+sub\+\_\+close} (\textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Close the sub path, and begin a new one. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT float P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+get\+\_\+length} (const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Return The length of the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+clear} (\textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Clear the path to empty. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+is\+\_\+empty} (const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Checks whether the path is empty. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT unsigned int P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+get\+\_\+vertex\+\_\+count} (const \textbf{ ps\+\_\+path} $\ast$path) +\begin{DoxyCompactList}\small\item\em Return the count of vertices in the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+path\+\_\+cmd} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+get\+\_\+vertex} (const \textbf{ ps\+\_\+path} $\ast$path, unsigned int index, \textbf{ ps\+\_\+point} $\ast$point) +\begin{DoxyCompactList}\small\item\em Get a vertex from the path by index, and return the vertex command. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+bounding\+\_\+rect} (const \textbf{ ps\+\_\+path} $\ast$path, \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Get the bounding rectangle of the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+contains} (const \textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$point, \textbf{ ps\+\_\+fill\+\_\+rule} rule) +\begin{DoxyCompactList}\small\item\em Check whether a point is contained in the path by fill method. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ ps\+\_\+bool} P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+stroke\+\_\+contains} (const \textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$point, float width) +\begin{DoxyCompactList}\small\item\em Check whether a point is contained in the path by stroke method. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+line} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$p1, const \textbf{ ps\+\_\+point} $\ast$p2) +\begin{DoxyCompactList}\small\item\em Add a line to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+arc} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+point} $\ast$cp, float radius, float sangle, float eangle, \textbf{ ps\+\_\+bool} clockwise) +\begin{DoxyCompactList}\small\item\em Add a arc to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+rect} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Add a rectangle to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+ellipse} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+rect} $\ast$rect) +\begin{DoxyCompactList}\small\item\em Add an ellipse to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+rounded\+\_\+rect} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+rect} $\ast$rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby) +\begin{DoxyCompactList}\small\item\em Add a rounded rectangle to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+add\+\_\+sub\+\_\+path} (\textbf{ ps\+\_\+path} $\ast$path, const \textbf{ ps\+\_\+path} $\ast$spath) +\begin{DoxyCompactList}\small\item\em Add an sub path to the path. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void P\+I\+C\+A\+PI \textbf{ ps\+\_\+path\+\_\+clipping} (\textbf{ ps\+\_\+path} $\ast$result, \textbf{ ps\+\_\+path\+\_\+operation} op, const \textbf{ ps\+\_\+path} $\ast$a, const \textbf{ ps\+\_\+path} $\ast$b) +\begin{DoxyCompactList}\small\item\em Clipping two path with the operation and get the result path. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +\begin{DoxyAuthor}{Author} +Zhang Ji Peng {\texttt{ onecoolx@gmail.\+com}} +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +2014/6/16 +\end{DoxyDate} +This file includes all interfaces of Picasso + +\begin{DoxyVerb} Copyright (C) 2008 ~ 2024 Zhang Ji Peng + + All rights reserved. + + Picasso is a vector graphic library.\end{DoxyVerb} + \ No newline at end of file diff --git a/doc/latex/psx__image_8h.tex b/doc/latex/psx__image_8h.tex new file mode 100644 index 0000000..bec652c --- /dev/null +++ b/doc/latex/psx__image_8h.tex @@ -0,0 +1,83 @@ +\doxysection{include/images/psx\+\_\+image.h File Reference} +\label{psx__image_8h}\index{include/images/psx\_image.h@{include/images/psx\_image.h}} +{\ttfamily \#include \char`\"{}picasso.\+h\char`\"{}}\newline +\doxysubsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \textbf{ \+\_\+psx\+\_\+image\+\_\+frame} +\begin{DoxyCompactList}\small\item\em A frame image data. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+psx\+\_\+image} +\begin{DoxyCompactList}\small\item\em A image object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \textbf{ I\+M\+G\+\_\+\+O\+BJ}(image)~\textbf{ I\+M\+G\+\_\+\+O\+B\+J\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0) +\begin{DoxyCompactList}\small\item\em Get first ps\+\_\+image obj. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+A\+TA}(image)~\textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0) +\begin{DoxyCompactList}\small\item\em Get first image frame data. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+ZE}(image)~\textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+Z\+E\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, 0) +\begin{DoxyCompactList}\small\item\em Get first image frame data size. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+O\+B\+J\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, idx)~(image-\/$>$frames[idx].img) +\begin{DoxyCompactList}\small\item\em Get ps\+\_\+image obj at index. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(image, idx)~(image-\/$>$frames[idx].data) +\begin{DoxyCompactList}\small\item\em Get image frame data at index. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+A\+T\+A\+\_\+\+S\+I\+Z\+E\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(img, idx)~(img-\/$>$frames[idx].size) +\begin{DoxyCompactList}\small\item\em Get image frame data size at index. \end{DoxyCompactList}\item +\#define \textbf{ I\+M\+G\+\_\+\+D\+U\+R\+A\+T\+I\+O\+N\+\_\+\+A\+T\+\_\+\+I\+N\+D\+EX}(img, idx)~(img-\/$>$frames[idx].duration) +\begin{DoxyCompactList}\small\item\em Get image frame duration at index. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \textbf{ \+\_\+psx\+\_\+image\+\_\+frame} \textbf{ psx\+\_\+image\+\_\+frame} +\begin{DoxyCompactList}\small\item\em A frame image data. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+psx\+\_\+image} \textbf{ psx\+\_\+image} +\begin{DoxyCompactList}\small\item\em A image object. \end{DoxyCompactList}\item +typedef int($\ast$ \textbf{ image\+\_\+writer\+\_\+fn}) (void $\ast$param, const \textbf{ ps\+\_\+byte} $\ast$data, size\+\_\+t length) +\begin{DoxyCompactList}\small\item\em Callback function for saving image data. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \{ \newline +\textbf{ S\+\_\+\+OK} = 0, +\textbf{ S\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+MS} = 1, +\textbf{ S\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+RT} = 2, +\textbf{ S\+\_\+\+O\+U\+T\+\_\+\+O\+F\+\_\+\+M\+E\+M\+O\+RY} = 3, +\newline +\textbf{ S\+\_\+\+I\+N\+I\+T\+\_\+\+F\+A\+I\+L\+U\+RE} = 4, +\textbf{ S\+\_\+\+F\+A\+I\+L\+U\+RE} = 5 + \} +\begin{DoxyCompactList}\small\item\em Status code return by call A\+P\+Is. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+init} (void) +\begin{DoxyCompactList}\small\item\em Initialze the library and load resources. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+shutdown} (void) +\begin{DoxyCompactList}\small\item\em Release resources and shutdoen. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ psx\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+create\+\_\+from\+\_\+data} (\textbf{ ps\+\_\+byte} $\ast$data, \textbf{ ps\+\_\+color\+\_\+format} fmt, int width, int height, int pitch, int $\ast$err\+\_\+code) +\begin{DoxyCompactList}\small\item\em Create a new psx\+\_\+image using a copy of given address in memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ psx\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+load} (const char $\ast$file\+\_\+name, int $\ast$err\+\_\+code) +\begin{DoxyCompactList}\small\item\em Create a new psx\+\_\+image object and load from file. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT \textbf{ psx\+\_\+image} $\ast$P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+load\+\_\+from\+\_\+memory} (const \textbf{ ps\+\_\+byte} $\ast$data, size\+\_\+t length, int $\ast$err\+\_\+code) +\begin{DoxyCompactList}\small\item\em Create a new psx\+\_\+image object and load data from memory. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+save} (const \textbf{ psx\+\_\+image} $\ast$image, \textbf{ image\+\_\+writer\+\_\+fn} func, void $\ast$param, const char $\ast$type, float quality) +\begin{DoxyCompactList}\small\item\em Encoding psx\+\_\+image to a gaving format and output it. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+save\+\_\+to\+\_\+file} (const \textbf{ psx\+\_\+image} $\ast$image, const char $\ast$file\+\_\+name, const char $\ast$type, float quality) +\begin{DoxyCompactList}\small\item\em Encoding psx\+\_\+image to a gaving format and output to a file. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int P\+I\+C\+A\+PI \textbf{ psx\+\_\+image\+\_\+destroy} (\textbf{ psx\+\_\+image} $\ast$image) +\begin{DoxyCompactList}\small\item\em Destroy the psx\+\_\+image object and release resources. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +\begin{DoxyAuthor}{Author} +Zhang Ji Peng {\texttt{ onecoolx@gmail.\+com}} +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +2012/1/31 +\end{DoxyDate} +This file includes all interfaces of picasso extended image decoders. \begin{DoxyVerb} Copyright (C) 2008 ~ 2024 Zhang Ji Peng + + All rights reserved. + + Picasso is a vector graphic library.\end{DoxyVerb} + \ No newline at end of file diff --git a/doc/latex/psx__image__plugin_8h.tex b/doc/latex/psx__image__plugin_8h.tex new file mode 100644 index 0000000..20dd3e2 --- /dev/null +++ b/doc/latex/psx__image__plugin_8h.tex @@ -0,0 +1,61 @@ +\doxysection{include/images/psx\+\_\+image\+\_\+plugin.h File Reference} +\label{psx__image__plugin_8h}\index{include/images/psx\_image\_plugin.h@{include/images/psx\_image\_plugin.h}} +{\ttfamily \#include \char`\"{}picasso.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}psx\+\_\+image.\+h\char`\"{}}\newline +\doxysubsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \textbf{ \+\_\+psx\+\_\+image\+\_\+header} +\begin{DoxyCompactList}\small\item\em Image reader header define. \end{DoxyCompactList}\item +struct \textbf{ \+\_\+psx\+\_\+image\+\_\+operator} +\begin{DoxyCompactList}\small\item\em The image operator define. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \textbf{ M\+O\+D\+U\+L\+E\+\_\+\+N\+A\+ME}~1 +\begin{DoxyCompactList}\small\item\em Get module name. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \textbf{ \+\_\+psx\+\_\+image\+\_\+header} \textbf{ psx\+\_\+image\+\_\+header} +\begin{DoxyCompactList}\small\item\em Image reader header define. \end{DoxyCompactList}\item +typedef struct \textbf{ \+\_\+psx\+\_\+image\+\_\+operator} \textbf{ psx\+\_\+image\+\_\+operator} +\begin{DoxyCompactList}\small\item\em The image operator define. \end{DoxyCompactList}\item +typedef enum \textbf{ \+\_\+psx\+\_\+priority\+\_\+level} \textbf{ psx\+\_\+priority\+\_\+level} +\begin{DoxyCompactList}\small\item\em Priority level for image\+\_\+operator. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \textbf{ \+\_\+psx\+\_\+priority\+\_\+level} \{ \textbf{ P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+E\+X\+T\+E\+N\+T\+ED} = -\/1, +\textbf{ P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+D\+E\+F\+A\+U\+LT} = 0, +\textbf{ P\+R\+I\+O\+R\+I\+T\+Y\+\_\+\+M\+A\+S\+T\+ER} = 1 + \} +\begin{DoxyCompactList}\small\item\em Priority level for image\+\_\+operator. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +P\+E\+X\+P\+O\+RT int \textbf{ psx\+\_\+image\+\_\+register\+\_\+operator} (const char $\ast$type, const \textbf{ ps\+\_\+byte} $\ast$signature, size\+\_\+t sig\+\_\+offset, size\+\_\+t sig\+\_\+len, \textbf{ psx\+\_\+priority\+\_\+level} level, \textbf{ psx\+\_\+image\+\_\+operator} $\ast$coder) +\begin{DoxyCompactList}\small\item\em Register the image operator. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT int \textbf{ psx\+\_\+image\+\_\+unregister\+\_\+operator} (\textbf{ psx\+\_\+image\+\_\+operator} $\ast$coder) +\begin{DoxyCompactList}\small\item\em Unregister the image operator. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void \textbf{ psx\+\_\+image\+\_\+module\+\_\+init} (void) +\begin{DoxyCompactList}\small\item\em Initialze the image module. \end{DoxyCompactList}\item +P\+E\+X\+P\+O\+RT void \textbf{ psx\+\_\+image\+\_\+module\+\_\+shutdown} (void) +\begin{DoxyCompactList}\small\item\em Shutdown the image module. \end{DoxyCompactList}\item +const P\+E\+X\+P\+O\+RT char $\ast$ \textbf{ psx\+\_\+image\+\_\+module\+\_\+get\+\_\+string} (int id) +\begin{DoxyCompactList}\small\item\em Get the string info about module. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +\begin{DoxyAuthor}{Author} +Zhang Ji Peng {\texttt{ onecoolx@gmail.\+com}} +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +2012/1/31 +\end{DoxyDate} +This file includes all interfaces of image decoder backend. \begin{DoxyVerb} Copyright (C) 2008 ~ 2024 Zhang Ji Peng + + All rights reserved. + + Picasso is a vector graphic library.\end{DoxyVerb} + \ No newline at end of file diff --git a/doc/latex/refman.tex b/doc/latex/refman.tex new file mode 100644 index 0000000..df6cf2d --- /dev/null +++ b/doc/latex/refman.tex @@ -0,0 +1,213 @@ +\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}\documentclass[twoside]{book} + +%% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package +\usepackage{ifthen} +\ifx\requestedLaTeXdate\undefined +\usepackage{array} +\else +\usepackage{array}[=2016-10-06] +\fi +%% +% Packages required by doxygen +\usepackage{fixltx2e} +\usepackage{calc} +\usepackage{doxygen} +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{makeidx} +\usepackage{multicol} +\usepackage{multirow} +\PassOptionsToPackage{warn}{textcomp} +\usepackage{textcomp} +\usepackage[nointegrals]{wasysym} +\usepackage[table]{xcolor} +\usepackage{ifpdf,ifxetex} + +% Font selection +\usepackage[T1]{fontenc} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\usepackage{amssymb} +\usepackage{sectsty} +\renewcommand{\familydefault}{\sfdefault} +\allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + +% Arguments of doxygenemoji: +% 1) '::' form of the emoji, already "LaTeX"-escaped +% 2) file with the name of the emoji without the .png extension +% in case image exist use this otherwise use the '::' form +\newcommand{\doxygenemoji}[2]{% + \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}% +} +% Page & text layout +\usepackage{geometry} +\geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% +} +\tolerance=750 +\hfuzz=15pt +\hbadness=750 +\setlength{\emergencystretch}{15pt} +\setlength{\parindent}{0cm} +\newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} +\newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} +\doxynormalparskip +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% +} +\renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% +} +\makeatother + +\makeatletter +\newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} +\makeatother + +% Headers & footers +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} +\fancyhead[CE]{\fancyplain{}{}} +\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} +\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} +\fancyhead[CO]{\fancyplain{}{}} +\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} +\fancyfoot[LE]{\fancyplain{}{}} +\fancyfoot[CE]{\fancyplain{}{}} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[CO]{\fancyplain{}{}} +\fancyfoot[RO]{\fancyplain{}{}} +\renewcommand{\footrulewidth}{0.4pt} +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} + +% Indices & bibliography +\usepackage{natbib} +\usepackage[titles]{tocloft} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{5} +\makeindex + +\usepackage{newunicodechar} + \newunicodechar{⁻}{${}^{-}$}% Superscript minus + \newunicodechar{²}{${}^{2}$}% Superscript two + \newunicodechar{³}{${}^{3}$}% Superscript three + +% Custom commands +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} + +\usepackage{caption} +\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + +\usepackage{etoc} +\etocsettocstyle{\doxytocparskip}{\doxynormalparskip} +\renewcommand{\numberline}[1]{#1~} +%===== C O N T E N T S ===== + +\begin{document} + +% Titlepage & ToC +\pagenumbering{alph} +\begin{titlepage} +\vspace*{7cm} +\begin{center}% +{\Large Picasso A\+PI \\[1ex]\large 2.\+8 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.8.17}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} + +%--- Begin generated contents --- +\chapter{Module Index} +\input{modules} +\chapter{Data Structure Index} +\input{annotated} +\chapter{File Index} +\input{files} +\chapter{Module Documentation} +\input{group__extension} +\include{group__extimg} +\include{group__types} +\include{group__functions} +\include{group__interface} +\include{group__coder} +\include{group__data} +\include{group__objects} +\include{group__common} +\include{group__graphic} +\include{group__context} +\include{group__canvas} +\include{group__image} +\include{group__pattern} +\include{group__gradient} +\include{group__mask} +\include{group__drawing} +\include{group__fill} +\include{group__stroke} +\include{group__shadow} +\include{group__attr} +\include{group__paint} +\include{group__clip} +\include{group__state} +\include{group__font} +\include{group__text} +\include{group__transform} +\include{group__matrix} +\include{group__geometry} +\include{group__path} +\chapter{Data Structure Documentation} +\input{struct__ps__color} +\input{struct__ps__font__info} +\input{struct__ps__glyph} +\input{struct__ps__point} +\input{struct__ps__rect} +\input{struct__ps__size} +\input{struct__psx__image} +\input{struct__psx__image__frame} +\input{struct__psx__image__header} +\input{struct__psx__image__operator} +\chapter{File Documentation} +\input{psx__image_8h} +\input{psx__image__plugin_8h} +\input{picasso_8h} +%--- End generated contents --- + +% Index +\backmatter +\newpage +\phantomsection +\clearemptydoublepage +\addcontentsline{toc}{chapter}{\indexname} +\printindex + +\end{document} diff --git a/doc/latex/struct__ps__color.tex b/doc/latex/struct__ps__color.tex new file mode 100644 index 0000000..aef2b31 --- /dev/null +++ b/doc/latex/struct__ps__color.tex @@ -0,0 +1,77 @@ +\doxysection{\+\_\+ps\+\_\+color Struct Reference} +\label{struct__ps__color}\index{\_ps\_color@{\_ps\_color}} + + +A structure that contains rgba values for a color. + + + + +{\ttfamily \#include $<$picasso.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +float \textbf{ r} +\item +float \textbf{ g} +\item +float \textbf{ b} +\item +float \textbf{ a} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +A structure that contains rgba values for a color. + +Definition at line 212 of file picasso.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__ps__color_a502bc9e5ae32322e96bef95212947a39}} +\index{\_ps\_color@{\_ps\_color}!a@{a}} +\index{a@{a}!\_ps\_color@{\_ps\_color}} +\doxysubsubsection{a} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+color\+::a} + +the alpha component for a color (0 $\sim$ 1). + +Definition at line 220 of file picasso.\+h. + +\mbox{\label{struct__ps__color_a057ad858fb9123c62b3c7d3cf3fac263}} +\index{\_ps\_color@{\_ps\_color}!b@{b}} +\index{b@{b}!\_ps\_color@{\_ps\_color}} +\doxysubsubsection{b} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+color\+::b} + +the blue component for a color (0 $\sim$ 1). + +Definition at line 218 of file picasso.\+h. + +\mbox{\label{struct__ps__color_a520bef42334b2cebcc5658c7cd6b82d2}} +\index{\_ps\_color@{\_ps\_color}!g@{g}} +\index{g@{g}!\_ps\_color@{\_ps\_color}} +\doxysubsubsection{g} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+color\+::g} + +the green component for a color (0 $\sim$ 1). + +Definition at line 216 of file picasso.\+h. + +\mbox{\label{struct__ps__color_a83f4fd6d11d4b520e9dece40b793fb02}} +\index{\_ps\_color@{\_ps\_color}!r@{r}} +\index{r@{r}!\_ps\_color@{\_ps\_color}} +\doxysubsubsection{r} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+color\+::r} + +the red component for a color (0 $\sim$ 1). + +Definition at line 214 of file picasso.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/\textbf{ picasso.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__ps__font__info.tex b/doc/latex/struct__ps__font__info.tex new file mode 100644 index 0000000..9752b94 --- /dev/null +++ b/doc/latex/struct__ps__font__info.tex @@ -0,0 +1,89 @@ +\doxysection{\+\_\+ps\+\_\+font\+\_\+info Struct Reference} +\label{struct__ps__font__info}\index{\_ps\_font\_info@{\_ps\_font\_info}} + + +A structure that contains font information. + + + + +{\ttfamily \#include $<$picasso.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +float \textbf{ size} +\item +float \textbf{ ascent} +\item +float \textbf{ descent} +\item +float \textbf{ leading} +\item +unsigned int \textbf{ units\+EM} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +A structure that contains font information. + +Definition at line 2088 of file picasso.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__ps__font__info_ab9c2a724b7992640a5f2380d15b704ed}} +\index{\_ps\_font\_info@{\_ps\_font\_info}!ascent@{ascent}} +\index{ascent@{ascent}!\_ps\_font\_info@{\_ps\_font\_info}} +\doxysubsubsection{ascent} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+font\+\_\+info\+::ascent} + +Ascent, maximum distance above the baseline. + +Definition at line 2096 of file picasso.\+h. + +\mbox{\label{struct__ps__font__info_a343a94c8ce986280f64716083574c533}} +\index{\_ps\_font\_info@{\_ps\_font\_info}!descent@{descent}} +\index{descent@{descent}!\_ps\_font\_info@{\_ps\_font\_info}} +\doxysubsubsection{descent} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+font\+\_\+info\+::descent} + +Descent, maximum distance below the baseline. + +Definition at line 2100 of file picasso.\+h. + +\mbox{\label{struct__ps__font__info_ae6849fc537628953e30b37c9a89e4737}} +\index{\_ps\_font\_info@{\_ps\_font\_info}!leading@{leading}} +\index{leading@{leading}!\_ps\_font\_info@{\_ps\_font\_info}} +\doxysubsubsection{leading} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+font\+\_\+info\+::leading} + +Leading, the spaceing between consecutive lines of text. + +Definition at line 2104 of file picasso.\+h. + +\mbox{\label{struct__ps__font__info_a30e61deda8d7aed582e33a57b0e569a8}} +\index{\_ps\_font\_info@{\_ps\_font\_info}!size@{size}} +\index{size@{size}!\_ps\_font\_info@{\_ps\_font\_info}} +\doxysubsubsection{size} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+font\+\_\+info\+::size} + +Size, the height of glyph. + +Definition at line 2092 of file picasso.\+h. + +\mbox{\label{struct__ps__font__info_a85b749cf4cfb3fd96bb667dedf883b74}} +\index{\_ps\_font\_info@{\_ps\_font\_info}!unitsEM@{unitsEM}} +\index{unitsEM@{unitsEM}!\_ps\_font\_info@{\_ps\_font\_info}} +\doxysubsubsection{unitsEM} +{\footnotesize\ttfamily unsigned int \+\_\+ps\+\_\+font\+\_\+info\+::units\+EM} + +Units\+Em, the number of glyph space units per em. + +Definition at line 2108 of file picasso.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/\textbf{ picasso.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__ps__glyph.tex b/doc/latex/struct__ps__glyph.tex new file mode 100644 index 0000000..a03a4eb --- /dev/null +++ b/doc/latex/struct__ps__glyph.tex @@ -0,0 +1,41 @@ +\doxysection{\+\_\+ps\+\_\+glyph Struct Reference} +\label{struct__ps__glyph}\index{\_ps\_glyph@{\_ps\_glyph}} + + +A character glyph of a font. + + + + +{\ttfamily \#include $<$picasso.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +void $\ast$ \textbf{ glyph} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +A character glyph of a font. + +Definition at line 170 of file picasso.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__ps__glyph_a0d4318621cf38732a98315930ccdcc61}} +\index{\_ps\_glyph@{\_ps\_glyph}!glyph@{glyph}} +\index{glyph@{glyph}!\_ps\_glyph@{\_ps\_glyph}} +\doxysubsubsection{glyph} +{\footnotesize\ttfamily void$\ast$ \+\_\+ps\+\_\+glyph\+::glyph} + +private glyph data. + +Definition at line 172 of file picasso.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/\textbf{ picasso.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__ps__point.tex b/doc/latex/struct__ps__point.tex new file mode 100644 index 0000000..02509c7 --- /dev/null +++ b/doc/latex/struct__ps__point.tex @@ -0,0 +1,53 @@ +\doxysection{\+\_\+ps\+\_\+point Struct Reference} +\label{struct__ps__point}\index{\_ps\_point@{\_ps\_point}} + + +A structure that contains a point in a two-\/dimensional coordinate system. + + + + +{\ttfamily \#include $<$picasso.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +float \textbf{ x} +\item +float \textbf{ y} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +A structure that contains a point in a two-\/dimensional coordinate system. + +Definition at line 202 of file picasso.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__ps__point_a796631d9d3fa7826d40dcb1b0663ca57}} +\index{\_ps\_point@{\_ps\_point}!x@{x}} +\index{x@{x}!\_ps\_point@{\_ps\_point}} +\doxysubsubsection{x} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+point\+::x} + +the x coordinate of the point. + +Definition at line 204 of file picasso.\+h. + +\mbox{\label{struct__ps__point_a1847dafa048748dd6869058e057fd4bb}} +\index{\_ps\_point@{\_ps\_point}!y@{y}} +\index{y@{y}!\_ps\_point@{\_ps\_point}} +\doxysubsubsection{y} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+point\+::y} + +the y coordinate of the point. + +Definition at line 206 of file picasso.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/\textbf{ picasso.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__ps__rect.tex b/doc/latex/struct__ps__rect.tex new file mode 100644 index 0000000..3876959 --- /dev/null +++ b/doc/latex/struct__ps__rect.tex @@ -0,0 +1,77 @@ +\doxysection{\+\_\+ps\+\_\+rect Struct Reference} +\label{struct__ps__rect}\index{\_ps\_rect@{\_ps\_rect}} + + +A structure that contains location and dimensions of a rectangle. + + + + +{\ttfamily \#include $<$picasso.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +float \textbf{ x} +\item +float \textbf{ y} +\item +float \textbf{ w} +\item +float \textbf{ h} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +A structure that contains location and dimensions of a rectangle. + +Definition at line 188 of file picasso.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__ps__rect_a1c9c0476841a220f9b88033df4f2536c}} +\index{\_ps\_rect@{\_ps\_rect}!h@{h}} +\index{h@{h}!\_ps\_rect@{\_ps\_rect}} +\doxysubsubsection{h} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+rect\+::h} + +the height of the rectangle. + +Definition at line 196 of file picasso.\+h. + +\mbox{\label{struct__ps__rect_ad16d25ec8fd16b45c6f23eddb25a734d}} +\index{\_ps\_rect@{\_ps\_rect}!w@{w}} +\index{w@{w}!\_ps\_rect@{\_ps\_rect}} +\doxysubsubsection{w} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+rect\+::w} + +the width of the rectangle. + +Definition at line 194 of file picasso.\+h. + +\mbox{\label{struct__ps__rect_a79ceb28b3e7f624ce7ad1ef11eca82b8}} +\index{\_ps\_rect@{\_ps\_rect}!x@{x}} +\index{x@{x}!\_ps\_rect@{\_ps\_rect}} +\doxysubsubsection{x} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+rect\+::x} + +locate left of the rectangle. + +Definition at line 190 of file picasso.\+h. + +\mbox{\label{struct__ps__rect_ae4d65fa209b87730a3363b6c50e09f6f}} +\index{\_ps\_rect@{\_ps\_rect}!y@{y}} +\index{y@{y}!\_ps\_rect@{\_ps\_rect}} +\doxysubsubsection{y} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+rect\+::y} + +locate top of the rectangle. + +Definition at line 192 of file picasso.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/\textbf{ picasso.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__ps__size.tex b/doc/latex/struct__ps__size.tex new file mode 100644 index 0000000..4f1c54a --- /dev/null +++ b/doc/latex/struct__ps__size.tex @@ -0,0 +1,53 @@ +\doxysection{\+\_\+ps\+\_\+size Struct Reference} +\label{struct__ps__size}\index{\_ps\_size@{\_ps\_size}} + + +A structure that contains width and height values. + + + + +{\ttfamily \#include $<$picasso.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +float \textbf{ w} +\item +float \textbf{ h} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +A structure that contains width and height values. + +Definition at line 178 of file picasso.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__ps__size_afd67000370304e5e0036eee4f240695f}} +\index{\_ps\_size@{\_ps\_size}!h@{h}} +\index{h@{h}!\_ps\_size@{\_ps\_size}} +\doxysubsubsection{h} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+size\+::h} + +height value. + +Definition at line 182 of file picasso.\+h. + +\mbox{\label{struct__ps__size_a572ca73c9af13a8fa698f14c44f62b6e}} +\index{\_ps\_size@{\_ps\_size}!w@{w}} +\index{w@{w}!\_ps\_size@{\_ps\_size}} +\doxysubsubsection{w} +{\footnotesize\ttfamily float \+\_\+ps\+\_\+size\+::w} + +width value. + +Definition at line 180 of file picasso.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/\textbf{ picasso.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__psx__image.tex b/doc/latex/struct__psx__image.tex new file mode 100644 index 0000000..e32fbe2 --- /dev/null +++ b/doc/latex/struct__psx__image.tex @@ -0,0 +1,101 @@ +\doxysection{\+\_\+psx\+\_\+image Struct Reference} +\label{struct__psx__image}\index{\_psx\_image@{\_psx\_image}} + + +A image object. + + + + +{\ttfamily \#include $<$psx\+\_\+image.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +int \textbf{ width} +\item +int \textbf{ height} +\item +int \textbf{ pitch} +\item +\textbf{ ps\+\_\+color\+\_\+format} \textbf{ format} +\item +\textbf{ psx\+\_\+image\+\_\+frame} $\ast$ \textbf{ frames} +\item +size\+\_\+t \textbf{ num\+\_\+frames} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +A image object. + +Definition at line 57 of file psx\+\_\+image.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__psx__image_a537953c13c0dcc81f835e93aa2b8e4e5}} +\index{\_psx\_image@{\_psx\_image}!format@{format}} +\index{format@{format}!\_psx\_image@{\_psx\_image}} +\doxysubsubsection{format} +{\footnotesize\ttfamily \textbf{ ps\+\_\+color\+\_\+format} \+\_\+psx\+\_\+image\+::format} + +image format + +Definition at line 65 of file psx\+\_\+image.\+h. + +\mbox{\label{struct__psx__image_a10249187a1e6ea4ebd36fee70fb3889b}} +\index{\_psx\_image@{\_psx\_image}!frames@{frames}} +\index{frames@{frames}!\_psx\_image@{\_psx\_image}} +\doxysubsubsection{frames} +{\footnotesize\ttfamily \textbf{ psx\+\_\+image\+\_\+frame}$\ast$ \+\_\+psx\+\_\+image\+::frames} + +image data frames + +Definition at line 67 of file psx\+\_\+image.\+h. + +\mbox{\label{struct__psx__image_a5f595b40247fdb9b3b0552dc7663af9b}} +\index{\_psx\_image@{\_psx\_image}!height@{height}} +\index{height@{height}!\_psx\_image@{\_psx\_image}} +\doxysubsubsection{height} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+::height} + +image height + +Definition at line 61 of file psx\+\_\+image.\+h. + +\mbox{\label{struct__psx__image_ad4c55c5f140e055cf08cb4d54cb36e91}} +\index{\_psx\_image@{\_psx\_image}!num\_frames@{num\_frames}} +\index{num\_frames@{num\_frames}!\_psx\_image@{\_psx\_image}} +\doxysubsubsection{num\_frames} +{\footnotesize\ttfamily size\+\_\+t \+\_\+psx\+\_\+image\+::num\+\_\+frames} + +number of frame + +Definition at line 69 of file psx\+\_\+image.\+h. + +\mbox{\label{struct__psx__image_a139552423f6a09152096c11b14b23082}} +\index{\_psx\_image@{\_psx\_image}!pitch@{pitch}} +\index{pitch@{pitch}!\_psx\_image@{\_psx\_image}} +\doxysubsubsection{pitch} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+::pitch} + +bytes of a scanline + +Definition at line 63 of file psx\+\_\+image.\+h. + +\mbox{\label{struct__psx__image_a7c50f14307a1213f10afad1a35b6b408}} +\index{\_psx\_image@{\_psx\_image}!width@{width}} +\index{width@{width}!\_psx\_image@{\_psx\_image}} +\doxysubsubsection{width} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+::width} + +image width + +Definition at line 59 of file psx\+\_\+image.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/images/\textbf{ psx\+\_\+image.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__psx__image__frame.tex b/doc/latex/struct__psx__image__frame.tex new file mode 100644 index 0000000..991a4fa --- /dev/null +++ b/doc/latex/struct__psx__image__frame.tex @@ -0,0 +1,77 @@ +\doxysection{\+\_\+psx\+\_\+image\+\_\+frame Struct Reference} +\label{struct__psx__image__frame}\index{\_psx\_image\_frame@{\_psx\_image\_frame}} + + +A frame image data. + + + + +{\ttfamily \#include $<$psx\+\_\+image.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\textbf{ ps\+\_\+image} $\ast$ \textbf{ img} +\item +\textbf{ ps\+\_\+byte} $\ast$ \textbf{ data} +\item +size\+\_\+t \textbf{ size} +\item +int \textbf{ duration} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +A frame image data. + +Definition at line 43 of file psx\+\_\+image.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__psx__image__frame_a3363a9c0753b6f840a014342794488be}} +\index{\_psx\_image\_frame@{\_psx\_image\_frame}!data@{data}} +\index{data@{data}!\_psx\_image\_frame@{\_psx\_image\_frame}} +\doxysubsubsection{data} +{\footnotesize\ttfamily \textbf{ ps\+\_\+byte}$\ast$ \+\_\+psx\+\_\+image\+\_\+frame\+::data} + +image data buffer + +Definition at line 47 of file psx\+\_\+image.\+h. + +\mbox{\label{struct__psx__image__frame_a219bd992534f20339ee0bdde5eaffcf7}} +\index{\_psx\_image\_frame@{\_psx\_image\_frame}!duration@{duration}} +\index{duration@{duration}!\_psx\_image\_frame@{\_psx\_image\_frame}} +\doxysubsubsection{duration} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+frame\+::duration} + +current frame duration (in milliseconds, 0 ignore) + +Definition at line 51 of file psx\+\_\+image.\+h. + +\mbox{\label{struct__psx__image__frame_a3427242326edce667689524d274fe9d1}} +\index{\_psx\_image\_frame@{\_psx\_image\_frame}!img@{img}} +\index{img@{img}!\_psx\_image\_frame@{\_psx\_image\_frame}} +\doxysubsubsection{img} +{\footnotesize\ttfamily \textbf{ ps\+\_\+image}$\ast$ \+\_\+psx\+\_\+image\+\_\+frame\+::img} + +picasso image object wrap + +Definition at line 45 of file psx\+\_\+image.\+h. + +\mbox{\label{struct__psx__image__frame_affc8234cace44ec804ef64382bc40ca1}} +\index{\_psx\_image\_frame@{\_psx\_image\_frame}!size@{size}} +\index{size@{size}!\_psx\_image\_frame@{\_psx\_image\_frame}} +\doxysubsubsection{size} +{\footnotesize\ttfamily size\+\_\+t \+\_\+psx\+\_\+image\+\_\+frame\+::size} + +sizeof image data in bytes + +Definition at line 49 of file psx\+\_\+image.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/images/\textbf{ psx\+\_\+image.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__psx__image__header.tex b/doc/latex/struct__psx__image__header.tex new file mode 100644 index 0000000..450cdba --- /dev/null +++ b/doc/latex/struct__psx__image__header.tex @@ -0,0 +1,137 @@ +\doxysection{\+\_\+psx\+\_\+image\+\_\+header Struct Reference} +\label{struct__psx__image__header}\index{\_psx\_image\_header@{\_psx\_image\_header}} + + +Image reader header define. + + + + +{\ttfamily \#include $<$psx\+\_\+image\+\_\+plugin.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +void $\ast$ \textbf{ priv} +\item +int \textbf{ width} +\item +int \textbf{ height} +\item +int \textbf{ pitch} +\item +int \textbf{ depth} +\item +int \textbf{ bpp} +\item +int \textbf{ format} +\item +int \textbf{ alpha} +\item +int \textbf{ frames} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +Image reader header define. + +Definition at line 44 of file psx\+\_\+image\+\_\+plugin.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__psx__image__header_adb76782544924b22665b84d5d05c5de3}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!alpha@{alpha}} +\index{alpha@{alpha}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{alpha} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+header\+::alpha} + +Image has alpha channel. (false\+: 0, true\+: 1) + +Definition at line 60 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__header_a2e847ba843da5663e2187be705244c98}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!bpp@{bpp}} +\index{bpp@{bpp}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{bpp} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+header\+::bpp} + +Image bpp + +Definition at line 56 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__header_aae1128095b239edb47a4b08134692194}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!depth@{depth}} +\index{depth@{depth}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{depth} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+header\+::depth} + +Image depth. + +Definition at line 54 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__header_a3a674545ac64b66430606022093b9361}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!format@{format}} +\index{format@{format}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{format} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+header\+::format} + +Image color format + +Definition at line 58 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__header_a120ca6ac734bb26ba8caba5d442d31d8}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!frames@{frames}} +\index{frames@{frames}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{frames} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+header\+::frames} + +Image frame count. + +Definition at line 62 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__header_a0da20174a57c34eab93bed96843e8003}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!height@{height}} +\index{height@{height}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{height} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+header\+::height} + +Image height. + +Definition at line 50 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__header_a7a1f868cb44d6a5a75828784669937c6}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!pitch@{pitch}} +\index{pitch@{pitch}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{pitch} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+header\+::pitch} + +Image pitch of scanline. + +Definition at line 52 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__header_a033aeca0dade3b1a39fea3a07b7358ea}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!priv@{priv}} +\index{priv@{priv}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{priv} +{\footnotesize\ttfamily void$\ast$ \+\_\+psx\+\_\+image\+\_\+header\+::priv} + +Private data for operator. + +Definition at line 46 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__header_adefe580337f337866df4e61f72a3c6e8}} +\index{\_psx\_image\_header@{\_psx\_image\_header}!width@{width}} +\index{width@{width}!\_psx\_image\_header@{\_psx\_image\_header}} +\doxysubsubsection{width} +{\footnotesize\ttfamily int \+\_\+psx\+\_\+image\+\_\+header\+::width} + +Image width. + +Definition at line 48 of file psx\+\_\+image\+\_\+plugin.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/images/\textbf{ psx\+\_\+image\+\_\+plugin.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/struct__psx__image__operator.tex b/doc/latex/struct__psx__image__operator.tex new file mode 100644 index 0000000..6bdc289 --- /dev/null +++ b/doc/latex/struct__psx__image__operator.tex @@ -0,0 +1,106 @@ +\doxysection{\+\_\+psx\+\_\+image\+\_\+operator Struct Reference} +\label{struct__psx__image__operator}\index{\_psx\_image\_operator@{\_psx\_image\_operator}} + + +The image operator define. + + + + +{\ttfamily \#include $<$psx\+\_\+image\+\_\+plugin.\+h$>$} + +\doxysubsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +int($\ast$ \textbf{ read\+\_\+header\+\_\+info} )(const \textbf{ ps\+\_\+byte} $\ast$data, size\+\_\+t data\+\_\+len, \textbf{ psx\+\_\+image\+\_\+header} $\ast$header) +\item +int($\ast$ \textbf{ decode\+\_\+image\+\_\+data} )(\textbf{ psx\+\_\+image\+\_\+header} $\ast$header, const \textbf{ psx\+\_\+image} $\ast$image, \textbf{ psx\+\_\+image\+\_\+frame} $\ast$frame, int idx, \textbf{ ps\+\_\+byte} $\ast$buffer, size\+\_\+t buffer\+\_\+len) +\item +int($\ast$ \textbf{ release\+\_\+read\+\_\+header\+\_\+info} )(\textbf{ psx\+\_\+image\+\_\+header} $\ast$header) +\item +int($\ast$ \textbf{ write\+\_\+header\+\_\+info} )(const \textbf{ psx\+\_\+image} $\ast$image, \textbf{ image\+\_\+writer\+\_\+fn} func, void $\ast$param, float quality, \textbf{ psx\+\_\+image\+\_\+header} $\ast$header) +\item +int($\ast$ \textbf{ encode\+\_\+image\+\_\+data} )(\textbf{ psx\+\_\+image\+\_\+header} $\ast$header, const \textbf{ psx\+\_\+image} $\ast$image, \textbf{ psx\+\_\+image\+\_\+frame} $\ast$frame, int idx, const \textbf{ ps\+\_\+byte} $\ast$buffer, size\+\_\+t buffer\+\_\+len, int $\ast$ret) +\item +int($\ast$ \textbf{ release\+\_\+write\+\_\+header\+\_\+info} )(\textbf{ psx\+\_\+image\+\_\+header} $\ast$header) +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +The image operator define. + +\begin{DoxySeeAlso}{See also} +\doxyref{psx\+\_\+image\+\_\+register\+\_\+operator}{p.}{group__interface_gac2c1fc7d317f49ee5c246f9aff61e13a} \doxyref{psx\+\_\+image\+\_\+unregister\+\_\+operator}{p.}{group__interface_ga50213dff3b0bec9b77c059bb85126bed} +\end{DoxySeeAlso} + + +Definition at line 69 of file psx\+\_\+image\+\_\+plugin.\+h. + + + +\doxysubsection{Field Documentation} +\mbox{\label{struct__psx__image__operator_ad43beb69abe6dd4ea4eb0bfbeb9f8e76}} +\index{\_psx\_image\_operator@{\_psx\_image\_operator}!decode\_image\_data@{decode\_image\_data}} +\index{decode\_image\_data@{decode\_image\_data}!\_psx\_image\_operator@{\_psx\_image\_operator}} +\doxysubsubsection{decode\_image\_data} +{\footnotesize\ttfamily int($\ast$ \+\_\+psx\+\_\+image\+\_\+operator\+::decode\+\_\+image\+\_\+data) (\textbf{ psx\+\_\+image\+\_\+header} $\ast$header, const \textbf{ psx\+\_\+image} $\ast$image, \textbf{ psx\+\_\+image\+\_\+frame} $\ast$frame, int idx, \textbf{ ps\+\_\+byte} $\ast$buffer, size\+\_\+t buffer\+\_\+len)} + +Read a frame of raw data. + +Definition at line 73 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__operator_a1bb95a9c85e49747118a9e275d415afb}} +\index{\_psx\_image\_operator@{\_psx\_image\_operator}!encode\_image\_data@{encode\_image\_data}} +\index{encode\_image\_data@{encode\_image\_data}!\_psx\_image\_operator@{\_psx\_image\_operator}} +\doxysubsubsection{encode\_image\_data} +{\footnotesize\ttfamily int($\ast$ \+\_\+psx\+\_\+image\+\_\+operator\+::encode\+\_\+image\+\_\+data) (\textbf{ psx\+\_\+image\+\_\+header} $\ast$header, const \textbf{ psx\+\_\+image} $\ast$image, \textbf{ psx\+\_\+image\+\_\+frame} $\ast$frame, int idx, const \textbf{ ps\+\_\+byte} $\ast$buffer, size\+\_\+t buffer\+\_\+len, int $\ast$ret)} + +Write image data frames. + +Definition at line 80 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__operator_ad24e7780a840a4721ae96f8df0a7272e}} +\index{\_psx\_image\_operator@{\_psx\_image\_operator}!read\_header\_info@{read\_header\_info}} +\index{read\_header\_info@{read\_header\_info}!\_psx\_image\_operator@{\_psx\_image\_operator}} +\doxysubsubsection{read\_header\_info} +{\footnotesize\ttfamily int($\ast$ \+\_\+psx\+\_\+image\+\_\+operator\+::read\+\_\+header\+\_\+info) (const \textbf{ ps\+\_\+byte} $\ast$data, size\+\_\+t data\+\_\+len, \textbf{ psx\+\_\+image\+\_\+header} $\ast$header)} + +Create a image reader header. + +Definition at line 71 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__operator_aac2971af3561f4e0302bbcd3598e18fd}} +\index{\_psx\_image\_operator@{\_psx\_image\_operator}!release\_read\_header\_info@{release\_read\_header\_info}} +\index{release\_read\_header\_info@{release\_read\_header\_info}!\_psx\_image\_operator@{\_psx\_image\_operator}} +\doxysubsubsection{release\_read\_header\_info} +{\footnotesize\ttfamily int($\ast$ \+\_\+psx\+\_\+image\+\_\+operator\+::release\+\_\+read\+\_\+header\+\_\+info) (\textbf{ psx\+\_\+image\+\_\+header} $\ast$header)} + +Release reader resources. + +Definition at line 75 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__operator_aeecc5bc533d285593e35a8c07fa7ba3a}} +\index{\_psx\_image\_operator@{\_psx\_image\_operator}!release\_write\_header\_info@{release\_write\_header\_info}} +\index{release\_write\_header\_info@{release\_write\_header\_info}!\_psx\_image\_operator@{\_psx\_image\_operator}} +\doxysubsubsection{release\_write\_header\_info} +{\footnotesize\ttfamily int($\ast$ \+\_\+psx\+\_\+image\+\_\+operator\+::release\+\_\+write\+\_\+header\+\_\+info) (\textbf{ psx\+\_\+image\+\_\+header} $\ast$header)} + +Release writer resources. + +Definition at line 82 of file psx\+\_\+image\+\_\+plugin.\+h. + +\mbox{\label{struct__psx__image__operator_a596a03722fa7bad5be660b351c35d7ed}} +\index{\_psx\_image\_operator@{\_psx\_image\_operator}!write\_header\_info@{write\_header\_info}} +\index{write\_header\_info@{write\_header\_info}!\_psx\_image\_operator@{\_psx\_image\_operator}} +\doxysubsubsection{write\_header\_info} +{\footnotesize\ttfamily int($\ast$ \+\_\+psx\+\_\+image\+\_\+operator\+::write\+\_\+header\+\_\+info) (const \textbf{ psx\+\_\+image} $\ast$image, \textbf{ image\+\_\+writer\+\_\+fn} func, void $\ast$param, float quality, \textbf{ psx\+\_\+image\+\_\+header} $\ast$header)} + +Create a image writer header. + +Definition at line 77 of file psx\+\_\+image\+\_\+plugin.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/images/\textbf{ psx\+\_\+image\+\_\+plugin.\+h}\end{DoxyCompactItemize} diff --git a/doc/latex/tabu_doxygen.sty b/doc/latex/tabu_doxygen.sty new file mode 100644 index 0000000..60fd7e8 --- /dev/null +++ b/doc/latex/tabu_doxygen.sty @@ -0,0 +1,2557 @@ +%% +%% This is file `tabu.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tabu.dtx (with options: `package') +%% +%% This is a generated file. +%% Copyright (FC) 2010-2011 - lppl +%% +%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars +%% +%% ********************************************************************************************** +%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal +%% \begin{tabu} to { preamble } => target specified +%% \begin{tabu} spread { preamble } => target relative to the ``natural width'' +%% +%% tabu works in text and in math modes. +%% +%% X columns: automatic width adjustment + horizontal and vertical alignment +%% \begin{tabu} { X[4c] X[1c] X[-2ml] } +%% +%% Horizontal lines and / or leaders: +%% \hline\hline => double horizontal line +%% \firsthline\hline => for nested tabulars +%% \lasthline\hline => for nested tabulars +%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) +%% Automatic lines / leaders : +%% \everyrow{\hline\hline} +%% +%% Vertical lines and / or leaders: +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } +%% +%% Fixed vertical spacing adjustment: +%% \extrarowheight= \extrarowdepth= +%% or: \extrarowsep= => may be prefixed by \global +%% +%% Dynamic vertical spacing adjustment: +%% \abovetabulinesep= \belowtabulinesep= +%% or: \tabulinesep= => may be prefixed by \global +%% +%% delarray.sty shortcuts: in math and text modes +%% \begin{tabu} .... \({ preamble }\) +%% +%% Algorithms reports: +%% \tracingtabu=1 \tracingtabu=2 +%% +%% ********************************************************************************************** +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% +%% This work consists of the main source file tabu.dtx +%% and the derived files +%% tabu.sty, tabu.pdf, tabu.ins +%% +%% tabu : Flexible LaTeX tabulars +%% lppl copyright 2010-2011 by FC +%% + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] +\RequirePackage{array}[2008/09/09] +\RequirePackage{varwidth}[2009/03/30] +\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} +\let\tabu@AtEnd\@empty +\def\TMP@EnsureCode#1={% + \edef\tabu@AtEnd{\tabu@AtEnd + \catcode#1 \the\catcode#1}% + \catcode#1=% +}% \TMP@EnsureCode +\TMP@EnsureCode 33 = 12 % ! +\TMP@EnsureCode 58 = 12 % : (for siunitx) +\TMP@EnsureCode124 = 12 % | +\TMP@EnsureCode 36 = 3 % $ = math shift +\TMP@EnsureCode 38 = 4 % & = tab alignment character +\TMP@EnsureCode 32 = 10 % space +\TMP@EnsureCode 94 = 7 % ^ +\TMP@EnsureCode 95 = 8 % _ +%% Constants -------------------------------------------------------- +\newcount \c@taburow \def\thetaburow {\number\c@taburow} +\newcount \tabu@nbcols +\newcount \tabu@cnt +\newcount \tabu@Xcol +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcount \tabu@alloc \tabu@alloc=\m@ne +\newcount \tabu@nested +\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} +\newdimen \tabu@target +\newdimen \tabu@spreadtarget +\newdimen \tabu@naturalX +\newdimen \tabucolX +\let\tabu@DELTA \@tempdimc +\let\tabu@thick \@tempdima +\let\tabu@on \@tempdimb +\let\tabu@off \@tempdimc +\newdimen \tabu@Xsum +\newdimen \extrarowdepth +\newdimen \abovetabulinesep +\newdimen \belowtabulinesep +\newdimen \tabustrutrule \tabustrutrule \z@ +\newtoks \tabu@thebody +\newtoks \tabu@footnotes +\newsavebox \tabu@box +\newsavebox \tabu@arstrutbox +\newsavebox \tabu@hleads +\newsavebox \tabu@vleads +\newif \iftabu@colortbl +\newif \iftabu@siunitx +\newif \iftabu@measuring +\newif \iftabu@spread +\newif \iftabu@negcoef +\newif \iftabu@everyrow +\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} +\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} +\newif \iftabu@long +\newif \iftabuscantokens +\def\tabu@rescan {\tabu@verbatim \scantokens } +%% Utilities (for internal usage) ----------------------------------- +\def\tabu@gobblespace #1 {#1} +\def\tabu@gobbletoken #1#2{#1} +\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} +\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble + \else\ifx \@sptoken\@let@token + \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX + \fi\fi +}% \tabu@gobblex +\def\tabu@X{^^J} +{\obeyspaces +\global\let\tabu@spxiii= % saves an active space (for \ifx) +\gdef\tabu@@spxiii{ }} +\def\tabu@ifenvir {% only for \multicolumn + \expandafter\tabu@if@nvir\csname\@currenvir\endcsname +}% \tabu@ifenvir +\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else + \ifx\longtabu#1first\else + second\fi\fi oftwo\endcsname +}% \tabu@ifenvir +\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} +{\catcode`\&=3 +\gdef\tabu@strtrim #1{% #1 = control sequence to trim + \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi + \let\tabu@c@l@r \@empty \let#1\@empty + \else \expandafter \tabu@trimspaces #1\@nnil + \fi +}% \tabu@strtrim +\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% +\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} +\gdef\tabu@lastspace #1{\def #3{#1}% + \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi + \tabu@trimspaces #1\@nnil} +}% \catcode +\def\tabu@sanitizearg #1#2{{% + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% + \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% +}% \tabu@sanitizearg +\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% + \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! +}% \tabu@textbar +\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} +\def\tabu@everyrow@egroup{% + \iftabu@everyrow \expandafter \endgroup \the\toks@ + \else \ifnum0=`{\fi}% + \fi +}% \tabu@everyrow@egroup +\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \z@}% +}% \tabu@arstrut +\def\tabu@rearstrut {% + \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax + \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax + \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima + \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi + \tabu@mkarstrut + \fi +}% \tabu@rearstrut +\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} +\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox + \hbox to\z@{\hbox to\z@{\hss + {\tabu@DBG{cyan}\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \z@ + width \tabustrutrule}\kern-\tabustrutrule + {\tabu@DBG{pink}\vrule + height \z@ + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \tabustrutrule}}}% +}% \tabu@DBG@arstrut +\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ + \@nextchar}}% +\def\tabu@savedecl{\ifcat$\d@llarend\else + \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode +}% \tabu@savedecl +\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} +\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } +\let\tabu@trialh@@k \@empty +\def\tabu@nowrite #1#{{\afterassignment}\toks@} +\let\tabu@write\write +\let\tabu@immediate\immediate +\def\tabu@WRITE{\begingroup + \def\immediate\write{\aftergroup\endgroup + \tabu@immediate\tabu@write}% +}% \tabu@WRITE +\expandafter\def\expandafter\tabu@GenericError\expandafter{% + \expandafter\tabu@WRITE\GenericError} +\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} +\def\tabu@noxfootnote [#1]{\@gobble} +\def\tabu@nocolor #1#{\@gobble} +\newcommand*\tabu@norowcolor[2][]{} +\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% + \futurelet\@let@token \tabu@m@ybesiunitx} +\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% + \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi + \tabu@temp}% \tabu@m@ybesiunitx +}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname +\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% +%% Fixed vertical spacing adjustment: \extrarowsep ------------------ +\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% + \iftabu@everyrow \aftergroup\tabu@Gextra + \else \aftergroup\tabu@n@Gextra + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra +}% \extrarowsep +\def\tabu@extra {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setextrasep \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extra +\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} +\def\tabu@extr@ #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extr@ +\def\tabu@setextrasep {\extrarowheight=\extrarowdepth + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth +}% \tabu@setextrasep +\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} +\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} +\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} +\let\tabu@C@extra \z@ +\let\tabu@G@extra \@empty +%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- +\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% + \iftabu@everyrow \aftergroup\tabu@Glinesep + \else \aftergroup\tabu@n@Glinesep + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep +}% \tabulinesep +\def\tabu@linesep {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setlinesep \abovetabulinesep + \fi \tabu@temp}% +}% \tabu@linesep +\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} +\def\tabu@sets@p #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep + \fi \tabu@temp}% +}% \tabu@sets@p +\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep +}% \tabu@setlinesep +\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} +\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} +\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} +\let\tabu@C@linesep \z@ +\let\tabu@G@linesep \@empty +%% \global\extrarowsep and \global\tabulinesep ------------------- +\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% + \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% +}% \tabu@Gsave +\def\tabu@Grestore#1#2{% + \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax + \ifcat$\the\toks\currentgrouplevel$\else + \global\let#1\@empty \global\let#2\z@ + \the\toks\currentgrouplevel + \fi +}% \tabu@Grestore +%% Setting code for every row --------------------------------------- +\newcommand*\everyrow{\tabu@everyrow@bgroup + \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop +}% \everyrow +\def\tabu@evrstartstop {\@ifnextchar^% + {\afterassignment \tabu@evrstartstop \tabu@stop=}% + {\ifx ^\@let@token + \afterassignment\tabu@evrstartstop \tabu@start=% + \else \afterassignment\tabu@everyr@w \toks@ + \fi}% +}% \tabu@evrstartstop +\def\tabu@everyr@w {% + \xdef\tabu@everyrow{% + \noexpand\tabu@everyrowfalse + \let\noalign \relax + \noexpand\tabu@rowfontreset + \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors + \let\noexpand\tabu@docline \noexpand\tabu@docline@evr + \the\toks@ + \noexpand\tabu@evrh@@k + \noexpand\tabu@rearstrut + \global\advance\c@taburow \@ne}% + \iftabu@everyrow \toks@\expandafter + {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% + \else \xdef\tabu@evr@G{\the\toks@}% + \fi + \tabu@everyrow@egroup +}% \tabu@everyr@w +\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only +\tabu@evr{} +%% line style and leaders ------------------------------------------- +\newcommand*\newtabulinestyle [1]{% + {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% +}% \newtabulinestyle +\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% + \tabu@sanitizearg {#1}\@tempa + \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi + \global\expandafter\let + \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi +}% \tabu@newlinestyle +\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% + \iftabu@everyrow + \toks@\expandafter{\expandafter \def \expandafter + \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% + \gdef\tabu@ls@{\tabu@ls@L}% + \else + \global\let\tabu@ls@G \tabu@thestyle + \gdef\tabu@ls@{\tabu@ls@G}% + \fi + \tabu@everyrow@egroup +}% \tabulinestyle +\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} +\def\tabu@rulecolor #1{\toks@{}% + \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% + \tabu@temp + \tabu@rulearc +}% \tabu@rulecolor +\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp + \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% + \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% + \fi + \tabu@temp +}% \tabu@ruledrsc@ +\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} +\def\tabu@rule@drsc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% + \else \toks@{\def\CT@drsc@{\color #1{#2}}}% + \fi + \else + \ifx \\#1#2\\\global\let\CT@drsc@ \relax + \else \gdef\CT@drsc@{\color #1{#2}}% + \fi + \fi + \tabu@rulearc +}% \tabu@rule@drsc@ +\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} +\def\tabu@rule@arc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% + \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% + \fi + \toks@\expandafter{\the\toks@ + \let\tabu@arc@L \CT@arc@ + \let\tabu@drsc@L \CT@drsc@ + \ignorespaces}% + \else + \ifx \\#1#2\\\gdef\CT@arc@{}% + \else \gdef\CT@arc@{\color #1{#2}}% + \fi + \global\let\tabu@arc@G \CT@arc@ + \global\let\tabu@drsc@G \CT@drsc@ + \fi + \tabu@everyrow@egroup +}% \tabu@rule@arc@ +\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} +\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} +\def\tabu@rowc@lors #1#2#3{% + \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil + \@defaultunits \tabu@start =\number0#1\relax \@nnil + \ifnum \count@<\tw@ \count@=\tw@ \fi + \advance\tabu@start \m@ne + \ifnum \tabu@start<\z@ \tabu@start \z@ \fi + \tabu@rowcolorseries #3\in@..\in@ \@nnil +}% \tabu@rowcolors +\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% + \ifx \in@#1\relax + \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% + \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ + \fi + \else + \ifx \\#2\\\tabu@rowcolorserieserror \fi + \tabu@sanitizearg{#1}\tabu@temp + \tabu@sanitizearg{#2}\@tempa + \advance\count@ \m@ne + \iftabu@everyrow + \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% + \ifnum ##2=\c@taburow + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi + \ifnum \c@taburow<##2 \else + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}\fi}% + }\edef\x{\noexpand\tabu@rc@ {\the\count@} + {\the\tabu@start} + {\tabu@temp} + {\@tempa}% + }\x + \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% + \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% + \else % inside \noalign + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% + \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% + \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}}% + }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x + \global\let\tabu@rc@G \tabu@rc@ + \fi + \fi + \tabu@everyrow@egroup +}% \tabu@rowcolorseries +\tabuDisableCommands {\let\tabu@rc@ \@empty } +\def\tabu@rowcolorserieserror {\PackageError{tabu} + {Invalid syntax for \string\taburowcolors + \MessageBreak Please look at the documentation!}\@ehd +}% \tabu@rowcolorserieserror +\newcommand*\tabureset {% + \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ + \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% +}% \tabureset +%% Parsing the line styles ------------------------------------------ +\def\tabu@getline #1{\begingroup + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa + \let\tabu@thestyle \relax + \ifcsname tabu@linestyle@\@tempa \endcsname + \edef\tabu@thestyle{\endgroup + \def\tabu@thestyle{\expandafter\noexpand + \csname tabu@linestyle@\@tempa\endcsname}% + }\tabu@thestyle + \else \expandafter\tabu@definestyle \tabu@temp \@nil + \fi +}% \tabu@getline +\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter + \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen + \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined + \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs + \def\tabu@temp{\tabu@getparam{thick}}% + \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% + \fi + {% + \let\tabu@ \relax + \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) + \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% + \expandafter}\expandafter + \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) + \def\;{\def\:}% + \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) + \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) + \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi + \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi + \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi + \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen + \tabu@on \tabulineon \fi\fi + \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen + \tabu@off \tabulineoff \fi\fi + \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi + \in@true % + \else \in@false % + \fi + \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% + \else \edef\tabu@thick{\the\tabu@thick}% + \fi + \edef \tabu@thestyle ##1##2{\endgroup + \def\tabu@thestyle{% + \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} + {\the\tabu@on}{##1} + {\the\tabu@off}{##2}% + \else \noexpand\tabu@rulesstyle + {##1\vrule width \tabu@thick}% + {##1\leaders \hrule height \tabu@thick \hfil}% + \fi}% + }\expandafter \expandafter + \expandafter \tabu@thestyle \expandafter + \expandafter \expandafter + {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% +}% \tabu@definestyle +{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active + \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} + \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} +}% \catcode +\def\tabu@oxiii #1{% + \ifcase \ifx n#1\z@ \else + \ifx f#1\@ne\else + \tw@ \fi\fi + \expandafter\tabu@onxiii + \or \expandafter\tabu@ofxiii + \else o% + \fi#1}% +\def\tabu@onxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx \tabu@spxiii#2\@ne\else + \tw@ \fi\fi\fi + \tabu@getparam{on}#2\expandafter\@gobble + \or \expandafter\tabu@onxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}}% +\def\tabu@ofxiii #1#2{% + \ifx #2f\expandafter\tabu@offxiii + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@offxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx\tabu@spxiii#2\@ne \else + \tw@ \fi\fi\fi + \tabu@getparam{off}#2\expandafter\@gobble + \or \expandafter\tabu@offxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} +\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef + \ifx \tabu@#1\else % no more spec + \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi +}% \tabu@getcolor +\def\tabu@getc@l@r #1\tabu@ {% + \def\tabu@temp{#1}\tabu@strtrim \tabu@temp + \ifx \tabu@temp\@empty + \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists + \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r + \else \let\tabu@c@lon \tabu@c@l@r + \fi + %\else \tabu@warncolour{\tabu@temp}% + \fi%\fi + \tabu@ % next spec +}% \tabu@getc@l@r +\def\tabu@warncolour #1{\PackageWarning{tabu} + {Color #1 is not defined. Default color used}% +}% \tabu@warncolour +\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% + \ifx \tabu@leaders\tabu@leaders@G \else + \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi +}% \tabu@leadersstyle +\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined + \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% +}% \tabu@rulesstyle +%% The leaders boxes ------------------------------------------------ +\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color + {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor + {% % but the leaders boxes should have colors ! + \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% + \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% + \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thehleaders \tabu@theleaders + }% + {% + \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% + \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% + \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thevleaders \tabu@theleaders + }% + \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% + }% +}% \tabu@LEADERS +\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} +\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color + \global\setbox \tabu@leads=\@box{% + {#3\tabu@therule{#1}{#2}}% + \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi + {#3\tabu@therule{#1}{#2}}}% + \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss + {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% + \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% + {##1\tabu@therule{#1}{#2}}% + \xleaders \copy\tabu@leads \@ss + \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% + }\tabu@theleaders{#3}% +}% \tabu@l@@d@rs +%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- +\newcommand*\tabu {\tabu@longfalse + \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% + \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endtabu*\endcsname{\endtabu}% + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {tabu} +\let\tabu@tabular \tabular % +\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} +\newcommand*\longtabu {\tabu@longtrue + \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi + \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% + \LTchunksize=\@M + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% + \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {longtabu} +\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} +\def\tabu@nolongtabu{\PackageError{tabu} + {longtabu requires the longtable package}\@ehd} +%% Read the target and then : \tabular or \@array ------------------ +\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } +\def\tabu@sett@rget {\tabu@target \z@ + \ifcase \ifx \bgroup\@let@token \z@ \else + \ifx \@sptoken\@let@token \@ne \else + \if t\@let@token \tw@ \else + \if s\@let@token \thr@@\else + \z@\fi\fi\fi\fi + \expandafter\tabu@begin + \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget + \or \expandafter\tabu@to + \or \expandafter\tabu@spread + \fi +}% \tabu@sett@rget +\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} +\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} +\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } +\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } +\def\tabu@linegoalt@rget {% + \ifx \tabu@temp\LNGL@setlinegoal + \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal + \tabu@begin +}% \tabu@linegoalt@rget +\def\tabu@begin #1#{% + \iftabu@measuring \expandafter\tabu@nestedmeasure \fi + \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty + \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% + \fi + \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil +}% \tabu@begin +\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup + \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% + \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% +}% \tabu@tabu@ +\def\tabu@nestedmeasure {% + \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax + \tabu@spreadtrue + \else \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}% + \expandafter\tabu@collectbody\expandafter\tabu@quickrule + \expandafter\endgroup + \fi +}% \tabu@nestedmeasure +\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} +%% \tabu@setup \tabu@init \tabu@indent +\def\tabu@setup{\tabu@alloc@ + \ifcase \tabu@nested + \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ + \let\tabu@afterendpar \par + \fi\fi\fi + \def\tabu@aligndefault{c}\tabu@init \tabu@indent + \else % + \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth + \fi + \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined + \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% + \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... + \let\@endpbox \tabu@endpbox % idem " " " " " " + \let\@tabarray \tabu@tabarray % idem " " " " " " + \tabu@setcleanup \tabu@setreset +}% \tabu@setup +\def\tabu@init{\tabu@starttimer \tabu@measuringfalse + \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% + \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline + \let\firstline \tabu@firstline \let\lastline \tabu@lastline + \let\hline \tabu@hline \let\@xhline \tabu@xhline + \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox + \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi + \tabu@trivlist % + \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext + \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering + \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft + \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering + \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft + \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont + \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x + \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar + \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok + \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn + \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! + \let\tabu@endpbox \@endpbox % idem " " " " " " " + \let\tabu@tabarray \@tabarray % idem " " " " " " " + \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) + \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi +}% \tabu@init +\def\tabu@indent{% correction for indentation + \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget + \everypar\expandafter{% + \the\everypar\everypar\expandafter{\the\everypar}% + \setbox\z@=\lastbox + \ifdim\wd\z@>\z@ \edef\tabu@thetarget + {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi + \box\z@}% + \fi\fi +}% \tabu@indent +\def\tabu@setcleanup {% saves last global assignments + \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax + \def\tabu@aftergroupcleanup{% + \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% + \else + \def\tabu@aftergroupcleanup{% + \aftergroup\aftergroup\aftergroup\tabu@cleanup + \let\tabu@aftergroupcleanup \relax}% + \fi + \let\tabu@arc@Gsave \tabu@arc@G + \let\tabu@arc@G \tabu@arc@L % + \let\tabu@drsc@Gsave \tabu@drsc@G + \let\tabu@drsc@G \tabu@drsc@L % + \let\tabu@ls@Gsave \tabu@ls@G + \let\tabu@ls@G \tabu@ls@L % + \let\tabu@rc@Gsave \tabu@rc@G + \let\tabu@rc@G \tabu@rc@L % + \let\tabu@evr@Gsave \tabu@evr@G + \let\tabu@evr@G \tabu@evr@L % + \let\tabu@celllalign@save \tabu@celllalign + \let\tabu@cellralign@save \tabu@cellralign + \let\tabu@cellleft@save \tabu@cellleft + \let\tabu@cellright@save \tabu@cellright + \let\tabu@@celllalign@save \tabu@@celllalign + \let\tabu@@cellralign@save \tabu@@cellralign + \let\tabu@@cellleft@save \tabu@@cellleft + \let\tabu@@cellright@save \tabu@@cellright + \let\tabu@rowfontreset@save \tabu@rowfontreset + \let\tabu@@rowfontreset@save\tabu@@rowfontreset + \let\tabu@rowfontreset \@empty + \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset + \edef\c@taburow@save {\the\c@taburow}% + \edef\tabu@naturalX@save {\the\tabu@naturalX}% + \let\tabu@naturalXmin@save \tabu@naturalXmin + \let\tabu@naturalXmax@save \tabu@naturalXmax + \let\tabu@mkarstrut@save \tabu@mkarstrut + \edef\tabu@clarstrut{% + \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax + \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax + \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% +}% \tabu@setcleanup +\def\tabu@cleanup {\begingroup + \globaldefs\@ne \tabu@everyrowtrue + \let\tabu@arc@G \tabu@arc@Gsave + \let\CT@arc@ \tabu@arc@G + \let\tabu@drsc@G \tabu@drsc@Gsave + \let\CT@drsc@ \tabu@drsc@G + \let\tabu@ls@G \tabu@ls@Gsave + \let\tabu@ls@ \tabu@ls@G + \let\tabu@rc@G \tabu@rc@Gsave + \let\tabu@rc@ \tabu@rc@G + \let\CT@do@color \relax + \let\tabu@evr@G \tabu@evr@Gsave + \let\tabu@celllalign \tabu@celllalign@save + \let\tabu@cellralign \tabu@cellralign@save + \let\tabu@cellleft \tabu@cellleft@save + \let\tabu@cellright \tabu@cellright@save + \let\tabu@@celllalign \tabu@@celllalign@save + \let\tabu@@cellralign \tabu@@cellralign@save + \let\tabu@@cellleft \tabu@@cellleft@save + \let\tabu@@cellright \tabu@@cellright@save + \let\tabu@rowfontreset \tabu@rowfontreset@save + \let\tabu@@rowfontreset \tabu@@rowfontreset@save + \tabu@naturalX =\tabu@naturalX@save + \let\tabu@naturalXmax \tabu@naturalXmax@save + \let\tabu@naturalXmin \tabu@naturalXmin@save + \let\tabu@mkarstrut \tabu@mkarstrut@save + \c@taburow =\c@taburow@save + \ifcase \tabu@nested \tabu@alloc \m@ne\fi + \endgroup % + \ifcase \tabu@nested + \the\tabu@footnotes \global\tabu@footnotes{}% + \tabu@afterendpar \tabu@elapsedtime + \fi + \tabu@clarstrut + \everyrow\expandafter {\tabu@evr@G}% +}% \tabu@cleanup +\let\tabu@afterendpar \relax +\def\tabu@setreset {% + \edef\tabu@savedparams {% \relax for \tabu@message@save + \ifmmode \col@sep \the\arraycolsep + \else \col@sep \the\tabcolsep \fi \relax + \arrayrulewidth \the\arrayrulewidth \relax + \doublerulesep \the\doublerulesep \relax + \extratabsurround \the\extratabsurround \relax + \extrarowheight \the\extrarowheight \relax + \extrarowdepth \the\extrarowdepth \relax + \abovetabulinesep \the\abovetabulinesep \relax + \belowtabulinesep \the\belowtabulinesep \relax + \def\noexpand\arraystretch{\arraystretch}% + \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% + \begingroup + \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu + \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi + \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi + \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L + \expandafter \endgroup \expandafter + \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena + \let\tabu@arc@G \tabu@arc@L + \let\tabu@drsc@G \tabu@drsc@L + \let\tabu@ls@G \tabu@ls@L + \let\tabu@rc@G \tabu@rc@L + \let\tabu@evr@G \tabu@evr@L}% + \def\tabu@reset{\tabu@savedparams + \tabu@everyrowtrue \c@taburow \z@ + \let\CT@arc@ \tabu@arc@L + \let\CT@drsc@ \tabu@drsc@L + \let\tabu@ls@ \tabu@ls@L + \let\tabu@rc@ \tabu@rc@L + \global\tabu@alloc \tabu@alloc@save + \everyrow\expandafter{\tabu@evr@L}}% +}% \tabu@reset +\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} +\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} +%% The Rewriting Process ------------------------------------------- +\def\tabu@newcolumntype #1{% + \expandafter\tabu@new@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@newcolumntype +\def\tabu@new@columntype #1#2#3{% + \def#1##1#3{\NC@{##1}}% + \let#2\relax \newcommand*#2% +}% \tabu@new@columntype +\def\tabu@privatecolumntype #1{% + \expandafter\tabu@private@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\expandafter\endcsname + \csname tabu@NC@find@\string#1\expandafter\endcsname + \csname tabu@NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@privatecolumntype +\def\tabu@private@columntype#1#2#3#4{% + \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% + \tabu@new@columntype#3#4% +}% \tabu@private@columntype +\let\tabu@privatecolumns \@empty +\newcommand*\tabucolumn [1]{\expandafter \def \expandafter + \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns + \NC@do #1}}% +\let\tabu@highprioritycolumns \@empty +%% The | ``column'' : rewriting process -------------------------- +\tabu@privatecolumntype |{\tabu@rewritevline} +\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% + \expandafter \NC@find \tabu@rewritten} +\def\tabu@lines #1{% + \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi + \NC@list\expandafter{\the\NC@list \NC@do #1}% +}% \tabu@lines@ +\def\tabu@vlinearg #1{% + \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% + \else\tabu@getline {#1}% + \fi + \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% + }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% + \expandafter \tabu@keepls \tabu@thestyle \@nil +}% \tabu@vlinearg +\def\tabu@keepls #1\@nil{% + \ifcat $\@cdr #1\@nil $% + \ifx \relax#1\else + \ifx \tabu@ls@#1\else + \let#1\relax + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@savels\noexpand#1}\fi\fi\fi +}% \tabu@keepls +\def\tabu@thevline {\begingroup + \ifdefined\tabu@leaders + \setbox\@tempboxa=\vtop to\dimexpr + \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% + \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox + \box\@tempboxa + \else + \tabu@thevrule + \fi \endgroup +}% \tabu@thevline +\def\tabu@savels #1{% + \expandafter\let\csname\string#1\endcsname #1% + \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset + \tabu@resetls#1}}% +\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% +%% \multicolumn inside tabu environment ----------------------------- +\tabu@newcolumntype \tabu@rewritemulticolumn{% + \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \tabu@savedecl + \tabu@privatecolumns + \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% + \let\tabu@savels \relax + \NC@find +}% \tabu@rewritemulticolumn +\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} +\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} +\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup + \tabu@everyrowtrue + \NC@list{\NC@do \tabu@rewritemulticolumn}% + \expandafter\@gobbletwo % gobbles \multispan{#1} + \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% + {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi + {#3}}% +}% \tabu@multic@lumn +%% The X column(s): rewriting process ----------------------------- +\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} +\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } +\def\tabu@siunitx #1{\@ifnextchar \bgroup + {\tabu@rewriteX@Ss{#1}} + {\tabu@nosiunitx{#1}}} +\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% + \@defaultunits \let\tabu@temp =#2\relax\@nnil + \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi + \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% + }\expandafter\NC@find \the\@temptokena \relax + }\expandafter\NC@rewrite@S \@gobble #2\relax + \else \tabu@siunitxerror + \fi + \expandafter \NC@find \tabu@rewritten +}% \tabu@rewriteX@Ss +\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! + \MessageBreak X column can only embed siunitx S or s columns}\@ehd +}% \tabu@siunitxerror +\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% + \iftabu@measuring + \else \tabu@measuringtrue % first X column found in the preamble + \let\@halignto \relax \let\tabu@halignto \relax + \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ + \else \tabu@spreadtarget \z@ \fi + \ifdim \tabu@target=\z@ + \setlength\tabu@target \tabu@thetarget + \tabu@message{\tabu@message@defaulttarget}% + \else \tabu@message{\tabu@message@target}\fi + \fi +}% \tabu@rewriteX +\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax + \def\tabu@rewritten{l}} +\def\tabu@Xarg #1#2#3{% + \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty + \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty + \ifx\\#1\\% + \def\tabu@rewritten{p}\tabucolX \p@ % + \else + \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ + \tabu@Xparse {}#1\relax + \fi + \tabu@Xrewritten{#2}{#3}% +}% \tabu@Xarg +\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} +\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} +\def\tabu@Xtest{% + \ifcase \ifx \relax\@let@token \z@ \else + \if ,\@let@token \m@ne\else + \if p\@let@token 1\else + \if m\@let@token 2\else + \if b\@let@token 3\else + \if l\@let@token 4\else + \if c\@let@token 5\else + \if r\@let@token 6\else + \if j\@let@token 7\else + \if L\@let@token 8\else + \if C\@let@token 9\else + \if R\@let@token 10\else + \if J\@let@token 11\else + \ifx \@sptoken\@let@token 12\else + \if .\@let@token 13\else + \if -\@let@token 13\else + \ifcat $\@let@token 14\else + 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \or \tabu@Xtype {p}% + \or \tabu@Xtype {m}% + \or \tabu@Xtype {b}% + \or \tabu@Xalign \raggedright\relax + \or \tabu@Xalign \centering\relax + \or \tabu@Xalign \raggedleft\relax + \or \tabu@Xalign \tabu@justify\relax + \or \tabu@Xalign \RaggedRight\raggedright + \or \tabu@Xalign \Centering\centering + \or \tabu@Xalign \RaggedLeft\raggedleft + \or \tabu@Xalign \justifying\tabu@justify + \or \expandafter \tabu@Xparsespace + \or \expandafter \tabu@Xcoef + \or \expandafter \tabu@Xm@th + \or \tabu@Xcoef{}% + \else\expandafter \tabu@Xparse + \fi +}% \tabu@Xtest +\def\tabu@Xalign #1#2{% + \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} + {Duplicate horizontal alignment specification}\fi + \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax + \else \def\tabu@Xlcr{#2}\let#2\relax\fi + \expandafter\tabu@Xparse +}% \tabu@Xalign +\def\tabu@Xtype #1{% + \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} + {Duplicate vertical alignment specification}\fi + \def\tabu@rewritten{#1}\expandafter\tabu@Xparse +}% \tabu@Xtype +\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% + \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi +}% \tabu@Xcoef +\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ + \tabu@Xparse{}% +}% \tabu@Xc@ef +\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} +\def\tabu@Xd@sp{\let\tabu@Xmath=$% + \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% + \expandafter\tabu@Xparse + \else \expandafter\tabu@Xparse\expandafter{\expandafter}% + \fi +}% \tabu@Xd@sp +\def\tabu@Xrewritten {% + \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi + \ifdim \tabucolX<\z@ \tabu@negcoeftrue + \else\ifdim \tabucolX=\z@ \tabucolX \p@ + \fi\fi + \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% + \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% + \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% + >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% + \tabu@rewritten {\tabu@hsize \tabu@temp}% + <{##2\ifx$\tabu@Xmath$\fi}}% + }\tabu@rewritten +}% \tabu@Xrewritten +\def\tabu@hsize #1#2{% + \ifdim #2\p@<\z@ + \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else + \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi + \fi + \else #2\tabucolX + \fi +}% \tabu@hsize +%% \usetabu and \preamble: rewriting process --------------------- +\tabu@privatecolumntype \usetabu [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\let\tabu@rewriteX \tabu@rewriteXrestore + \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% + \fi +}% \NC@rewrite@\usetabu +\tabu@privatecolumntype \preamble [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% + \fi +}% \NC@rewrite@\preamble +%% Controlling the rewriting process ------------------------------- +\tabu@newcolumntype \tabu@rewritefirst{% + \iftabu@long \aftergroup \tabu@longpream % + \else \aftergroup \tabu@pream + \fi + \let\tabu@ \relax \let\tabu@hsize \relax + \let\tabu@Xcoefs \@empty \let\tabu@savels \relax + \tabu@Xcol \z@ \tabu@cnt \tw@ + \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse + \global\setbox\@arstrutbox \box\@arstrutbox + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \NC@list\expandafter{\the\NC@list \NC@do X}% + \iftabu@siunitx % + \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi + \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% + \expandafter\def\expandafter\tabu@NC@list\expandafter{% + \the\expandafter\NC@list \tabu@NC@list}% % * | X S + \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu + \expandafter \NC@do \expandafter\preamble + \the\NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \tabu@savedecl + \tabu@privatecolumns + \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle +}% NC@rewrite@\tabu@rewritefirst +\tabu@newcolumntype \tabu@rewritemiddle{% + \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast +}% \NC@rewrite@\tabu@rewritemiddle +\tabu@newcolumntype \tabu@rewritelast{% + \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne + \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \else \let\tabu@prev\tabu@temp + \fi + \ifcase \tabu@cnt \expandafter\tabu@endrewrite + \else \expandafter\NC@find \expandafter\tabu@rewritemiddle + \fi +}% \NC@rewrite@\tabu@rewritelast +%% Choosing the strategy -------------------------------------------- +\def\tabu@endrewrite {% + \let\tabu@temp \NC@find + \ifx \@arrayright\relax \let\@arrayright \@empty \fi + \count@=% + \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print + \iftabu@measuring + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@target \csname tabu@\the\tabu@nested.T\endcsname + \tabucolX \csname tabu@\the\tabu@nested.X\endcsname + \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% + \fi + \else\iftabu@measuring 4 % X columns + \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer + \tabu@target \the\tabu@target + \tabu@spreadtarget \the\tabu@spreadtarget}% + \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% + \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% + \let\tabu@Xcoefs \relax + \else\ifcase\tabu@nested \thr@@ % outer, no X + \global\let\tabu@afterendpar \relax + \else \@ne % inner, no X, outer in mode 1 or 2 + \fi + \ifdefined\tabu@usetabu + \else \ifdim\tabu@target=\z@ + \else \let\tabu@temp \tabu@extracolsep + \fi\fi + \fi + \fi + \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% + \tabu@temp +}% \tabu@endrewrite +\def\tabu@extracolsep{\@defaultunits \expandafter\let + \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil + \ifx \tabu@temp\@sptoken + \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep + \else + \edef\tabu@temp{\noexpand\NC@find + \if |\noexpand\tabu@temp @% + \else\if !\noexpand\tabu@temp @% + \else !% + \fi\fi + {\noexpand\extracolsep\noexpand\@flushglue}}% + \fi + \tabu@temp +}% \tabu@extrac@lsep +%% Implementing the strategy ---------------------------------------- +\long\def\tabu@pream #1\@preamble {% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\tabu@aftergroupcleanup}% + \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody + \@preamble}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@pream +\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@longpream +\def\tabu@select {% + \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi + \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi + \ifcase \count@ + \global\let\tabu@elapsedtime \relax + \tabu@seteverycr + \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) + \or % exit in vertical measure + struts per cell because no X and outer in mode 3 + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \tabu@seteverycr + \expandafter \tabuthepreamble + \or % exit without measure because no X and outer in mode 4 + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@seteverycr + \expandafter \tabuthepreamble + \else % needs trials + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@savecounters + \expandafter \tabu@setstrategy + \fi +}% \tabu@select +\def\tabu@@ {\gdef\tabu@mkpreambuffer} +%% Protections to set up before trials ------------------------------ +\def\tabu@setstrategy {\begingroup % + \tabu@trialh@@k \tabu@cnt \z@ % number of trials + \hbadness \@M \let\hbadness \@tempcnta + \hfuzz \maxdimen \let\hfuzz \@tempdima + \let\write \tabu@nowrite\let\GenericError \tabu@GenericError + \let\savetabu \@gobble \let\tabudefaulttarget \linewidth + \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote + \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor + \let\tabu@aftergroupcleanup \relax % only after the last trial + \tabu@mkpreambuffer + \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init + \def\tabu@lasttry{\m@ne\p@}\fi + \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % + \tabu@collectbody \tabu@strategy % +}% \tabu@setstrategy +\def\tabu@savecounters{% + \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% + \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax +}% \tabu@savecounters +\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) + \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs + \ifdim \dimen@>\z@ + \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \fi +}% \tabucolX@init +\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum + \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ + \else -#2\p@ \tabu@negcoeftrue + \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \tabu@wddef{#1}{0pt}% + \fi +}% \tabu@Xinit +%% Collecting the environment body ---------------------------------- +\long\def\tabu@collectbody #1#2\end #3{% + \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% + \ifx \tabu@stack\@empty + \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% + \def\tabu@end@envir{\end{#3}}% + \iftabuscantokens + \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% + \else \def\tabu@endenvir {\let\endarray \@empty + \end{#3}\tabu@gobbleX}% + \fi + \else \def\tabu@endenvir {\end{#3}}\fi}% + \let\tabu@collectbody \tabu@endofcollect + \else\def\tabu@temp{#3}% + \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% + \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% + \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% + \else \toks@\expandafter{\the\toks@ #2\end{#3}}% + \fi\fi\fi + \fi + \tabu@collectbody{#1}% +}% \tabu@collectbody +\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% +\def\tabu@endofcollect #1{\ifnum0=`{}\fi + \expandafter\endgroup \the\toks@ #1% +}% \tabu@endofcollect +%% The trials: switching between strategies ------------------------- +\def\tabu@strategy {\relax % stops \count@ assignment ! + \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) + \expandafter \tabu@endoftrials + \or % case 1 = exit in vertical measure (outer in mode 3) + \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% + \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% + \expandafter \tabu@endoftrials + \or % case 2 = exit with a rule replacing the table (outer in mode 4) + \expandafter \tabu@quickend + \or % case 3 = outer is in mode 3 because of no X + \begingroup + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \expandafter \tabu@measuring + \else % case 4 = horizontal measure + \begingroup + \global\let\tabu@elapsedtime \tabu@message@etime + \long\def\multicolumn##1##2##3{\multispan{##1}}% + \let\tabu@startpboxORI \@startpbox + \iftabu@spread + \def\tabu@naturalXmax {\z@}% + \let\tabu@naturalXmin \tabu@naturalXmax + \tabu@evr{\global\tabu@naturalX \z@}% + \let\@startpbox \tabu@startpboxmeasure + \else\iftabu@negcoef + \let\@startpbox \tabu@startpboxmeasure + \else \let\@startpbox \tabu@startpboxquick + \fi\fi + \expandafter \tabu@measuring + \fi +}% \tabu@strategy +\def\tabu@measuring{\expandafter \tabu@trial \expandafter + \count@ \the\count@ \tabu@endtrial +}% \tabu@measuring +\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} +\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \csname tabu@adl@endtrial\endcsname + \endarray}$\egroup % got \tabu@box +}% \tabu@shorttrial +\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \tabuendlongtrial}\egroup % got \tabu@box +}% \tabu@longtrial +\def\tabuendlongtrial{% no @ allowed for \scantokens + \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne + \LT@get@widths +}% \tabuendlongtrial +\def\tabu@adl@endtrial{% + \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! +\def\tabu@seteverycr {\tabu@reset + \everycr \expandafter{\the\everycr \tabu@everycr}% + \let\everycr \tabu@noeverycr % +}% \tabu@seteverycr +\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} +\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} +\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} +\def\tabu@endoftrials {% + \iftabuscantokens \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\expandafter \tabu@closetrialsgroup \expandafter + \tabu@rescan \expandafter{% + \expandafter\tabuthepreamble + \the\expandafter\tabu@thebody + \iftabu@long \else \endarray \fi}} + {\expandafter\tabu@closetrialsgroup \expandafter + \tabuthepreamble + \the\tabu@thebody}% + \tabu@endenvir % Finish ! +}% \tabu@endoftrials +\def\tabu@closetrialsgroup {% + \toks@\expandafter{\tabu@endenvir}% + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target + \tabu@cnt \the\tabu@cnt + \def\noexpand\tabu@endenvir{\the\toks@}% + %Quid de \@halignto = \tabu@halignto ?? + }% \tabu@bufferX + \tabu@bufferX + \ifcase\tabu@nested % print out (outer in mode 0) + \global\tabu@cnt \tabu@cnt + \tabu@evr{\tabu@verticaldynamicadjustment}% + \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty + \let\@finalstrut \tabu@finalstrut + \else % vertical measure of nested tabu + \tabu@evr{\tabu@verticalinit}% + \tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \fi + \tabu@clckpt \let\@halignto \tabu@halignto + \let\@halignto \@empty + \tabu@seteverycr + \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ + \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) + \fi\fi +}% \tabu@closetrialsgroup +\def\tabu@quickend {\expandafter \endgroup \expandafter + \tabu@target \the\tabu@target \tabu@quickrule + \let\endarray \relax \tabu@endenvir +}% \tabu@quickend +\def\tabu@endtrial {\relax % stops \count@ assignment ! + \ifcase \count@ \tabu@err % case 0 = impossible here + \or \tabu@err % case 1 = impossible here + \or \tabu@err % case 2 = impossible here + \or % case 3 = outer goes into mode 0 + \def\tabu@bufferX{\endgroup}\count@ \z@ + \else % case 4 = outer goes into mode 3 + \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) + \else \tabu@arith % or 2 (outer in mode 4) + \fi + \count@=% + \ifcase\tabu@nested \thr@@ % outer goes into mode 3 + \else\iftabu@measuring \tw@ % outer is in mode 4 + \else \@ne % outer is in mode 3 + \fi\fi + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% + \fi + \expandafter \tabu@bufferX \expandafter + \count@ \the\count@ \tabu@strategy +}% \tabu@endtrial +\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} +%% The algorithms: compute the widths / stop or go on --------------- +\def\tabu@arithnegcoef {% + \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs +}% \tabu@arithnegcoef +\def\tabu@arith@negcoef #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition + \advance\@tempdima #2\tabucolX + \else + \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated + \advance\dimen@ -#2\p@ + \advance\@tempdima -#2\tabucolX + \else + \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised + \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised + \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) + \fi + \fi + \fi +}% \tabu@arith@negcoef +\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ + \ifdim \@tempdima=\z@ + \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% + \else + \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} + *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% + \fi +}% \tabu@givespace +\def\tabu@arith {\advance\tabu@cnt \@ne + \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi + \tabu@arithnegcoef + \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % + \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax + \tabu@message{\tabu@message@arith}% + \ifdim \tabu@DELTA <\tabu@hfuzz + \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? + \let\tabu@ \tabu@givespace \tabu@Xcoefs + \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message + \else % already converged: nothing to do but nearly impossible... + \fi + \tabucolX \maxdimen + \tabu@measuringfalse + \else % need for narrower X columns + \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax + \tabu@measuringtrue + \@whilesw \iftabu@measuring\fi {% + \advance\tabu@cnt \@ne + \tabu@arithnegcoef + \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here + \tabu@message{\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else + \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ + \fi}% + \ifdim -\tabu@DELTA<\tabu@hfuzz + \advance\@tempdima \@tempdimb % for message + \tabu@measuringfalse + \else + \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax + \fi + }% + \fi + \tabu@message{\tabu@message@reached}% + \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% +}% \tabu@arith +\def\tabu@spreadarith {% + \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs + \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% + \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax + \iftabu@measuring + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% + \else + \tabu@message{\tabu@message@spreadarith}% + \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target + \tabu@message{(tabu) spread + \ifdim \@tempdimc>\tabu@target useless here: default target used% + \else too large: reduced to fit default target\fi.}% + \else + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% + \fi + \begingroup \let\tabu@wddef \@gobbletwo + \@tempdimb \@tempdima + \tabucolX@init + \tabu@arithnegcoef + \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax + \expandafter\endgroup \expandafter\tabucolX \the\tabucolX + \tabu@arith + \fi +}% \tabu@spreadarith +\def\tabu@spread@arith #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ + \else \advance\@tempdima \tabu@wd{#1}\relax + \fi +}% \tabu@spread@arith +%% Reporting in the .log file --------------------------------------- +\def\tabu@message@defaulttarget{% + \ifnum\tabu@nested=\z@^^J(tabu) Default target: + \ifx\tabudefaulttarget\linewidth \string\linewidth + \ifdim \tabu@thetarget=\linewidth \else + -\the\dimexpr\linewidth-\tabu@thetarget\fi = + \else\ifx\tabudefaulttarget\linegoal\string\linegoal= + \fi\fi + \else (tabu) Default target (nested): \fi + \the\tabu@target \on@line + \ifnum\tabu@nested=\z@ , page \the\c@page\fi} +\def\tabu@message@target {^^J(tabu) Target specified: + \the\tabu@target \on@line, page \the\c@page} +\def\tabu@message@arith {\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else + \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ + \fi +}% \tabu@message@arith +\def\tabu@message@spreadarith {\tabu@spreadheader + \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ + \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ + \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ + \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target + \else \@tempdimc+\tabu@spreadtarget \fi + {}{}{}{}{}\@@} +\def\tabu@message@negcoef #1#2{ + \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: + \space width = \tabu@wd {#1} + \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname + \ifdim -\tabu@pt#2\tabucolX<\tabu@target + < \number-\rem@pt#2 X + = \the\dimexpr -\tabu@pt#2\tabucolX \relax + \else + <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} +\def\tabu@message@reached{\tabu@header + ******* Reached Target: + hfuzz = \tabu@hfuzz\on@line\space *******} +\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% + \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: + \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec + \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) + -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax + *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space + cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} +\def\tabu@message@verticalsp {% + \ifdim \@tempdima>\tabu@ht + \ifdim \@tempdimb>\tabu@dp + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% + \else + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% + \fi + \else\ifdim \@tempdimb>\tabu@dp + \tabu@spaces\tabu@spaces\tabu@spaces + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi + \fi +}% \tabu@message@verticalsp +\edef\tabu@spaces{\@spaces} +\def\tabu@strippt{\expandafter\tabu@pt\the} +{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} +\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} +\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} +\def\do #1{% + \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% + \ifnum##1<10 #1 #1\else + \ifnum##1<100 #1 \else + \ifnum##1<\@m #1\fi\fi\fi + ##1.##2##3##4##5##6##7##8#1}% + \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% + \def\tabu@titles{\ifnum \tabu@nested=\z@ + (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target + #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% + \def\tabu@spreadheader{% + (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. + #1 New Target^^J% + (tabu) sprd} + \def\tabu@message@save {\begingroup + \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} + \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt + \dimexpr####1\p@{ }{ }}}% + \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% + \let\CT@arc@ \relax \let\@preamble \@gobble + \let\tabu@savedpream \@firstofone + \let\tabu@savedparams \@firstofone + \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% + \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% + \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% + \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% + \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% + \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% + \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% + \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% + \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% + \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% + \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% + \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% + \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% + \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% + \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% + \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% + \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% + \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% + \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% + \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% + \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo + \tabu@message{% + (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% + \tabu@usetabu \@nil^^J}% + \endgroup} +}\do{ } +%% Measuring the natural width (varwidth) - store the results ------- +\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop + \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% + \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? + \iftabu@spread \else % if spread -> measure + \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure + \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) + \tabu@measuringtrue % for the quick option... + \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi + \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target + \tabu@target=\tabu@temp\tabucolX \fi\fi + \setbox\tabu@box \hbox \bgroup + \begin{varwidth}\tabu@target + \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... + \narrowragged \arraybackslash \parfillskip \@flushglue + \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi + \bgroup \aftergroup\tabu@endpboxmeasure + \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi + \else \expandafter\@gobble + \tabu@startpboxquick{#1}% \@gobble \bgroup + \fi +}% \tabu@startpboxmeasure +\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty + \bgroup\color@begingroup} +\def\tabu@endpboxmeasure {% + \@finalstrut \@arstrutbox + \end{varwidth}\egroup % + \ifdim \tabu@temp\p@ <\z@ % neg coef + \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box + \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% + \tabu@debug{\tabu@message@endpboxmeasure}% + \fi + \else % spread coef>0 + \global\advance \tabu@naturalX \wd\tabu@box + \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax + \ifdim \tabu@naturalXmax <\tabu@naturalX + \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi + \ifdim \tabu@naturalXmin <\@tempdima + \xdef\tabu@naturalXmin {\the\@tempdima}\fi + \fi + \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target +}% \tabu@endpboxmeasure +\def\tabu@wddef #1{\expandafter\xdef + \csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd + \the\tabu@Xcol. X[\tabu@temp]: + target = \the\tabucolX \space + \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol + =\tabu@wd\tabu@Xcol +}% \tabu@message@endpboxmeasure +\def\tabu@startpboxquick {\bgroup + \let\@startpbox \tabu@startpboxORI % restore immediately + \let\tabu \tabu@quick % \begin is expanded before... + \expandafter\@gobble \@startpbox % gobbles \bgroup +}% \tabu@startpboxquick +\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick +}% \tabu@quick +\def\tabu@endquick {% + \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else + \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax + \endgroup + \else \let\endtabu \relax + \tabu@end@envir + \fi +}% \tabu@quick +\def\tabu@endtabu {\end{tabu}} +\def\tabu@endtabus {\end{tabu*}} +%% Measuring the heights and depths - store the results ------------- +\def\tabu@verticalmeasure{\everypar{}% + \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group + \setbox\tabu@box =\hbox\bgroup + \let\tabu@verticalspacing \tabu@verticalsp@lcr + \d@llarbegin % after \hbox ... + \else + \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop + \else\ifnum\currentgrouptype=12\vcenter + \else\vbox\fi\fi}% + \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup + \let\tabu@verticalspacing \tabu@verticalsp@pmb + \fi +}% \tabu@verticalmeasure +\def\tabu@verticalsp@lcr{% + \d@llarend \egroup % + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \noindent\vrule height\@tempdima depth\@tempdimb +}% \tabu@verticalsp@lcr +\def\tabu@verticalsp@pmb{% inserts struts as needed + \par \expandafter\egroup + \expandafter$\expandafter + \egroup \expandafter + \@tempdimc \the\prevdepth + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \let\@finalstrut \@gobble + \hrule height\@tempdima depth\@tempdimb width\hsize +%% \box\tabu@box +}% \tabu@verticalsp@pmb + +\def\tabu@verticalinit{% + \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! + \advance\c@taburow \@ne + \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% + \advance\c@taburow \m@ne +}% \tabu@verticalinit +\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@verticaldynamicadjustment {% + \advance\c@taburow \@ne + \extrarowheight \dimexpr\tabu@ht - \ht\strutbox + \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox + \let\arraystretch \@empty + \advance\c@taburow \m@ne +}% \tabu@verticaldynamicadjustment +\def\tabuphantomline{\crcr \noalign{% + {\globaldefs \@ne + \setbox\@arstrutbox \box\voidb@x + \let\tabu@@celllalign \tabu@celllalign + \let\tabu@@cellralign \tabu@cellralign + \let\tabu@@cellleft \tabu@cellleft + \let\tabu@@cellright \tabu@cellright + \let\tabu@@thevline \tabu@thevline + \let\tabu@celllalign \@empty + \let\tabu@cellralign \@empty + \let\tabu@cellright \@empty + \let\tabu@cellleft \@empty + \let\tabu@thevline \relax}% + \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% + \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr + \noalign{\tabu@rearstrut + {\globaldefs\@ne + \let\tabu@celllalign \tabu@@celllalign + \let\tabu@cellralign \tabu@@cellralign + \let\tabu@cellleft \tabu@@cellleft + \let\tabu@cellright \tabu@@cellright + \let\tabu@thevline \tabu@@thevline}}}% + \expandafter}\the\toks@ +}% \tabuphantomline +%% \firsthline and \lasthline corrections --------------------------- +\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} +\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} +\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} +\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} +\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) + \noalign{\ifnum0=`}\fi + {\CT@arc@\hrule height\arrayrulewidth}% + \futurelet \tabu@temp \tabu@xhline +}% \tabu@hline +\def\tabu@xhline{% + \ifx \tabu@temp \hline + {\ifx \CT@drsc@\relax \vskip + \else\ifx \CT@drsc@\@empty \vskip + \else \CT@drsc@\hrule height + \fi\fi + \doublerulesep}% + \fi + \ifnum0=`{\fi}% +}% \tabu@xhline +\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ + \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% + \tabu@hlineAZsurround +}% \tabu@hlineAZ +\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% + \extratabsurround #1\let\tabucline \tabucline@scan + \let\hline \tabu@hlinescan \let\firsthline \hline + \let\cline \tabu@clinescan \let\lasthline \hline + \expandafter \futurelet \expandafter \tabu@temp + \expandafter \tabu@nexthlineAZ \tabu@temp +}% \tabu@hlineAZsurround +\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} +\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} +\def\tabucline@scan{\@testopt \tabucline@sc@n {}} +\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} +\def\tabu@nexthlineAZ{% + \ifx \tabu@temp\hline \else + \ifx \tabu@temp\cline \else + \ifx \tabu@temp\tabucline \else + \tabu@hlinecorrection + \fi\fi\fi +}% \tabu@nexthlineAZ +\def\tabu@xhlineAZ #1{% + \toks@\expandafter{\the\toks@ #1}% + \@tempdimc \tabu@thick % The last line width + \ifcase\count@ \@tempdimb \tabu@thick % The first line width + \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax + \fi + \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ +}% \tabu@xhlineAZ +\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 + \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ + \edef\firsthline{% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + height \the\dimexpr\@tempdima+\extratabsurround + depth \dp\@arstrutbox + width \tabustrutrule}\hss}\cr + \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb + +\dp\@arstrutbox \relax}% + \the\toks@ + }\ifnum0=`{\fi + \expandafter}\firsthline % we are then ! +}% \tabu@firsthlinecorrection +\def\tabu@lasthlinecorrection{% + \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc + \edef\lasthline{% + \the\toks@ + \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ + +\extratabsurround-\@tempdimc + height \z@ + width \tabustrutrule}\hss}\cr + }\ifnum0=`{\fi + \expandafter}\lasthline % we are then ! +}% \tabu@lasthlinecorrection +\def\tabu@LT@@hline{% + \ifx\LT@next\hline + \global\let\LT@next \@gobble + \ifx \CT@drsc@\relax + \gdef\CT@LT@sep{% + \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% + \else + \gdef\CT@LT@sep{% + \multispan\LT@cols{% + \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% + \fi + \else + \global\let\LT@next\empty + \gdef\CT@LT@sep{% + \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \CT@LT@sep + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \noalign{\penalty\@M}% + \LT@next +}% \tabu@LT@@hline +%% Horizontal lines : \tabucline ------------------------------------ +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} +\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% + \ifnum \tabu@stop<\z@ \toks@{}% + \else \tabu@clinearg{#1}\tabu@thestyle + \edef\tabucline{\toks@{% + \ifnum \tabu@start>\z@ \omit + \tabu@multispan\tabu@start {\span\omit}&\fi + \omit \tabu@multispan\tabu@stop {\span\omit}% + \tabu@thehline\cr + }}\tabucline + \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% + \fi + \futurelet \tabu@temp \tabu@xcline +}% \tabu@cline +\def\tabu@clinearg #1{% + \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ + \else \@defaultunits \expandafter\let\expandafter\@tempa + \romannumeral-`\0#1\relax \@nnil + \ifx \hbox\@tempa \tabu@clinebox{#1}% + \else\ifx \box\@tempa \tabu@clinebox{#1}% + \else\ifx \vbox\@tempa \tabu@clinebox{#1}% + \else\ifx \vtop\@tempa \tabu@clinebox{#1}% + \else\ifx \copy\@tempa \tabu@clinebox{#1}% + \else\ifx \leaders\@tempa \tabu@clineleads{#1}% + \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% + \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% + \else\tabu@getline {#1}% + \fi\fi\fi\fi\fi\fi\fi\fi + \fi +}% \tabu@clinearg +\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} +\def\tabu@clineleads #1{% + \let\tabu@thestyle \relax \let\tabu@leaders \@undefined + \gdef\tabu@thehrule{#1}} +\def\tabu@thehline{\begingroup + \ifdefined\tabu@leaders + \noexpand\tabu@thehleaders + \else \noexpand\tabu@thehrule + \fi \endgroup +}% \tabu@thehline +\def\tabu@xcline{% + \ifx \tabu@temp\tabucline + \toks@\expandafter{\the\toks@ \noalign + {\ifx\CT@drsc@\relax \vskip + \else \CT@drsc@\hrule height + \fi + \doublerulesep}}% + \fi + \tabu@docline +}% \tabu@xcline +\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} +\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% + \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} +\def\tabu@multispan #1#2{% + \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan + \else \expandafter\@gobbletwo + \fi {#1-1}{#2}% +}% \tabu@multispan +\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} +\def\tabu@start@stop #1-#2\@nnil{% + \@defaultunits \tabu@start\number 0#1\relax \@nnil + \@defaultunits \tabu@stop \number 0#2\relax \@nnil + \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne + \else\ifnum \tabu@stop=\z@ \tabu@nbcols + \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols + \else \tabu@stop + \fi\fi\fi + \advance\tabu@start \m@ne + \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi +}% \tabu@start@stop +%% Numbers: siunitx S columns (and \tabudecimal) ------------------- +\def\tabu@tabudecimal #1{% + \def\tabu@decimal{#1}\@temptokena{}% + \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces + \tabu@scandecimal +}% \tabu@tabudecimal +\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} +\def\tabu@skipdecimal#1{#1\tabu@scandecimal} +\def\tabu@getdecimal@ignorespaces{% + \ifcase 0\ifx\tabu@temp\ignorespaces\else + \ifx\tabu@temp\@sptoken1\else + 2\fi\fi\relax + \let\tabu@getdecimal@ \tabu@getdecimal + \expandafter\tabu@skipdecimal + \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal + \else \expandafter\tabu@skipdecimal + \fi +}% \tabu@getdecimal@ignorespaces +\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% + \tabu@scandecimal} +\def\do#1{% + \def\tabu@get@decimalspace#1{% + \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% +}\do{ } +\let\tabu@@tabudecimal \tabu@tabudecimal +\def\tabu@getdecimal{% + \ifcase 0\ifx 0\tabu@temp\else + \ifx 1\tabu@temp\else + \ifx 2\tabu@temp\else + \ifx 3\tabu@temp\else + \ifx 4\tabu@temp\else + \ifx 5\tabu@temp\else + \ifx 6\tabu@temp\else + \ifx 7\tabu@temp\else + \ifx 8\tabu@temp\else + \ifx 9\tabu@temp\else + \ifx .\tabu@temp\else + \ifx ,\tabu@temp\else + \ifx -\tabu@temp\else + \ifx +\tabu@temp\else + \ifx e\tabu@temp\else + \ifx E\tabu@temp\else + \ifx\tabu@cellleft\tabu@temp1\else + \ifx\ignorespaces\tabu@temp1\else + \ifx\@sptoken\tabu@temp2\else + 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \expandafter\tabu@get@decimal + \or \expandafter\tabu@skipdecimal + \or \expandafter\tabu@get@decimalspace + \else\expandafter\tabu@printdecimal + \fi +}% \tabu@getdecimal +\def\tabu@printdecimal{% + \edef\tabu@temp{\the\@temptokena}% + \ifx\tabu@temp\@empty\else + \ifx\tabu@temp\space\else + \expandafter\tabu@decimal\expandafter{\the\@temptokena}% + \fi\fi +}% \tabu@printdecimal +%% Verbatim inside X columns ---------------------------------------- +\def\tabu@verbatim{% + \let\verb \tabu@verb + \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd +}% \tabu@verbatim +\let\tabu@ltx@verb \verb +\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} +\def\tabu@fancyvrb {% + \def\tabu@FV@DefineCheckEnd ##1{% + \def\tabu@FV@DefineCheckEnd{% + ##1% + \let\FV@CheckEnd \tabu@FV@CheckEnd + \let\FV@@CheckEnd \tabu@FV@@CheckEnd + \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd + \edef\FV@EndScanning{% + \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% + \global\let\noexpand\FV@EnvironName\relax + \noexpand\next}% + \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% + }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} +}% \tabu@fancyvrb +\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} +\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} +\begingroup +\catcode`\[1 \catcode`\]2 +\@makeother\{ \@makeother\} + \edef\x[\endgroup + \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% + ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} +\def\tabu@FV@ListProcessLine #1{% + \hbox {%to \hsize{% + \kern\leftmargin + \hbox {%to \linewidth{% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{#1}\hss +%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) +%% \FV@RightListFrame}% + \FV@RightListFrame + \FV@RightListNumber}% +%% DG/SR modification end + \hss}} +%% \savetabu -------------------------------------------------------- +\newcommand*\savetabu[1]{\noalign{% + \tabu@sanitizearg{#1}\tabu@temp + \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else + \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% + \ifdefined\tabu@restored \expandafter\let + \csname tabu@saved@\tabu@temp \endcsname \tabu@restored + \else {\tabu@save}% + \fi + \fi}% +}% \savetabu +\def\tabu@save {% + \toks0\expandafter{\tabu@saved@}% + \iftabu@negcoef + \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% + \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi + \toks1\expandafter{\tabu@savedpream}% + \toks2\expandafter{\tabu@savedpreamble}% + \let\@preamble \relax + \let\tabu@savedpream \relax \let\tabu@savedparams \relax + \edef\tabu@preamble{% + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \edef\tabu@usetabu{% + \def\@preamble {\noexpand\the\toks2}% + \tabu@target \the\tabu@target \relax + \tabucolX \the\tabucolX \relax + \tabu@nbcols \the\tabu@nbcols \relax + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \let\tabu@aligndefault \relax \let\@sharp \relax + \edef\@tempa{\noexpand\tabu@s@ved + {\tabu@usetabu} + {\tabu@preamble} + {\the\toks1}}\@tempa + \tabu@message@save +}% \tabu@save +\long\def\tabu@s@ved #1#2#3{% + \def\tabu@usetabu{#1}% + \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% + \ifodd ##1% \usetabu + \tabu@measuringfalse \tabu@spreadfalse % Just in case... + \gdef\tabu@usetabu {% + \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi + \global\let\tabu@usetabu \@undefined + \def\@halignto {to\tabu@target}% + #1% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \else % \preamble + \gdef\tabu@preamble {% + \global\let\tabu@preamble \@undefined + #2% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \fi + #3}% +}% \tabu@s@ved +\def\tabu@aligndefault@text {\tabu@aligndefault}% +\def\tabu@warn@usetabu {\PackageWarning{tabu} + {Specifying a target with \string\usetabu\space is useless + \MessageBreak The target cannot be changed!}} +\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} +\def\tabu@savewarn#1#2{\PackageInfo{tabu} + {User-name `#1' already used for \string\savetabu + \MessageBreak #2}}% +\def\tabu@saveerr#1{\PackageError{tabu} + {User-name `#1' is unknown for \string\usetabu + \MessageBreak I cannot restore an unknown preamble!}\@ehd} +%% \rowfont --------------------------------------------------------- +\newskip \tabu@cellskip +\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi + {\ifnum0=`}\fi \tabu@row@font} +\newcommand*\tabu@row@font[2][]{% + \ifnum7=\currentgrouptype + \global\let\tabu@@cellleft \tabu@cellleft + \global\let\tabu@@cellright \tabu@cellright + \global\let\tabu@@celllalign \tabu@celllalign + \global\let\tabu@@cellralign \tabu@cellralign + \global\let\tabu@@rowfontreset\tabu@rowfontreset + \fi + \global\let\tabu@rowfontreset \tabu@rowfont@reset + \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% + \ifcsname tabu@cell@#1\endcsname % row alignment + \csname tabu@cell@#1\endcsname \fi + \ifnum0=`{\fi}% end of group / noalign group +}% \rowfont +\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% +\def\tabu@rowfont@reset{% + \global\let\tabu@rowfontreset \tabu@@rowfontreset + \global\let\tabu@cellleft \tabu@@cellleft + \global\let\tabu@cellright \tabu@@cellright + \global\let\tabu@cellfont \@empty + \global\let\tabu@celllalign \tabu@@celllalign + \global\let\tabu@cellralign \tabu@@cellralign +}% \tabu@@rowfontreset +\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl +%% \tabu@prepnext@tok ----------------------------------------------- +\newif \iftabu@cellright +\def\tabu@prepnext@tok{% + \ifnum \count@<\z@ % + \@tempcnta \@M % + \tabu@nbcols\z@ + \let\tabu@fornoopORI \@fornoop + \tabu@cellrightfalse + \else + \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left + \advance \tabu@nbcols \@ne + \iftabu@cellright % before-previous token is right and is finished + \tabu@cellrightfalse % + \tabu@righttok + \fi + \tabu@lefttok + \or % (case 1) previous token is right + \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop + \else % special column: do not change the token + \iftabu@cellright % before-previous token is right + \tabu@cellrightfalse + \tabu@righttok + \fi + \fi % \ifcase + \fi + \tabu@prepnext@tokORI +}% \tabu@prepnext@tok +\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} +\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% + \ifx \in@#2\else + \let\@fornoop \tabu@fornoopORI + \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% + \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% + \expandafter\prepnext@tok + \fi +}% \tabu@lastnoop +\def\tabu@righttok{% + \advance \count@ \m@ne + \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% + \advance \count@ \@ne +}% \tabu@righttok +\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign + \the\toks\count@ \tabu@cellleft}% after because of $ +}% \tabu@lefttok +%% Neutralisation of glues ------------------------------------------ +\let\tabu@cellleft \@empty +\let\tabu@cellright \@empty +\tabu@celllalign@def{\tabu@cellleft}% +\let\tabu@cellralign \@empty +\def\tabu@cell@align #1#2#3{% + \let\tabu@maybesiunitx \toks@ \tabu@celllalign + \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% + \toks@\expandafter{\tabu@cellralign #2}% + \xdef\tabu@cellralign{\the\toks@}% + \toks@\expandafter{\tabu@cellleft #3}% + \xdef\tabu@cellleft{\the\toks@}% +}% \tabu@cell@align +\def\tabu@cell@l{% force alignment to left + \tabu@cell@align + {\tabu@removehfil \raggedright \tabu@cellleft}% left + {\tabu@flush1\tabu@ignorehfil}% right + \raggedright +}% \tabu@cell@l +\def\tabu@cell@c{% force alignment to center + \tabu@cell@align + {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \centering +}% \tabu@cell@c +\def\tabu@cell@r{% force alignment to right + \tabu@cell@align + {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} + \tabu@ignorehfil + \raggedleft +}% \tabu@cell@r +\def\tabu@cell@j{% force justification (for p, m, b columns) + \tabu@cell@align + {\tabu@justify\tabu@cellleft} + {} + \tabu@justify +}% \tabu@cell@j +\def\tabu@justify{% + \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip + \parfillskip\@flushglue +}% \tabu@justify +%% ragged2e settings +\def\tabu@cell@L{% force alignment to left (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedRight \tabu@cellleft} + {\tabu@flush 1\tabu@ignorehfil} + \RaggedRight +}% \tabu@cell@L +\def\tabu@cell@C{% force alignment to center (ragged2e) + \tabu@cell@align + {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \Centering +}% \tabu@cell@C +\def\tabu@cell@R{% force alignment to right (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} + \tabu@ignorehfil + \RaggedLeft +}% \tabu@cell@R +\def\tabu@cell@J{% force justification (ragged2e) + \tabu@cell@align + {\justifying \tabu@cellleft} + {} + \justifying +}% \tabu@cell@J +\def\tabu@flush#1{% + \iftabu@colortbl % colortbl uses \hfill rather than \hfil + \hskip \ifnum13<\currentgrouptype \stretch{#1}% + \else \ifdim#1pt<\p@ \tabu@cellskip + \else \stretch{#1} + \fi\fi \relax + \else % array.sty + \ifnum 13<\currentgrouptype + \hfil \hskip1sp \relax \fi + \fi +}% \tabu@flush +\let\tabu@hfil \hfil +\let\tabu@hfill \hfill +\let\tabu@hskip \hskip +\def\tabu@removehfil{% + \iftabu@colortbl + \unkern \tabu@cellskip =\lastskip + \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip + \else \tabu@cellskip \z@skip + \fi + \else + \ifdim\lastskip=1sp\unskip\fi + \ifnum\gluestretchorder\lastskip =\@ne + \hfilneg % \hfilneg for array.sty but not for colortbl... + \fi + \fi +}% \tabu@removehfil +\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} +\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil + \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group +}% \tabu@nohfil +\def\tabu@colortblalignments {% if colortbl + \def\tabu@nohfil{% + \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group + \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... + \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local +}% \tabu@colortblalignments +%% Taking care of footnotes and hyperfootnotes ---------------------- +\long\def\tabu@footnotetext #1{% + \edef\@tempa{\the\tabu@footnotes + \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% + \global\tabu@footnotes\expandafter{\@tempa {#1}}}% +\long\def\tabu@xfootnotetext [#1]#2{% + \global\tabu@footnotes\expandafter{\the\tabu@footnotes + \footnotetext [{#1}]{#2}}} +\let\tabu@xfootnote \@xfootnote +\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} +\long\def\tabu@Hy@xfootnote [#1]{% + \begingroup + \value\@mpfn #1\relax + \protected@xdef \@thefnmark {\thempfn}% + \endgroup + \@footnotemark \tabu@Hy@ftntxt {#1}% +}% \tabu@Hy@xfootnote +\long\def\tabu@Hy@ftntxt #1#2{% + \edef\@tempa{% + \the\tabu@footnotes + \begingroup + \value\@mpfn #1\relax + \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% + \expandafter \noexpand \expandafter + \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% + }% + \global\tabu@footnotes\expandafter{\@tempa {#2}% + \endgroup}% +}% \tabu@Hy@ftntxt +\long\def\tabu@Hy@footnotetext #1#2{% + \H@@footnotetext{% + \ifHy@nesting + \hyper@@anchor {#1}{#2}% + \else + \Hy@raisedlink{% + \hyper@@anchor {#1}{\relax}% + }% + \def\@currentHref {#1}% + \let\@currentlabelname \@empty + #2% + \fi + }% +}% \tabu@Hy@footnotetext +%% No need for \arraybackslash ! ------------------------------------ +\def\tabu@latextwoe {% +\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@centering \centering \arraybackslash +\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash +\tabu@temp \tabu@raggedright \raggedright \arraybackslash +}% \tabu@latextwoe +\def\tabu@raggedtwoe {% +\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@Centering \Centering \arraybackslash +\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash +\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash +\tabu@temp \tabu@justifying \justifying \arraybackslash +}% \tabu@raggedtwoe +\def\tabu@normalcrbackslash{\let\\\@normalcr} +\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% + \expandafter\tabu@normalcrbackslash \@trivlist}} +%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- +\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} +\def\tabu@beginfbox {\bgroup \kern\fboxsep + \bgroup\aftergroup\tabu@endfbox} +\def\tabu@endfbox {\kern\fboxsep\egroup\egroup + \@frameb@x\relax} +\def\tabu@color@b@x #1#2{\leavevmode \bgroup + \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% + \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox +}% \tabu@color@b@x +\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup + \aftergroup\tabu@endcolor@b@x \set@color} +\def\tabu@endcolor@b@x {\kern\fboxsep \egroup + \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ + \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ + \tabu@docolor@b@x \egroup +}% \tabu@endcolor@b@x +%% Corrections (arydshln, delarray, colortbl) ----------------------- +\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray + \iftabu@colortbl + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \def\tabu@endarray{% + \crcr \egroup \egroup % + \@arrayright % + \gdef\@preamble{}\CT@end}% + \fi + \else + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \PackageWarning{tabu} + {\string\@arrayright\space is missing from the + \MessageBreak definition of \string\endarray. + \MessageBreak Compatibility with delarray.sty is broken.}% + \fi\fi +}% \tabu@fix@arrayright +\def\tabu@adl@xarraydashrule #1#2#3{% + \ifnum\@lastchclass=\adl@class@start\else + \ifnum\@lastchclass=\@ne\else + \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) + \adl@leftrulefalse \fi\fi % must be treated the same + \fi + \ifadl@zwvrule\else \ifadl@inactive\else + \@addtopreamble{\vrule\@width\arrayrulewidth + \@height\z@ \@depth\z@}\fi \fi + \ifadl@leftrule + \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% + {\number#1}#3}% + \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% + {\number#2}#3} + \fi +}% \tabu@adl@xarraydashrule +\def\tabu@adl@act@endpbox {% + \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox + \egroup \egroup + \adl@colhtdp \box\adl@box \hfil +}% \tabu@adl@act@endpbox +\def\tabu@adl@fix {% + \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln + \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln + \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln + \let\@preamerror \@preamerr % arydshln +}% \tabu@adl@fix +%% Correction for longtable' \@startbox definition ------------------ +%% => \everypar is ``missing'' : TeX should be in vertical mode +\def\tabu@LT@startpbox #1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% +}% \tabu@LT@startpbox +%% \tracingtabu and the package options ------------------ +\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} +\DeclareOption{linegoal}{% + \AtEndOfPackage{% + \RequirePackage{linegoal}[2010/12/07]% + \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX +}} +\DeclareOption{scantokens}{\tabuscantokenstrue} +\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} +\def\tracingtabu {\begingroup\@ifnextchar=% + {\afterassignment\tabu@tracing\count@} + {\afterassignment\tabu@tracing\count@1\relax}} +\def\tabu@tracing{\expandafter\endgroup + \expandafter\tabu@tr@cing \the\count@ \relax +}% \tabu@tracing +\def\tabu@tr@cing #1\relax {% + \ifnum#1>\thr@@ \let\tabu@tracinglines\message + \else \let\tabu@tracinglines\@gobble + \fi + \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG + \def\tabu@mkarstrut {\tabu@DBG@arstrut}% + \tabustrutrule 1.5\p@ + \else \let\tabu@DBG \@gobble + \def\tabu@mkarstrut {\tabu@arstrut}% + \tabustrutrule \z@ + \fi + \ifnum#1>\@ne \let\tabu@debug \message + \else \let\tabu@debug \@gobble + \fi + \ifnum#1>\z@ + \let\tabu@message \message + \let\tabu@tracing@save \tabu@message@save + \let\tabu@starttimer \tabu@pdftimer + \else + \let\tabu@message \@gobble + \let\tabu@tracing@save \@gobble + \let\tabu@starttimer \relax + \fi +}% \tabu@tr@cing +%% Setup \AtBeginDocument +\AtBeginDocument{\tabu@AtBeginDocument} +\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined + \ifdefined\arrayrulecolor \tabu@colortbltrue % + \tabu@colortblalignments % different glues are used + \else \tabu@colortblfalse \fi + \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi + \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi + \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ + \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % + \expandafter\ifx + \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax + \tabu@siunitxtrue + \else \let\tabu@maybesiunitx \@firstofone % + \let\tabu@siunitx \tabu@nosiunitx + \tabu@siunitxfalse + \fi + \ifdefined\adl@array % + \else \let\tabu@adl@fix \relax + \let\tabu@adl@endtrial \@empty \fi + \ifdefined\longtable % + \else \let\longtabu \tabu@nolongtabu \fi + \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi + \csname\ifcsname ifHy@hyperfootnotes\endcsname % + ifHy@hyperfootnotes\else iffalse\fi\endcsname + \let\tabu@footnotetext \tabu@Hy@ftntext + \let\tabu@xfootnote \tabu@Hy@xfootnote \fi + \ifdefined\FV@DefineCheckEnd% + \tabu@fancyvrb \fi + \ifdefined\color % + \let\tabu@color \color + \def\tabu@leavevmodecolor ##1{% + \def\tabu@leavevmodecolor {\leavevmode ##1}% + }\expandafter\tabu@leavevmodecolor\expandafter{\color}% + \else + \let\tabu@color \tabu@nocolor + \let\tabu@leavevmodecolor \@firstofone \fi + \tabu@latextwoe + \ifdefined\@raggedtwoe@everyselectfont % + \tabu@raggedtwoe + \else + \let\tabu@cell@L \tabu@cell@l + \let\tabu@cell@R \tabu@cell@r + \let\tabu@cell@C \tabu@cell@c + \let\tabu@cell@J \tabu@cell@j \fi + \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% + \ifin@ \let\tabu@endarray \endarray + \else \tabu@fix@arrayright \fi% + \everyrow{}% +}% \tabu@AtBeginDocument +\def\tabu@warn@cellspace{% + \PackageWarning{tabu}{% + Package cellspace has some limitations + \MessageBreak And redefines some macros of array.sty. + \MessageBreak Please use \string\tabulinesep\space to control + \MessageBreak vertical spacing of lines inside tabu environment}% +}% \tabu@warn@cellspace +%% tabu Package initialisation +\tabuscantokensfalse +\let\tabu@arc@G \relax +\let\tabu@drsc@G \relax +\let\tabu@evr@G \@empty +\let\tabu@rc@G \@empty +\def\tabu@ls@G {\tabu@linestyle@}% +\let\tabu@@rowfontreset \@empty % +\let\tabu@@celllalign \@empty +\let\tabu@@cellralign \@empty +\let\tabu@@cellleft \@empty +\let\tabu@@cellright \@empty +\def\tabu@naturalXmin {\z@} +\def\tabu@naturalXmax {\z@} +\let\tabu@rowfontreset \@empty +\def\tabulineon {4pt}\let\tabulineoff \tabulineon +\tabu@everyrowtrue +\ifdefined\pdfelapsedtime % + \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% +\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax +\fi +\tracingtabu=\z@ +\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ +\tabulinestyle{} +\taburowcolors{} +\let\tabudefaulttarget \linewidth +\ProcessOptions* % \ProcessOptions* is quicker ! +\endinput +%% +%% End of file `tabu.sty'. diff --git a/doc/man/man3/_ps_color.3 b/doc/man/man3/_ps_color.3 new file mode 100644 index 0000000..99e7f8b --- /dev/null +++ b/doc/man/man3/_ps_color.3 @@ -0,0 +1,54 @@ +.TH "_ps_color" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_ps_color \- A structure that contains rgba values for a color\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "float \fBr\fP" +.br +.ti -1c +.RI "float \fBg\fP" +.br +.ti -1c +.RI "float \fBb\fP" +.br +.ti -1c +.RI "float \fBa\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +A structure that contains rgba values for a color\&. +.PP +Definition at line 212 of file picasso\&.h\&. +.SH "Field Documentation" +.PP +.SS "float _ps_color::a" +the alpha component for a color (0 ~ 1)\&. +.PP +Definition at line 220 of file picasso\&.h\&. +.SS "float _ps_color::b" +the blue component for a color (0 ~ 1)\&. +.PP +Definition at line 218 of file picasso\&.h\&. +.SS "float _ps_color::g" +the green component for a color (0 ~ 1)\&. +.PP +Definition at line 216 of file picasso\&.h\&. +.SS "float _ps_color::r" +the red component for a color (0 ~ 1)\&. +.PP +Definition at line 214 of file picasso\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_ps_font_info.3 b/doc/man/man3/_ps_font_info.3 new file mode 100644 index 0000000..ee09793 --- /dev/null +++ b/doc/man/man3/_ps_font_info.3 @@ -0,0 +1,61 @@ +.TH "_ps_font_info" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_ps_font_info \- A structure that contains font information\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "float \fBsize\fP" +.br +.ti -1c +.RI "float \fBascent\fP" +.br +.ti -1c +.RI "float \fBdescent\fP" +.br +.ti -1c +.RI "float \fBleading\fP" +.br +.ti -1c +.RI "unsigned int \fBunitsEM\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +A structure that contains font information\&. +.PP +Definition at line 2088 of file picasso\&.h\&. +.SH "Field Documentation" +.PP +.SS "float _ps_font_info::ascent" +Ascent, maximum distance above the baseline\&. +.PP +Definition at line 2096 of file picasso\&.h\&. +.SS "float _ps_font_info::descent" +Descent, maximum distance below the baseline\&. +.PP +Definition at line 2100 of file picasso\&.h\&. +.SS "float _ps_font_info::leading" +Leading, the spaceing between consecutive lines of text\&. +.PP +Definition at line 2104 of file picasso\&.h\&. +.SS "float _ps_font_info::size" +Size, the height of glyph\&. +.PP +Definition at line 2092 of file picasso\&.h\&. +.SS "unsigned int _ps_font_info::unitsEM" +UnitsEm, the number of glyph space units per em\&. +.PP +Definition at line 2108 of file picasso\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_ps_glyph.3 b/doc/man/man3/_ps_glyph.3 new file mode 100644 index 0000000..a187851 --- /dev/null +++ b/doc/man/man3/_ps_glyph.3 @@ -0,0 +1,33 @@ +.TH "_ps_glyph" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_ps_glyph \- A character glyph of a font\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "void * \fBglyph\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +A character glyph of a font\&. +.PP +Definition at line 170 of file picasso\&.h\&. +.SH "Field Documentation" +.PP +.SS "void* _ps_glyph::glyph" +private glyph data\&. +.PP +Definition at line 172 of file picasso\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_ps_point.3 b/doc/man/man3/_ps_point.3 new file mode 100644 index 0000000..b264e2d --- /dev/null +++ b/doc/man/man3/_ps_point.3 @@ -0,0 +1,40 @@ +.TH "_ps_point" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_ps_point \- A structure that contains a point in a two-dimensional coordinate system\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "float \fBx\fP" +.br +.ti -1c +.RI "float \fBy\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +A structure that contains a point in a two-dimensional coordinate system\&. +.PP +Definition at line 202 of file picasso\&.h\&. +.SH "Field Documentation" +.PP +.SS "float _ps_point::x" +the x coordinate of the point\&. +.PP +Definition at line 204 of file picasso\&.h\&. +.SS "float _ps_point::y" +the y coordinate of the point\&. +.PP +Definition at line 206 of file picasso\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_ps_rect.3 b/doc/man/man3/_ps_rect.3 new file mode 100644 index 0000000..0fd7954 --- /dev/null +++ b/doc/man/man3/_ps_rect.3 @@ -0,0 +1,54 @@ +.TH "_ps_rect" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_ps_rect \- A structure that contains location and dimensions of a rectangle\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "float \fBx\fP" +.br +.ti -1c +.RI "float \fBy\fP" +.br +.ti -1c +.RI "float \fBw\fP" +.br +.ti -1c +.RI "float \fBh\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +A structure that contains location and dimensions of a rectangle\&. +.PP +Definition at line 188 of file picasso\&.h\&. +.SH "Field Documentation" +.PP +.SS "float _ps_rect::h" +the height of the rectangle\&. +.PP +Definition at line 196 of file picasso\&.h\&. +.SS "float _ps_rect::w" +the width of the rectangle\&. +.PP +Definition at line 194 of file picasso\&.h\&. +.SS "float _ps_rect::x" +locate left of the rectangle\&. +.PP +Definition at line 190 of file picasso\&.h\&. +.SS "float _ps_rect::y" +locate top of the rectangle\&. +.PP +Definition at line 192 of file picasso\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_ps_size.3 b/doc/man/man3/_ps_size.3 new file mode 100644 index 0000000..ac9e1bd --- /dev/null +++ b/doc/man/man3/_ps_size.3 @@ -0,0 +1,40 @@ +.TH "_ps_size" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_ps_size \- A structure that contains width and height values\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "float \fBw\fP" +.br +.ti -1c +.RI "float \fBh\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +A structure that contains width and height values\&. +.PP +Definition at line 178 of file picasso\&.h\&. +.SH "Field Documentation" +.PP +.SS "float _ps_size::h" +height value\&. +.PP +Definition at line 182 of file picasso\&.h\&. +.SS "float _ps_size::w" +width value\&. +.PP +Definition at line 180 of file picasso\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_psx_image.3 b/doc/man/man3/_psx_image.3 new file mode 100644 index 0000000..29ce724 --- /dev/null +++ b/doc/man/man3/_psx_image.3 @@ -0,0 +1,68 @@ +.TH "_psx_image" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_psx_image \- A image object\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "int \fBwidth\fP" +.br +.ti -1c +.RI "int \fBheight\fP" +.br +.ti -1c +.RI "int \fBpitch\fP" +.br +.ti -1c +.RI "\fBps_color_format\fP \fBformat\fP" +.br +.ti -1c +.RI "\fBpsx_image_frame\fP * \fBframes\fP" +.br +.ti -1c +.RI "size_t \fBnum_frames\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +A image object\&. +.PP +Definition at line 57 of file psx_image\&.h\&. +.SH "Field Documentation" +.PP +.SS "\fBps_color_format\fP _psx_image::format" +image format +.PP +Definition at line 65 of file psx_image\&.h\&. +.SS "\fBpsx_image_frame\fP* _psx_image::frames" +image data frames +.PP +Definition at line 67 of file psx_image\&.h\&. +.SS "int _psx_image::height" +image height +.PP +Definition at line 61 of file psx_image\&.h\&. +.SS "size_t _psx_image::num_frames" +number of frame +.PP +Definition at line 69 of file psx_image\&.h\&. +.SS "int _psx_image::pitch" +bytes of a scanline +.PP +Definition at line 63 of file psx_image\&.h\&. +.SS "int _psx_image::width" +image width +.PP +Definition at line 59 of file psx_image\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_psx_image_frame.3 b/doc/man/man3/_psx_image_frame.3 new file mode 100644 index 0000000..496e753 --- /dev/null +++ b/doc/man/man3/_psx_image_frame.3 @@ -0,0 +1,54 @@ +.TH "_psx_image_frame" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_psx_image_frame \- A frame image data\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "\fBps_image\fP * \fBimg\fP" +.br +.ti -1c +.RI "\fBps_byte\fP * \fBdata\fP" +.br +.ti -1c +.RI "size_t \fBsize\fP" +.br +.ti -1c +.RI "int \fBduration\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +A frame image data\&. +.PP +Definition at line 43 of file psx_image\&.h\&. +.SH "Field Documentation" +.PP +.SS "\fBps_byte\fP* _psx_image_frame::data" +image data buffer +.PP +Definition at line 47 of file psx_image\&.h\&. +.SS "int _psx_image_frame::duration" +current frame duration (in milliseconds, 0 ignore) +.PP +Definition at line 51 of file psx_image\&.h\&. +.SS "\fBps_image\fP* _psx_image_frame::img" +picasso image object wrap +.PP +Definition at line 45 of file psx_image\&.h\&. +.SS "size_t _psx_image_frame::size" +sizeof image data in bytes +.PP +Definition at line 49 of file psx_image\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_psx_image_header.3 b/doc/man/man3/_psx_image_header.3 new file mode 100644 index 0000000..0bbcbcd --- /dev/null +++ b/doc/man/man3/_psx_image_header.3 @@ -0,0 +1,89 @@ +.TH "_psx_image_header" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_psx_image_header \- Image reader header define\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "void * \fBpriv\fP" +.br +.ti -1c +.RI "int \fBwidth\fP" +.br +.ti -1c +.RI "int \fBheight\fP" +.br +.ti -1c +.RI "int \fBpitch\fP" +.br +.ti -1c +.RI "int \fBdepth\fP" +.br +.ti -1c +.RI "int \fBbpp\fP" +.br +.ti -1c +.RI "int \fBformat\fP" +.br +.ti -1c +.RI "int \fBalpha\fP" +.br +.ti -1c +.RI "int \fBframes\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Image reader header define\&. +.PP +Definition at line 44 of file psx_image_plugin\&.h\&. +.SH "Field Documentation" +.PP +.SS "int _psx_image_header::alpha" +Image has alpha channel\&. (false: 0, true: 1) +.PP +Definition at line 60 of file psx_image_plugin\&.h\&. +.SS "int _psx_image_header::bpp" +Image bpp +.PP +Definition at line 56 of file psx_image_plugin\&.h\&. +.SS "int _psx_image_header::depth" +Image depth\&. +.PP +Definition at line 54 of file psx_image_plugin\&.h\&. +.SS "int _psx_image_header::format" +Image color format +.PP +Definition at line 58 of file psx_image_plugin\&.h\&. +.SS "int _psx_image_header::frames" +Image frame count\&. +.PP +Definition at line 62 of file psx_image_plugin\&.h\&. +.SS "int _psx_image_header::height" +Image height\&. +.PP +Definition at line 50 of file psx_image_plugin\&.h\&. +.SS "int _psx_image_header::pitch" +Image pitch of scanline\&. +.PP +Definition at line 52 of file psx_image_plugin\&.h\&. +.SS "void* _psx_image_header::priv" +Private data for operator\&. +.PP +Definition at line 46 of file psx_image_plugin\&.h\&. +.SS "int _psx_image_header::width" +Image width\&. +.PP +Definition at line 48 of file psx_image_plugin\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/_psx_image_operator.3 b/doc/man/man3/_psx_image_operator.3 new file mode 100644 index 0000000..2f91c5c --- /dev/null +++ b/doc/man/man3/_psx_image_operator.3 @@ -0,0 +1,77 @@ +.TH "_psx_image_operator" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +_psx_image_operator \- The image operator define\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "int(* \fBread_header_info\fP )(const \fBps_byte\fP *data, size_t data_len, \fBpsx_image_header\fP *header)" +.br +.ti -1c +.RI "int(* \fBdecode_image_data\fP )(\fBpsx_image_header\fP *header, const \fBpsx_image\fP *image, \fBpsx_image_frame\fP *frame, int idx, \fBps_byte\fP *buffer, size_t buffer_len)" +.br +.ti -1c +.RI "int(* \fBrelease_read_header_info\fP )(\fBpsx_image_header\fP *header)" +.br +.ti -1c +.RI "int(* \fBwrite_header_info\fP )(const \fBpsx_image\fP *image, \fBimage_writer_fn\fP func, void *param, float quality, \fBpsx_image_header\fP *header)" +.br +.ti -1c +.RI "int(* \fBencode_image_data\fP )(\fBpsx_image_header\fP *header, const \fBpsx_image\fP *image, \fBpsx_image_frame\fP *frame, int idx, const \fBps_byte\fP *buffer, size_t buffer_len, int *ret)" +.br +.ti -1c +.RI "int(* \fBrelease_write_header_info\fP )(\fBpsx_image_header\fP *header)" +.br +.in -1c +.SH "Detailed Description" +.PP +The image operator define\&. + + +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_register_operator\fP \fBpsx_image_unregister_operator\fP +.RE +.PP + +.PP +Definition at line 69 of file psx_image_plugin\&.h\&. +.SH "Field Documentation" +.PP +.SS "int(* _psx_image_operator::decode_image_data) (\fBpsx_image_header\fP *header, const \fBpsx_image\fP *image, \fBpsx_image_frame\fP *frame, int idx, \fBps_byte\fP *buffer, size_t buffer_len)" +Read a frame of raw data\&. +.PP +Definition at line 73 of file psx_image_plugin\&.h\&. +.SS "int(* _psx_image_operator::encode_image_data) (\fBpsx_image_header\fP *header, const \fBpsx_image\fP *image, \fBpsx_image_frame\fP *frame, int idx, const \fBps_byte\fP *buffer, size_t buffer_len, int *ret)" +Write image data frames\&. +.PP +Definition at line 80 of file psx_image_plugin\&.h\&. +.SS "int(* _psx_image_operator::read_header_info) (const \fBps_byte\fP *data, size_t data_len, \fBpsx_image_header\fP *header)" +Create a image reader header\&. +.PP +Definition at line 71 of file psx_image_plugin\&.h\&. +.SS "int(* _psx_image_operator::release_read_header_info) (\fBpsx_image_header\fP *header)" +Release reader resources\&. +.PP +Definition at line 75 of file psx_image_plugin\&.h\&. +.SS "int(* _psx_image_operator::release_write_header_info) (\fBpsx_image_header\fP *header)" +Release writer resources\&. +.PP +Definition at line 82 of file psx_image_plugin\&.h\&. +.SS "int(* _psx_image_operator::write_header_info) (const \fBpsx_image\fP *image, \fBimage_writer_fn\fP func, void *param, float quality, \fBpsx_image_header\fP *header)" +Create a image writer header\&. +.PP +Definition at line 77 of file psx_image_plugin\&.h\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/attr.3 b/doc/man/man3/attr.3 new file mode 100644 index 0000000..e4edc9f --- /dev/null +++ b/doc/man/man3/attr.3 @@ -0,0 +1,421 @@ +.TH "attr" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +attr +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_composite\fP \fBps_composite\fP" +.br +.RI "Compositing operations for graphics context\&. " +.ti -1c +.RI "typedef enum \fB_ps_filter\fP \fBps_filter\fP" +.br +.RI "Graphics quality for rendering an image\&. " +.ti -1c +.RI "typedef enum \fB_ps_fill_rule\fP \fBps_fill_rule\fP" +.br +.RI "Fill rules for graphics\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_composite\fP { \fBCOMPOSITE_CLEAR\fP, \fBCOMPOSITE_SRC\fP, \fBCOMPOSITE_SRC_OVER\fP, \fBCOMPOSITE_SRC_IN\fP, \fBCOMPOSITE_SRC_OUT\fP, \fBCOMPOSITE_SRC_ATOP\fP, \fBCOMPOSITE_DST\fP, \fBCOMPOSITE_DST_OVER\fP, \fBCOMPOSITE_DST_IN\fP, \fBCOMPOSITE_DST_OUT\fP, \fBCOMPOSITE_DST_ATOP\fP, \fBCOMPOSITE_XOR\fP, \fBCOMPOSITE_DARKEN\fP, \fBCOMPOSITE_LIGHTEN\fP, \fBCOMPOSITE_OVERLAY\fP, \fBCOMPOSITE_SCREEN\fP, \fBCOMPOSITE_MULTIPLY\fP, \fBCOMPOSITE_PLUS\fP, \fBCOMPOSITE_MINUS\fP, \fBCOMPOSITE_EXCLUSION\fP, \fBCOMPOSITE_DIFFERENCE\fP, \fBCOMPOSITE_SOFTLIGHT\fP, \fBCOMPOSITE_HARDLIGHT\fP, \fBCOMPOSITE_BURN\fP, \fBCOMPOSITE_DODGE\fP, \fBCOMPOSITE_CONTRAST\fP, \fBCOMPOSITE_INVERT\fP, \fBCOMPOSITE_INVERT_BLEND\fP, \fBCOMPOSITE_HUE\fP, \fBCOMPOSITE_SATURATION\fP, \fBCOMPOSITE_COLOR\fP, \fBCOMPOSITE_LUMINOSITY\fP, \fBCOMPOSITE_ERROR\fP }" +.br +.RI "Compositing operations for graphics context\&. " +.ti -1c +.RI "enum \fB_ps_filter\fP { \fBFILTER_NEAREST\fP, \fBFILTER_BILINEAR\fP, \fBFILTER_GAUSSIAN\fP, \fBFILTER_BICUBIC\fP, \fBFILTER_QUADRIC\fP, \fBFILTER_UNKNOWN\fP }" +.br +.RI "Graphics quality for rendering an image\&. " +.ti -1c +.RI "enum \fB_ps_fill_rule\fP { \fBFILL_RULE_WINDING\fP, \fBFILL_RULE_EVEN_ODD\fP, \fBFILL_RULE_ERROR\fP }" +.br +.RI "Fill rules for graphics\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_composite\fP PICAPI \fBps_set_composite_operator\fP (\fBps_context\fP *ctx, \fBps_composite\fP composite)" +.br +.RI "Set composites opertaions for graphics context\&. " +.ti -1c +.RI "PEXPORT \fBps_filter\fP PICAPI \fBps_set_filter\fP (\fBps_context\fP *ctx, \fBps_filter\fP filter)" +.br +.RI "Set interpolation filter for graphic context\&. " +.ti -1c +.RI "PEXPORT \fBps_fill_rule\fP PICAPI \fBps_set_fill_rule\fP (\fBps_context\fP *ctx, \fBps_fill_rule\fP rule)" +.br +.RI "Set fill rule for graphic context\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_alpha\fP (\fBps_context\fP *ctx, float alpha)" +.br +.RI "Set the opacity level for objects drawn in graphic context\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_gamma\fP (\fBps_context\fP *ctx, float gamma)" +.br +.RI "Set the gamma value for the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_antialias\fP (\fBps_context\fP *ctx, \fBps_bool\fP antialias)" +.br +.RI "Set whether the Anti-aliasing should be turn on\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_blur\fP (\fBps_context\fP *ctx, float blur)" +.br +.RI "Set the blur level for the graphic context\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_composite\fP" + +.PP +Compositing operations for graphics context\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fICOMPOSITE_CLEAR \fP\fP +Clear operation\&. +.TP +\fB\fICOMPOSITE_SRC \fP\fP +Source operation\&. +.TP +\fB\fICOMPOSITE_SRC_OVER \fP\fP +Source over operation\&. (Default) +.TP +\fB\fICOMPOSITE_SRC_IN \fP\fP +Source in operation\&. +.TP +\fB\fICOMPOSITE_SRC_OUT \fP\fP +Source out operation\&. +.TP +\fB\fICOMPOSITE_SRC_ATOP \fP\fP +Source atop operation\&. +.TP +\fB\fICOMPOSITE_DST \fP\fP +Destination operation\&. +.TP +\fB\fICOMPOSITE_DST_OVER \fP\fP +Destination over operation\&. +.TP +\fB\fICOMPOSITE_DST_IN \fP\fP +Destination in operation\&. +.TP +\fB\fICOMPOSITE_DST_OUT \fP\fP +Destination out operation\&. +.TP +\fB\fICOMPOSITE_DST_ATOP \fP\fP +Destination atop operation\&. +.TP +\fB\fICOMPOSITE_XOR \fP\fP +Xor operation\&. +.TP +\fB\fICOMPOSITE_DARKEN \fP\fP +Source darker operation\&. +.TP +\fB\fICOMPOSITE_LIGHTEN \fP\fP +Source lighter operation\&. +.TP +\fB\fICOMPOSITE_OVERLAY \fP\fP +Overlay operation\&. +.TP +\fB\fICOMPOSITE_SCREEN \fP\fP +Screen operation\&. +.TP +\fB\fICOMPOSITE_MULTIPLY \fP\fP +Multiply operation\&. +.TP +\fB\fICOMPOSITE_PLUS \fP\fP +Plus operation\&. +.TP +\fB\fICOMPOSITE_MINUS \fP\fP +Minus operation\&. +.TP +\fB\fICOMPOSITE_EXCLUSION \fP\fP +Exclusion operation\&. +.TP +\fB\fICOMPOSITE_DIFFERENCE \fP\fP +Difference operation\&. +.TP +\fB\fICOMPOSITE_SOFTLIGHT \fP\fP +Softlight operation\&. +.TP +\fB\fICOMPOSITE_HARDLIGHT \fP\fP +Hardlight operation\&. +.TP +\fB\fICOMPOSITE_BURN \fP\fP +Burn operation\&. +.TP +\fB\fICOMPOSITE_DODGE \fP\fP +Dodge operation\&. +.TP +\fB\fICOMPOSITE_CONTRAST \fP\fP +Contrast operation\&. +.TP +\fB\fICOMPOSITE_INVERT \fP\fP +Invert operation\&. +.TP +\fB\fICOMPOSITE_INVERT_BLEND \fP\fP +Invert blend operation\&. +.TP +\fB\fICOMPOSITE_HUE \fP\fP +Hue operation\&. +.TP +\fB\fICOMPOSITE_SATURATION \fP\fP +Saturation operation\&. +.TP +\fB\fICOMPOSITE_COLOR \fP\fP +Color operation\&. +.TP +\fB\fICOMPOSITE_LUMINOSITY \fP\fP +Luminosity operation\&. +.TP +\fB\fICOMPOSITE_ERROR \fP\fP +Error value\&. +.PP +Definition at line 1508 of file picasso\&.h\&. +.SS "enum \fB_ps_fill_rule\fP" + +.PP +Fill rules for graphics\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIFILL_RULE_WINDING \fP\fP +Nonzero winding fill rule\&. (Default) +.TP +\fB\fIFILL_RULE_EVEN_ODD \fP\fP +Even-odd fill rule\&. +.TP +\fB\fIFILL_RULE_ERROR \fP\fP +Error value\&. +.PP +Definition at line 1642 of file picasso\&.h\&. +.SS "enum \fB_ps_filter\fP" + +.PP +Graphics quality for rendering an image\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIFILTER_NEAREST \fP\fP +No interpolation filter\&. +.TP +\fB\fIFILTER_BILINEAR \fP\fP +Bilinear interpolation filter\&. (Default) +.TP +\fB\fIFILTER_GAUSSIAN \fP\fP +Gaussian interpolation filter\&. +.TP +\fB\fIFILTER_BICUBIC \fP\fP +Bicubic interpolation filter\&. +.TP +\fB\fIFILTER_QUADRIC \fP\fP +Quadric interpolation filter\&. +.TP +\fB\fIFILTER_UNKNOWN \fP\fP +Error value\&. +.PP +Definition at line 1596 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "float ps_set_alpha (\fBps_context\fP * ctx, float alpha)" + +.PP +Set the opacity level for objects drawn in graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIalpha\fP A value that specifies the opacity level from transparent to opaque(0 ~ 1)\&. Default level is opaque (1)\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the old level\&. If the function fails, the return value is 0\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_gamma\fP, \fBps_set_blur\fP, \fBps_set_antialias\fP +.RE +.PP + +.SS "void ps_set_antialias (\fBps_context\fP * ctx, \fBps_bool\fP antialias)" + +.PP +Set whether the Anti-aliasing should be turn on\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIantialias\fP Boolean value whether the anti-aliasing is turn on\&. (True default) +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_alpha\fP, \fBps_set_blur\fP, \fBps_set_gamma\fP +.RE +.PP + +.SS "float ps_set_blur (\fBps_context\fP * ctx, float blur)" + +.PP +Set the blur level for the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIblur\fP A value that specifies the blur level (0 ~ 1)\&. Default value is none blur (0)\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the old level\&. If the function fails, the return value is 0\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_alpha\fP, \fBps_set_gamma\fP, \fBps_set_antialias\fP +.RE +.PP + +.SS "\fBps_composite\fP ps_set_composite_operator (\fBps_context\fP * ctx, \fBps_composite\fP composite)" + +.PP +Set composites opertaions for graphics context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcomposite\fP The Composite operation to be set\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the old operation\&. If the function fails, the return value is COMPOSITE_ERROR\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_filter\fP, \fBps_set_fill_rule\fP +.RE +.PP + +.SS "\fBps_fill_rule\fP ps_set_fill_rule (\fBps_context\fP * ctx, \fBps_fill_rule\fP rule)" + +.PP +Set fill rule for graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIrule\fP The fill rule to be set\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the old rule\&. If the function fails, the return value is FILL_RULE_ERROR\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_composite_operator\fP, \fBps_set_filter\fP +.RE +.PP + +.SS "\fBps_filter\fP ps_set_filter (\fBps_context\fP * ctx, \fBps_filter\fP filter)" + +.PP +Set interpolation filter for graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIfilter\fP The interpolation filter to be set\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the old filter\&. If the function fails, the return value is FILTER_UNKNOWN\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_composite_operator\fP, \fBps_set_fill_rule\fP +.RE +.PP + +.SS "float ps_set_gamma (\fBps_context\fP * ctx, float gamma)" + +.PP +Set the gamma value for the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIgamma\fP A value that specifies the gamma (0 ~ 3)\&. Default value is 1\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the old one\&. If the function fails, the return value is 0\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_alpha\fP, \fBps_set_blur\fP, \fBps_set_antialias\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/canvas.3 b/doc/man/man3/canvas.3 new file mode 100644 index 0000000..acf135e --- /dev/null +++ b/doc/man/man3/canvas.3 @@ -0,0 +1,469 @@ +.TH "canvas" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +canvas +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_color_format\fP \fBps_color_format\fP" +.br +.RI "Pixel formats of canvas or image\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_color_format\fP { \fBCOLOR_FORMAT_RGBA\fP, \fBCOLOR_FORMAT_ARGB\fP, \fBCOLOR_FORMAT_ABGR\fP, \fBCOLOR_FORMAT_BGRA\fP, \fBCOLOR_FORMAT_RGB\fP, \fBCOLOR_FORMAT_BGR\fP, \fBCOLOR_FORMAT_RGB565\fP, \fBCOLOR_FORMAT_RGB555\fP, \fBCOLOR_FORMAT_UNKNOWN\fP }" +.br +.RI "Pixel formats of canvas or image\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create\fP (\fBps_color_format\fP fmt, int width, int height)" +.br +.RI "Create a new canvas using the given parameters\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create_with_data\fP (\fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch)" +.br +.RI "Create a new canvas using a given address in memory\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create_compatible\fP (const \fBps_canvas\fP *canvas, int width, int height)" +.br +.RI "Create a new canvas to compatible with an existing canvas\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create_from_canvas\fP (\fBps_canvas\fP *canvas, const \fBps_rect\fP *rect)" +.br +.RI "Create a new canvas using part of an existing canvas in same pixel buffer\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create_from_image\fP (\fBps_image\fP *img, const \fBps_rect\fP *rect)" +.br +.RI "Create a new canvas using part of an existing ps_image object in same pixel buffer\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_replace_data\fP (\fBps_canvas\fP *canvas, \fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch)" +.br +.RI "Replace a canvas target rendering buffer address in memory, which is only use for canvas create by \fIps_canvas_create_with_data\fP\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_ref\fP (\fBps_canvas\fP *canvas)" +.br +.RI "Increases the reference count of the canvas by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_canvas_unref\fP (\fBps_canvas\fP *canvas)" +.br +.RI "Decrements the reference count for the canvas object\&. If the reference count on the canvas falls to 0, the canvas is freed\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_canvas_get_size\fP (const \fBps_canvas\fP *canvas, \fBps_size\fP *rsize)" +.br +.RI "Return the size of the canvas\&. " +.ti -1c +.RI "PEXPORT \fBps_color_format\fP PICAPI \fBps_canvas_get_format\fP (const \fBps_canvas\fP *canvas)" +.br +.RI "Return the pixel format of the canvas\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_canvas_set_mask\fP (\fBps_canvas\fP *canvas, const \fBps_mask\fP *mask)" +.br +.RI "Set a new mask into an existing canvas object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_canvas_reset_mask\fP (\fBps_canvas\fP *canvas)" +.br +.RI "Clear the mask from the canvas object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_canvas_bitblt\fP (\fBps_canvas\fP *src, const \fBps_rect\fP *rect, \fBps_canvas\fP *dst, const \fBps_point\fP *location)" +.br +.RI "Copy raster data between two canvas objects\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_color_format\fP" + +.PP +Pixel formats of canvas or image\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fICOLOR_FORMAT_RGBA \fP\fP +32bpp, 8bpc, RGBA color space\&. +.TP +\fB\fICOLOR_FORMAT_ARGB \fP\fP +32bpp, 8bpc, ARGB color space\&. +.TP +\fB\fICOLOR_FORMAT_ABGR \fP\fP +32bpp, 8bpc, ABGR color space\&. +.TP +\fB\fICOLOR_FORMAT_BGRA \fP\fP +32bpp, 8bpc, BGRA color space\&. +.TP +\fB\fICOLOR_FORMAT_RGB \fP\fP +24bpp, 8bpc, RGB color space\&. +.TP +\fB\fICOLOR_FORMAT_BGR \fP\fP +24bpp, 8bpc, BGR color space\&. +.TP +\fB\fICOLOR_FORMAT_RGB565 \fP\fP +16bpp, 5/6bpc, RGB color space\&. +.TP +\fB\fICOLOR_FORMAT_RGB555 \fP\fP +16bpp, 5bpc, RGB color space\&. +.TP +\fB\fICOLOR_FORMAT_UNKNOWN \fP\fP +Unsupported color space\&. +.PP +Definition at line 394 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "void ps_canvas_bitblt (\fBps_canvas\fP * src, const \fBps_rect\fP * rect, \fBps_canvas\fP * dst, const \fBps_point\fP * location)" + +.PP +Copy raster data between two canvas objects\&. +.PP +\fBParameters\fP +.RS 4 +\fIsrc\fP The pointer to source canvas object\&. +.br +\fIrect\fP The rectangle area will be copied in source canvas, NULL mean the whole area\&. +.br +\fIdst\fP The pointer to destination canvas object\&. +.br +\fIlocation\fP The location of the start point at destination canvas object\&. +.RE +.PP +\fBNote\fP +.RS 4 +The two canvas's color format must be equal, otherwish will be failed and \fISTATUS_MISMATCHING_FORMAT\fP will be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_get_size\fP, \fBps_canvas_get_format\fP +.RE +.PP + +.SS "\fBps_canvas\fP * ps_canvas_create (\fBps_color_format\fP fmt, int width, int height)" + +.PP +Create a new canvas using the given parameters\&. +.PP +\fBParameters\fP +.RS 4 +\fIfmt\fP The Pixel format to use for the canvas\&. +.br +\fIwidth\fP The width, in pixels, of the required canvas\&. +.br +\fIheight\fP The height, in pixels, of the required canvas\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new canvas object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_create_with_data\fP, \fBps_canvas_create_compatible\fP, \fBps_canvas_create_from_canvas\fP, \fBps_canvas_create_from_image\fP, \fBps_canvas_ref\fP, \fBps_canvas_unref\fP +.RE +.PP + +.SS "\fBps_canvas\fP * ps_canvas_create_compatible (const \fBps_canvas\fP * canvas, int width, int height)" + +.PP +Create a new canvas to compatible with an existing canvas\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP A pointer to an existing canvas\&. +.br +\fIwidth\fP The width, in pixels, of the required canvas\&. If it is not more than zero, the width will be equal to the width of the reference canvas\&. +.br +\fIheight\fP The height, in pixels, of the required canvas\&. If it is not more than zero, the height will be equal to the height of the reference canvas\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new canvas object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_create\fP, \fBps_canvas_create_with_data\fP, \fBps_canvas_create_from_canvas\fP, \fBps_canvas_create_from_image\fP, \fBps_canvas_ref\fP, \fBps_canvas_unref\fP +.RE +.PP + +.SS "\fBps_canvas\fP * ps_canvas_create_from_canvas (\fBps_canvas\fP * canvas, const \fBps_rect\fP * rect)" + +.PP +Create a new canvas using part of an existing canvas in same pixel buffer\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP A pointer to an existing canvas\&. +.br +\fIrect\fP The rectangle area of the canvas from the parent canvas\&. If it is NULL, the canvas's width and height will be equal to the parant canvas\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new canvas object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_create\fP, \fBps_canvas_create_with_data\fP, \fBps_canvas_create_compatible\fP, \fBps_canvas_create_from_image\fP, \fBps_canvas_ref\fP, \fBps_canvas_unref\fP +.RE +.PP + +.SS "\fBps_canvas\fP * ps_canvas_create_from_image (\fBps_image\fP * img, const \fBps_rect\fP * rect)" + +.PP +Create a new canvas using part of an existing ps_image object in same pixel buffer\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP A pointer to an existing ps_image object\&. +.br +\fIrect\fP The rectangle area of the canvas from the ps_image\&. If it is NULL, the canvas's width and height will be equal to ps_image object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new canvas object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_create\fP, \fBps_canvas_create_with_data\fP, \fBps_canvas_create_compatible\fP, \fBps_canvas_create_from_canvas\fP, \fBps_canvas_ref\fP, \fBps_canvas_unref\fP +.RE +.PP + +.SS "\fBps_canvas\fP * ps_canvas_create_with_data (\fBps_byte\fP * data, \fBps_color_format\fP fmt, int width, int height, int pitch)" + +.PP +Create a new canvas using a given address in memory\&. +.PP +\fBParameters\fP +.RS 4 +\fIdata\fP A pointer to the destination in memory where the drawing is to be rendered\&. The size of this memory block should be at least (pitch * height) bytes\&. +.br +\fIfmt\fP The Pixel format to use for the canvas\&. +.br +\fIwidth\fP The width, in pixels, of the required canvas\&. +.br +\fIheight\fP The height, in pixels, of the required canvas\&. +.br +\fIpitch\fP The number of bytes per row, of the required canvas\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new canvas object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_create\fP, \fBps_canvas_create_compatible\fP, \fBps_canvas_create_from_canvas\fP, \fBps_canvas_create_from_image\fP, \fBps_canvas_ref\fP, \fBps_canvas_unref\fP, \fBps_canvas_replace_data\fP +.RE +.PP + +.SS "\fBps_color_format\fP ps_canvas_get_format (const \fBps_canvas\fP * canvas)" + +.PP +Return the pixel format of the canvas\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP Pointer to an existing canvas object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return a valid color format\&. If the function fails, the return value is COLOR_FORMAT_UNKNOWN\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_get_size\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_canvas_get_size (const \fBps_canvas\fP * canvas, \fBps_size\fP * rsize)" + +.PP +Return the size of the canvas\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP Pointer to an existing canvas object\&. +.br +\fIrsize\fP Pointer to a buffer to receiving the size\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_get_format\fP +.RE +.PP + +.SS "\fBps_canvas\fP * ps_canvas_ref (\fBps_canvas\fP * canvas)" + +.PP +Increases the reference count of the canvas by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP Pointer to an existing canvas object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the canvas object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_create\fP, \fBps_canvas_create_with_data\fP, \fBps_canvas_create_compatible\fP, \fBps_canvas_create_from_canvas\fP, \fBps_canvas_create_from_image\fP, \fBps_canvas_unref\fP +.RE +.PP + +.SS "\fBps_canvas\fP *PICAPI ps_canvas_replace_data (\fBps_canvas\fP * canvas, \fBps_byte\fP * data, \fBps_color_format\fP fmt, int width, int height, int pitch)" + +.PP +Replace a canvas target rendering buffer address in memory, which is only use for canvas create by \fIps_canvas_create_with_data\fP\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP Pointer to an existing canvas object\&. +.br +\fIdata\fP A pointer to the destination in memory where the drawing is to be rendered\&. The size of this memory block should be at least (pitch * height) bytes\&. +.br +\fIfmt\fP The Pixel format to use for the canvas\&. +.br +\fIwidth\fP The width, in pixels, of the required canvas\&. +.br +\fIheight\fP The height, in pixels, of the required canvas\&. +.br +\fIpitch\fP The number of bytes per row, of the required canvas\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new canvas object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +The data's color format must be equal with target canvas, otherwish will be failed and \fISTATUS_MISMATCHING_FORMAT\fP will be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_create_with_data\fP +.RE +.PP + +.SS "void ps_canvas_reset_mask (\fBps_canvas\fP * canvas)" + +.PP +Clear the mask from the canvas object\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP Pointer to an existing canvas object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_set_mask\fP +.RE +.PP + +.SS "void ps_canvas_set_mask (\fBps_canvas\fP * canvas, const \fBps_mask\fP * mask)" + +.PP +Set a new mask into an existing canvas object\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP Pointer to an existing canvas object\&. +.br +\fImask\fP Pointer to an existing mask object to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_reset_mask\fP +.RE +.PP + +.SS "void ps_canvas_unref (\fBps_canvas\fP * canvas)" + +.PP +Decrements the reference count for the canvas object\&. If the reference count on the canvas falls to 0, the canvas is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP Pointer to an existing canvas object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas_create\fP, \fBps_canvas_create_with_data\fP, \fBps_canvas_create_compatible\fP, \fBps_canvas_create_from_canvas\fP, \fBps_canvas_create_from_image\fP, \fBps_canvas_ref\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/clip.3 b/doc/man/man3/clip.3 new file mode 100644 index 0000000..b7fe256 --- /dev/null +++ b/doc/man/man3/clip.3 @@ -0,0 +1,157 @@ +.TH "clip" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +clip +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clip\fP (\fBps_context\fP *ctx)" +.br +.RI "Clipping the current path, using the current fill rule\&. After called, the current path will be cleared from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clip_path\fP (\fBps_context\fP *ctx, const \fBps_path\fP *path, \fBps_fill_rule\fP rule)" +.br +.RI "Clipping specified path, using the given fill rule\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clip_rect\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect)" +.br +.RI "Clipping specified rectangle\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_scissor_rect\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect)" +.br +.RI "The fast way to clipping specified rectangle, the clip rect can not be transformed by world matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clip_rects\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rects, unsigned int num_rects)" +.br +.RI "Clipping specified area defined by an array of rectangles\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_reset_clip\fP (\fBps_context\fP *ctx)" +.br +.RI "Clear the clipping area from the context\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "void ps_clip (\fBps_context\fP * ctx)" + +.PP +Clipping the current path, using the current fill rule\&. After called, the current path will be cleared from the context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_clip_path\fP, \fBps_clip_rect\fP, \fBps_clip_rects\fP, \fBps_reset_clip\fP +.RE +.PP + +.SS "void ps_clip_path (\fBps_context\fP * ctx, const \fBps_path\fP * path, \fBps_fill_rule\fP rule)" + +.PP +Clipping specified path, using the given fill rule\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpath\fP The path which will be clipped\&. +.br +\fIrule\fP The rule of the path\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_clip\fP, \fBps_clip_rect\fP, \fBps_clip_rects\fP, \fBps_reset_clip\fP +.RE +.PP + +.SS "void ps_clip_rect (\fBps_context\fP * ctx, const \fBps_rect\fP * rect)" + +.PP +Clipping specified rectangle\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIrect\fP The rectangle which will be clipped\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_clip\fP, \fBps_clip_path\fP, \fBps_clip_rects\fP, \fBps_reset_clip\fP, \fBps_scissor_rect\fP +.RE +.PP + +.SS "void ps_clip_rects (\fBps_context\fP * ctx, const \fBps_rect\fP * rects, unsigned int num_rects)" + +.PP +Clipping specified area defined by an array of rectangles\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIrects\fP The array of rectangles which will be clipped\&. +.br +\fInum_rects\fP The number of array entries\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_clip\fP, \fBps_clip_path\fP, \fBps_clip_rect\fP, \fBps_reset_clip\fP +.RE +.PP + +.SS "void ps_reset_clip (\fBps_context\fP * ctx)" + +.PP +Clear the clipping area from the context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_clip\fP, \fBps_clip_path\fP, \fBps_clip_rect\fP, \fBps_clip_rects\fP +.RE +.PP + +.SS "void ps_scissor_rect (\fBps_context\fP * ctx, const \fBps_rect\fP * rect)" + +.PP +The fast way to clipping specified rectangle, the clip rect can not be transformed by world matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIrect\fP The rectangle which will be clipped\&. +.RE +.PP +\fBNote\fP +.RS 4 +This function is deprecated, will be remove feature\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_clip\fP, \fBps_clip_path\fP, \fBps_clip_rects\fP, \fBps_reset_clip\fP, \fBps_clip_rect\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/coder.3 b/doc/man/man3/coder.3 new file mode 100644 index 0000000..9ab0749 --- /dev/null +++ b/doc/man/man3/coder.3 @@ -0,0 +1,83 @@ +.TH "coder" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +coder +.SH SYNOPSIS +.br +.PP +.SS "Macros" + +.in +1c +.ti -1c +.RI "#define \fBMODULE_NAME\fP 1" +.br +.RI "Get module name\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void \fBpsx_image_module_init\fP (void)" +.br +.RI "Initialze the image module\&. " +.ti -1c +.RI "PEXPORT void \fBpsx_image_module_shutdown\fP (void)" +.br +.RI "Shutdown the image module\&. " +.ti -1c +.RI "const PEXPORT char * \fBpsx_image_module_get_string\fP (int id)" +.br +.RI "Get the string info about module\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "char * psx_image_module_get_string (int id)" + +.PP +Get the string info about module\&. +.PP +\fBParameters\fP +.RS 4 +\fIid\fP The information index\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If successs, return the pointer of string\&. Can not be modify and free\&. If fails, return NULL\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_module_init\fP \fBpsx_image_module_shutdown\fP +.RE +.PP + +.SS "void psx_image_module_init (void)" + +.PP +Initialze the image module\&. +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_module_shutdown\fP \fBpsx_image_module_get_string\fP +.RE +.PP + +.SS "void psx_image_module_shutdown (void)" + +.PP +Shutdown the image module\&. +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_module_init\fP \fBpsx_image_module_get_string\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/common.3 b/doc/man/man3/common.3 new file mode 100644 index 0000000..77cb675 --- /dev/null +++ b/doc/man/man3/common.3 @@ -0,0 +1,133 @@ +.TH "common" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +common +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_status\fP \fBps_status\fP" +.br +.RI "Status code return by call ps_last_status function\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_status\fP { \fBSTATUS_SUCCEED\fP, \fBSTATUS_OUT_OF_MEMORY\fP, \fBSTATUS_INVALID_ARGUMENT\fP, \fBSTATUS_NOT_SUPPORT\fP, \fBSTATUS_DEVICE_ERROR\fP, \fBSTATUS_MISMATCHING_FORMAT\fP, \fBSTATUS_UNKNOWN_ERROR\fP }" +.br +.RI "Status code return by call ps_last_status function\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT int PICAPI \fBps_version\fP (void)" +.br +.RI "Return current version of picasso\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_initialize\fP (void)" +.br +.RI "Initialize the picasso drawing environment\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_shutdown\fP (void)" +.br +.RI "Shutdown the picasso drawing environment\&. " +.ti -1c +.RI "PEXPORT \fBps_status\fP PICAPI \fBps_last_status\fP (void)" +.br +.RI "Return the last status code of picasso\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_status\fP" + +.PP +Status code return by call ps_last_status function\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fISTATUS_SUCCEED \fP\fP +The successful status no errors\&. +.TP +\fB\fISTATUS_OUT_OF_MEMORY \fP\fP +Out of memory\&. +.TP +\fB\fISTATUS_INVALID_ARGUMENT \fP\fP +Invalid argument input\&. +.TP +\fB\fISTATUS_NOT_SUPPORT \fP\fP +Not support this feature\&. +.TP +\fB\fISTATUS_DEVICE_ERROR \fP\fP +Device is not ready\&. +.TP +\fB\fISTATUS_MISMATCHING_FORMAT \fP\fP +Mismatching error\&. +.TP +\fB\fISTATUS_UNKNOWN_ERROR \fP\fP +Unknown error\&. +.PP +Definition at line 262 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "\fBps_bool\fP ps_initialize (void)" + +.PP +Initialize the picasso drawing environment\&. It must be the first to be call\&. +.PP +\fBReturns\fP +.RS 4 +True if is initialized, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_shutdown\fP +.RE +.PP + +.SS "\fBps_status\fP ps_last_status (void)" + +.PP +Return the last status code of picasso\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_version\fP +.RE +.PP + +.SS "void ps_shutdown (void)" + +.PP +Shutdown the picasso drawing environment\&. It must be call in the end\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_initialize\fP +.RE +.PP + +.SS "int ps_version (void)" + +.PP +Return current version of picasso\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_last_status\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/context.3 b/doc/man/man3/context.3 new file mode 100644 index 0000000..86f586c --- /dev/null +++ b/doc/man/man3/context.3 @@ -0,0 +1,164 @@ +.TH "context" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +context +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_context\fP *PICAPI \fBps_context_create\fP (\fBps_canvas\fP *canvas, \fBps_context\fP *shared_context)" +.br +.RI "Create a new graphic context for a canvas\&. " +.ti -1c +.RI "PEXPORT \fBps_context\fP *PICAPI \fBps_context_ref\fP (\fBps_context\fP *ctx)" +.br +.RI "Increases the reference count of the context by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_context_unref\fP (\fBps_context\fP *ctx)" +.br +.RI "Decrements the reference count for the context object\&. If the reference count on the context falls to 0, the context is freed\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_context_set_canvas\fP (\fBps_context\fP *ctx, \fBps_canvas\fP *canvas)" +.br +.RI "Set a new canvas into a context, and return the old one\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_context_get_canvas\fP (\fBps_context\fP *ctx)" +.br +.RI "Get the canvas from the context\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "\fBps_context\fP * ps_context_create (\fBps_canvas\fP * canvas, \fBps_context\fP * shared_context)" + +.PP +Create a new graphic context for a canvas\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP Pointer to an existing canvas object\&. +.br +\fIshared_context\fP Resources shared context, NULL mean resources not shared\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new context object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_context_set_canvas\fP, \fBps_context_get_canvas\fP, \fBps_context_ref\fP, \fBps_context_unref\fP +.RE +.PP + +.SS "\fBps_canvas\fP * ps_context_get_canvas (\fBps_context\fP * ctx)" + +.PP +Get the canvas from the context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is a pointer to the canvas\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_context_create\fP, \fBps_context_ref\fP, \fBps_context_unref\fP, \fBps_context_set_canvas\fP +.RE +.PP + +.SS "\fBps_context\fP * ps_context_ref (\fBps_context\fP * ctx)" + +.PP +Increases the reference count of the context by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the context object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_context_set_canvas\fP, \fBps_context_get_canvas\fP, \fBps_context_create\fP, \fBps_context_unref\fP +.RE +.PP + +.SS "\fBps_canvas\fP * ps_context_set_canvas (\fBps_context\fP * ctx, \fBps_canvas\fP * canvas)" + +.PP +Set a new canvas into a context, and return the old one\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcanvas\fP Pointer to an existing canvas object to be set\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is a pointer to the canvas being replaced\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_context_create\fP, \fBps_context_ref\fP, \fBps_context_unref\fP, \fBps_context_get_canvas\fP +.RE +.PP + +.SS "void ps_context_unref (\fBps_context\fP * ctx)" + +.PP +Decrements the reference count for the context object\&. If the reference count on the context falls to 0, the context is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_context_set_canvas\fP, \fBps_context_get_canvas\fP, \fBps_context_create\fP, \fBps_context_ref\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/data.3 b/doc/man/man3/data.3 new file mode 100644 index 0000000..7adf55e --- /dev/null +++ b/doc/man/man3/data.3 @@ -0,0 +1,128 @@ +.TH "data" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +data +.SH SYNOPSIS +.br +.PP +.SS "Macros" + +.in +1c +.ti -1c +.RI "#define \fBTrue\fP 1" +.br +.RI "define true value " +.ti -1c +.RI "#define \fBFalse\fP 0" +.br +.RI "define false value " +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef int \fBps_bool\fP" +.br +.RI "boolean type " +.ti -1c +.RI "typedef uint16_t \fBps_uchar16\fP" +.br +.RI "16 bit unsigned unicode character " +.ti -1c +.RI "typedef int16_t \fBps_schar16\fP" +.br +.RI "16 bit signed unicode character " +.ti -1c +.RI "typedef uint8_t \fBps_byte\fP" +.br +.RI "byte data type " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Macro Definition Documentation" +.PP +.SS "#define False 0" + +.PP +define false value +.PP +\fBSee also\fP +.RS 4 +\fBTrue\fP +.RE +.PP + +.PP +Definition at line 74 of file picasso\&.h\&. +.SS "#define True 1" + +.PP +define true value +.PP +\fBSee also\fP +.RS 4 +\fBFalse\fP +.RE +.PP + +.PP +Definition at line 67 of file picasso\&.h\&. +.SH "Typedef Documentation" +.PP +.SS "\fBps_bool\fP" + +.PP +boolean type +.PP +\fBSee also\fP +.RS 4 +\fBps_uchar16\fP, \fBps_schar16\fP, \fBps_byte\fP +.RE +.PP + +.PP +Definition at line 60 of file picasso\&.h\&. +.SS "\fBps_byte\fP" + +.PP +byte data type +.PP +\fBSee also\fP +.RS 4 +\fBps_bool\fP, \fBps_uchar16\fP, \fBps_schar16\fP +.RE +.PP + +.PP +Definition at line 95 of file picasso\&.h\&. +.SS "\fBps_schar16\fP" + +.PP +16 bit signed unicode character +.PP +\fBSee also\fP +.RS 4 +\fBps_bool\fP, \fBps_uchar16\fP, \fBps_byte\fP +.RE +.PP + +.PP +Definition at line 88 of file picasso\&.h\&. +.SS "\fBps_uchar16\fP" + +.PP +16 bit unsigned unicode character +.PP +\fBSee also\fP +.RS 4 +\fBps_bool\fP, \fBps_schar16\fP, \fBps_byte\fP +.RE +.PP + +.PP +Definition at line 81 of file picasso\&.h\&. +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/drawing.3 b/doc/man/man3/drawing.3 new file mode 100644 index 0000000..db8492c --- /dev/null +++ b/doc/man/man3/drawing.3 @@ -0,0 +1,39 @@ +.TH "drawing" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +drawing +.SH SYNOPSIS +.br +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "\fBFill\fP" +.br +.ti -1c +.RI "\fBStroke\fP" +.br +.ti -1c +.RI "\fBShadow\fP" +.br +.ti -1c +.RI "\fBAttribute\fP" +.br +.ti -1c +.RI "\fBPaint\fP" +.br +.ti -1c +.RI "\fBClip\fP" +.br +.ti -1c +.RI "\fBState\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/extension.3 b/doc/man/man3/extension.3 new file mode 100644 index 0000000..7b9ce6a --- /dev/null +++ b/doc/man/man3/extension.3 @@ -0,0 +1,21 @@ +.TH "extension" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +extension +.SH SYNOPSIS +.br +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "\fBXImage Extension\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/extimg.3 b/doc/man/man3/extimg.3 new file mode 100644 index 0000000..7ccd708 --- /dev/null +++ b/doc/man/man3/extimg.3 @@ -0,0 +1,30 @@ +.TH "extimg" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +extimg +.SH SYNOPSIS +.br +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "\fBXImage Object Types\fP" +.br +.ti -1c +.RI "\fBXImage Functions\fP" +.br +.ti -1c +.RI "\fBXImage Coders Register functions\fP" +.br +.ti -1c +.RI "\fBXImage Coders Plugin side functions\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/fill.3 b/doc/man/man3/fill.3 new file mode 100644 index 0000000..dce7357 --- /dev/null +++ b/doc/man/man3/fill.3 @@ -0,0 +1,130 @@ +.TH "fill" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +fill +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set a Color to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_image\fP (\fBps_context\fP *ctx, const \fBps_image\fP *image)" +.br +.RI "Set a image to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_pattern\fP (\fBps_context\fP *ctx, const \fBps_pattern\fP *pattern)" +.br +.RI "Set a pattern to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_gradient\fP (\fBps_context\fP *ctx, const \fBps_gradient\fP *gradient)" +.br +.RI "Set a gradient to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_canvas\fP (\fBps_context\fP *ctx, const \fBps_canvas\fP *canvas)" +.br +.RI "Set a canvas to the context, it is used to fill a graphic object\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "void ps_set_source_canvas (\fBps_context\fP * ctx, const \fBps_canvas\fP * canvas)" + +.PP +Set a canvas to the context, it is used to fill a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcanvas\fP The canvas to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_source_color\fP, \fBps_set_source_image\fP, \fBps_set_source_pattern\fP, \fBps_set_source_gradient\fP +.RE +.PP + +.SS "void ps_set_source_color (\fBps_context\fP * ctx, const \fBps_color\fP * color)" + +.PP +Set a Color to the context, it is used to fill a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcolor\fP The color to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_source_image\fP, \fBps_set_source_pattern\fP, \fBps_set_source_gradient\fP, \fBps_set_source_canvas\fP +.RE +.PP + +.SS "void ps_set_source_gradient (\fBps_context\fP * ctx, const \fBps_gradient\fP * gradient)" + +.PP +Set a gradient to the context, it is used to fill a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIgradient\fP The gradient to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_source_color\fP, \fBps_set_source_image\fP, \fBps_set_source_pattern\fP, \fBps_set_source_canvas\fP +.RE +.PP + +.SS "void ps_set_source_image (\fBps_context\fP * ctx, const \fBps_image\fP * image)" + +.PP +Set a image to the context, it is used to fill a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIimage\fP The image to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_source_color\fP, \fBps_set_source_pattern\fP, \fBps_set_source_gradient\fP, \fBps_set_source_canvas\fP +.RE +.PP + +.SS "void ps_set_source_pattern (\fBps_context\fP * ctx, const \fBps_pattern\fP * pattern)" + +.PP +Set a pattern to the context, it is used to fill a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpattern\fP The pattern to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_source_color\fP, \fBps_set_source_image\fP, \fBps_set_source_gradient\fP, \fBps_set_source_canvas\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/font.3 b/doc/man/man3/font.3 new file mode 100644 index 0000000..b119dd1 --- /dev/null +++ b/doc/man/man3/font.3 @@ -0,0 +1,403 @@ +.TH "font" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +font +.SH SYNOPSIS +.br +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fB_ps_font_info\fP" +.br +.RI "A structure that contains font information\&. " +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_charset\fP \fBps_charset\fP" +.br +.RI "Charset for a font\&. " +.ti -1c +.RI "typedef enum \fB_ps_font_weight\fP \fBps_font_weight\fP" +.br +.RI "Font weight\&. " +.ti -1c +.RI "typedef struct \fB_ps_font_info\fP \fBps_font_info\fP" +.br +.RI "A structure that contains font information\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_charset\fP { \fBCHARSET_ANSI\fP, \fBCHARSET_UNICODE\fP }" +.br +.RI "Charset for a font\&. " +.ti -1c +.RI "enum \fB_ps_font_weight\fP { \fBFONT_WEIGHT_REGULAR\fP = 400, \fBFONT_WEIGHT_MEDIUM\fP = 500, \fBFONT_WEIGHT_BOLD\fP = 700, \fBFONT_WEIGHT_HEAVY\fP = 900 }" +.br +.RI "Font weight\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_font\fP *PICAPI \fBps_font_create\fP (const char *name, \fBps_charset\fP charset, float size, int weight, \fBps_bool\fP italic)" +.br +.RI "Create a font object using the given parameters\&. " +.ti -1c +.RI "PEXPORT \fBps_font\fP *PICAPI \fBps_font_create_copy\fP (const \fBps_font\fP *font)" +.br +.RI "Create a copy from an existing font object\&. " +.ti -1c +.RI "PEXPORT \fBps_font\fP *PICAPI \fBps_font_ref\fP (\fBps_font\fP *font)" +.br +.RI "Increases the reference count of the font by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_unref\fP (\fBps_font\fP *font)" +.br +.RI "Decrements the reference count for the font object\&. If the reference count on the font falls to 0, the font is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_size\fP (\fBps_font\fP *font, float size)" +.br +.RI "Set size for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_weight\fP (\fBps_font\fP *font, int weight)" +.br +.RI "Set weight for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_italic\fP (\fBps_font\fP *font, \fBps_bool\fP italic)" +.br +.RI "Set italic for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_charset\fP (\fBps_font\fP *font, \fBps_charset\fP charset)" +.br +.RI "Set charset for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_hint\fP (\fBps_font\fP *font, \fBps_bool\fP hint)" +.br +.RI "Set hiting for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_flip\fP (\fBps_font\fP *font, \fBps_bool\fP flip)" +.br +.RI "Set flip for a font object\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_font_info\fP (\fBps_context\fP *ctx, \fBps_font_info\fP *info)" +.br +.RI "Return the font information from the graphics context\&. " +.ti -1c +.RI "PEXPORT \fBps_font\fP *PICAPI \fBps_set_font\fP (\fBps_context\fP *ctx, const \fBps_font\fP *font)" +.br +.RI "Set a new font to graphics context\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_charset\fP" + +.PP +Charset for a font\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fICHARSET_ANSI \fP\fP +Ansi ISO-8859-x charset +.TP +\fB\fICHARSET_UNICODE \fP\fP +Unicode UCS-2 charset +.PP +Definition at line 1919 of file picasso\&.h\&. +.SS "enum \fB_ps_font_weight\fP" + +.PP +Font weight\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIFONT_WEIGHT_REGULAR \fP\fP +Regular weight\&. +.TP +\fB\fIFONT_WEIGHT_MEDIUM \fP\fP +Medium weight\&. +.TP +\fB\fIFONT_WEIGHT_BOLD \fP\fP +Bold weight\&. +.TP +\fB\fIFONT_WEIGHT_HEAVY \fP\fP +Heavy weight\&. +.PP +Definition at line 1933 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "\fBps_font\fP * ps_font_create (const char * name, \fBps_charset\fP charset, float size, int weight, \fBps_bool\fP italic)" + +.PP +Create a font object using the given parameters\&. +.PP +\fBParameters\fP +.RS 4 +\fIname\fP The font family name\&. +.br +\fIcharset\fP The charset type\&. +.br +\fIsize\fP The font size\&. +.br +\fIweight\fP The font weight\&. +.br +\fIitalic\fP Whether or not it is italic\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new font object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_create_copy\fP, \fBps_font_ref\fP, \fBps_font_unref\fP +.RE +.PP + +.SS "\fBps_font\fP * ps_font_create_copy (const \fBps_font\fP * font)" + +.PP +Create a copy from an existing font object\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new font object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_create\fP, \fBps_font_ref\fP, \fBps_font_unref\fP +.RE +.PP + +.SS "\fBps_font\fP * ps_font_ref (\fBps_font\fP * font)" + +.PP +Increases the reference count of the font by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the font object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_create\fP, \fBps_font_create_copy\fP, \fBps_font_unref\fP +.RE +.PP + +.SS "void ps_font_set_charset (\fBps_font\fP * font, \fBps_charset\fP charset)" + +.PP +Set charset for a font object\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.br +\fIcharset\fP Charset for the font\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_set_size\fP, \fBps_font_set_weight\fP, \fBps_font_set_italic\fP, \fBps_font_set_hint\fP, \fBps_font_set_flip\fP +.RE +.PP + +.SS "void ps_font_set_flip (\fBps_font\fP * font, \fBps_bool\fP flip)" + +.PP +Set flip for a font object\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.br +\fIflip\fP Whether or not flip y for the font\&. (False default) +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_set_size\fP, \fBps_font_set_weight\fP, \fBps_font_set_italic\fP, \fBps_font_set_charset\fP, \fBps_font_set_hint\fP +.RE +.PP + +.SS "void ps_font_set_hint (\fBps_font\fP * font, \fBps_bool\fP hint)" + +.PP +Set hiting for a font object\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.br +\fIhint\fP Whether or not auto hiting for the font\&. (True default) +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_set_size\fP, \fBps_font_set_weight\fP, \fBps_font_set_italic\fP, \fBps_font_set_charset\fP, \fBps_font_set_flip\fP +.RE +.PP + +.SS "void ps_font_set_italic (\fBps_font\fP * font, \fBps_bool\fP italic)" + +.PP +Set italic for a font object\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.br +\fIitalic\fP Whether or not italic for the font\&. (False default) +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_set_size\fP, \fBps_font_set_weight\fP, \fBps_font_set_charset\fP, \fBps_font_set_hint\fP, \fBps_font_set_flip\fP +.RE +.PP + +.SS "void ps_font_set_size (\fBps_font\fP * font, float size)" + +.PP +Set size for a font object\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.br +\fIsize\fP Size for the font\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_set_weight\fP, \fBps_font_set_italic\fP, \fBps_font_set_charset\fP, \fBps_font_set_hint\fP, \fBps_font_set_flip\fP +.RE +.PP + +.SS "void ps_font_set_weight (\fBps_font\fP * font, int weight)" + +.PP +Set weight for a font object\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.br +\fIweight\fP Weight for the font\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_set_size\fP, \fBps_font_set_italic\fP, \fBps_font_set_charset\fP, \fBps_font_set_hint\fP, \fBps_font_set_flip\fP +.RE +.PP + +.SS "void ps_font_unref (\fBps_font\fP * font)" + +.PP +Decrements the reference count for the font object\&. If the reference count on the font falls to 0, the font is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fIfont\fP Pointer to an existing font object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_font_create\fP, \fBps_font_create_copy\fP, \fBps_font_ref\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_get_font_info (\fBps_context\fP * ctx, \fBps_font_info\fP * info)" + +.PP +Return the font information from the graphics context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIinfo\fP Pointer to a structure to receiving the font information\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_font\fP +.RE +.PP + +.SS "\fBps_font\fP * ps_set_font (\fBps_context\fP * ctx, const \fBps_font\fP * font)" + +.PP +Set a new font to graphics context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIfont\fP The new font to be set\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to old font object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_get_font_info\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/functions.3 b/doc/man/man3/functions.3 new file mode 100644 index 0000000..08443b3 --- /dev/null +++ b/doc/man/man3/functions.3 @@ -0,0 +1,248 @@ +.TH "functions" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +functions +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef int(* \fBimage_writer_fn\fP) (void *param, const \fBps_byte\fP *data, size_t length)" +.br +.RI "Callback function for saving image data\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_init\fP (void)" +.br +.RI "Initialze the library and load resources\&. " +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_shutdown\fP (void)" +.br +.RI "Release resources and shutdoen\&. " +.ti -1c +.RI "PEXPORT \fBpsx_image\fP *PICAPI \fBpsx_image_create_from_data\fP (\fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch, int *err_code)" +.br +.RI "Create a new psx_image using a copy of given address in memory\&. " +.ti -1c +.RI "PEXPORT \fBpsx_image\fP *PICAPI \fBpsx_image_load\fP (const char *file_name, int *err_code)" +.br +.RI "Create a new psx_image object and load from file\&. " +.ti -1c +.RI "PEXPORT \fBpsx_image\fP *PICAPI \fBpsx_image_load_from_memory\fP (const \fBps_byte\fP *data, size_t length, int *err_code)" +.br +.RI "Create a new psx_image object and load data from memory\&. " +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_save\fP (const \fBpsx_image\fP *image, \fBimage_writer_fn\fP func, void *param, const char *type, float quality)" +.br +.RI "Encoding psx_image to a gaving format and output it\&. " +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_save_to_file\fP (const \fBpsx_image\fP *image, const char *file_name, const char *type, float quality)" +.br +.RI "Encoding psx_image to a gaving format and output to a file\&. " +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_destroy\fP (\fBpsx_image\fP *image)" +.br +.RI "Destroy the psx_image object and release resources\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "\fBpsx_image\fP * psx_image_create_from_data (\fBps_byte\fP * data, \fBps_color_format\fP fmt, int width, int height, int pitch, int * err_code)" + +.PP +Create a new psx_image using a copy of given address in memory\&. +.PP +\fBParameters\fP +.RS 4 +\fIdata\fP A pointer to the destination in memory where the drawing is to be rendered\&. The size of this memory block should be at least (pitch * height) bytes\&. +.br +\fIfmt\fP The Pixel format to use for the image\&. +.br +\fIwidth\fP The width, in pixels, of the required image\&. +.br +\fIheight\fP The height, in pixels, of the required image\&. +.br +\fIpitch\fP The number of bytes per row, of the required image\&. +.br +\fIerr_code\fP Pointer to a value to receiving the result code\&. can be NULL\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new psx_image object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_load\fP \fBpsx_image_load_from_memory\fP \fBpsx_image_destroy\fP +.RE +.PP + +.SS "int psx_image_destroy (\fBpsx_image\fP * image)" + +.PP +Destroy the psx_image object and release resources\&. +.PP +\fBParameters\fP +.RS 4 +\fIimage\fP Pointer to an existing psx_image object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +Result code returned\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_load\fP \fBpsx_image_load_from_memory\fP +.RE +.PP + +.SS "int psx_image_init (void)" + +.PP +Initialze the library and load resources\&. +.PP +\fBReturns\fP +.RS 4 +Result code returned\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_shutdown\fP +.RE +.PP + +.SS "\fBpsx_image\fP * psx_image_load (const char * file_name, int * err_code)" + +.PP +Create a new psx_image object and load from file\&. +.PP +\fBParameters\fP +.RS 4 +\fIfile_name\fP The image file path which will be loaded, which is encoded by utf8\&. +.br +\fIerr_code\fP Pointer to a value to receiving the result code\&. can be NULL\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If successs, the return value is the pointer to new psx_image object\&. If fails, the return value is NULL, and result will be return by \fIerr_code\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_destroy\fP \fBpsx_image_load_from_memory\fP \fBpsx_image_create_from_data\fP +.RE +.PP + +.SS "\fBpsx_image\fP * psx_image_load_from_memory (const \fBps_byte\fP * data, size_t length, int * err_code)" + +.PP +Create a new psx_image object and load data from memory\&. +.PP +\fBParameters\fP +.RS 4 +\fIdata\fP Pointer to data buffer in memeory\&. +.br +\fIlength\fP Data length bytes\&. +.br +\fIerr_code\fP Pointer to a value to receiving the result code\&. can be NULL\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If successs, the return value is the pointer to new psx_image object\&. If fails, the return value is NULL, and result will be return by \fIerr_code\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_destroy\fP \fBpsx_image_load\fP +.RE +.PP + +.SS "int psx_image_save (const \fBpsx_image\fP * image, \fBimage_writer_fn\fP func, void * param, const char * type, float quality)" + +.PP +Encoding psx_image to a gaving format and output it\&. +.PP +\fBParameters\fP +.RS 4 +\fIimage\fP Pointer to an psx_image object\&. +.br +\fIfunc\fP User define saving callback function\&. +.br +\fIparam\fP User define saving callback param\&. +.br +\fItype\fP Image type short name\&. (i\&.e 'png' 'jpg' 'bmp') +.br +\fIquality\fP Image encoding quality\&. (0\&.1 ~ 1\&.0) +.RE +.PP +\fBReturns\fP +.RS 4 +Result code returned\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_save_to_file\fP +.RE +.PP + +.SS "int psx_image_save_to_file (const \fBpsx_image\fP * image, const char * file_name, const char * type, float quality)" + +.PP +Encoding psx_image to a gaving format and output to a file\&. +.PP +\fBParameters\fP +.RS 4 +\fIimage\fP Pointer to an psx_image object\&. +.br +\fIfile_name\fP The image file path which will be output, which is encoded by utf8\&. +.br +\fItype\fP Image type short name\&. (i\&.e 'png' 'jpg' 'bmp') +.br +\fIquality\fP Image encoding quality\&. (0\&.1 ~ 1\&.0) +.RE +.PP +\fBReturns\fP +.RS 4 +Result code returned\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_save\fP +.RE +.PP + +.SS "int psx_image_shutdown (void)" + +.PP +Release resources and shutdoen\&. +.PP +\fBReturns\fP +.RS 4 +Result code returned\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_init\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/geometry.3 b/doc/man/man3/geometry.3 new file mode 100644 index 0000000..a90aa47 --- /dev/null +++ b/doc/man/man3/geometry.3 @@ -0,0 +1,383 @@ +.TH "geometry" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +geometry +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void PICAPI \fBps_new_path\fP (\fBps_context\fP *ctx)" +.br +.RI "Create a new empty path in the graphic context, clear the old one\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_new_sub_path\fP (\fBps_context\fP *ctx)" +.br +.RI "Close the current path, and add a new empty sub path in the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_add_sub_path\fP (\fBps_context\fP *ctx, const \fBps_path\fP *path)" +.br +.RI "Add a new sub path to current path in the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_path\fP (\fBps_context\fP *ctx, const \fBps_path\fP *path)" +.br +.RI "Replace the current path in the graphic context\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_path\fP (\fBps_context\fP *ctx, \fBps_path\fP *path)" +.br +.RI "Get the current path in the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_close_path\fP (\fBps_context\fP *ctx)" +.br +.RI "Close the current path in the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_move_to\fP (\fBps_context\fP *ctx, const \fBps_point\fP *point)" +.br +.RI "Begin a new sub path, and set the current point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_line_to\fP (\fBps_context\fP *ctx, const \fBps_point\fP *point)" +.br +.RI "Add a line to the current path from the current point to given point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_bezier_curve_to\fP (\fBps_context\fP *ctx, const \fBps_point\fP *fcp, const \fBps_point\fP *scp, const \fBps_point\fP *ep)" +.br +.RI "Add a cubic bezier spline to the current path from current point to end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_quad_curve_to\fP (\fBps_context\fP *ctx, const \fBps_point\fP *cp, const \fBps_point\fP *ep)" +.br +.RI "Add a quadratic bezier spline to the current path from current point to end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_arc\fP (\fBps_context\fP *ctx, const \fBps_point\fP *cp, float radius, float sangle, float eangle, \fBps_bool\fP clockwise)" +.br +.RI "Add a circular arc to the current path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_tangent_arc\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect, float sangle, float sweep)" +.br +.RI "Add a circular arc which is inner tangent from a rectangle\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_rectangle\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect)" +.br +.RI "Add a rectangle to the current path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_rounded_rect\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby)" +.br +.RI "Add a rounded rectangle to the current path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_ellipse\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect)" +.br +.RI "Adds an ellipse to the current path which fits inside the specified rectangle\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "void ps_add_sub_path (\fBps_context\fP * ctx, const \fBps_path\fP * path)" + +.PP +Add a new sub path to current path in the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpath\fP The path will be add to graphic context\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_new_path\fP, \fBps_new_sub_path\fP, \fBps_set_path\fP, \fBps_get_path\fP, \fBps_close_path\fP +.RE +.PP + +.SS "void ps_arc (\fBps_context\fP * ctx, const \fBps_point\fP * cp, float radius, float sangle, float eangle, \fBps_bool\fP clockwise)" + +.PP +Add a circular arc to the current path\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcp\fP The center point of the arc\&. +.br +\fIradius\fP The radius of the arc\&. +.br +\fIsangle\fP The start angle, in radians\&. +.br +\fIeangle\fP The end angle, in radians\&. +.br +\fIclockwise\fP True is clockwise, False is counter clockwise\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_move_to\fP, \fBps_line_to\fP, \fBps_bezier_curve_to\fP, \fBps_quad_curve_to\fP, \fBps_tangent_arc\fP, \fBps_rectangle\fP, \fBps_rounded_rect\fP, \fBps_ellipse\fP +.RE +.PP + +.SS "void ps_bezier_curve_to (\fBps_context\fP * ctx, const \fBps_point\fP * fcp, const \fBps_point\fP * scp, const \fBps_point\fP * ep)" + +.PP +Add a cubic bezier spline to the current path from current point to end point\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIfcp\fP The first control point of the curve\&. +.br +\fIscp\fP The second control point of the curve\&. +.br +\fIep\fP The end point of the curve\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_move_to\fP, \fBps_line_to\fP, \fBps_quad_curve_to\fP, \fBps_arc\fP, \fBps_tangent_arc\fP, \fBps_rectangle\fP, \fBps_rounded_rect\fP, \fBps_ellipse\fP +.RE +.PP + +.SS "void ps_close_path (\fBps_context\fP * ctx)" + +.PP +Close the current path in the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_new_path\fP, \fBps_new_sub_path\fP, \fBps_set_path\fP, \fBps_get_path\fP, \fBps_add_sub_path\fP +.RE +.PP + +.SS "void ps_ellipse (\fBps_context\fP * ctx, const \fBps_rect\fP * rect)" + +.PP +Adds an ellipse to the current path which fits inside the specified rectangle\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIrect\fP The rectangle which the ellipse to fit in\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_move_to\fP, \fBps_line_to\fP, \fBps_bezier_curve_to\fP, \fBps_quad_curve_to\fP, \fBps_arc\fP, \fBps_tangent_arc\fP, \fBps_rectangle\fP, \fBps_rounded_rect\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_get_path (\fBps_context\fP * ctx, \fBps_path\fP * path)" + +.PP +Get the current path in the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpath\fP Pointer to a object to receiving the path\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_new_path\fP, \fBps_new_sub_path\fP, \fBps_close_path\fP, \fBps_set_path\fP, \fBps_add_sub_path\fP +.RE +.PP + +.SS "void ps_line_to (\fBps_context\fP * ctx, const \fBps_point\fP * point)" + +.PP +Add a line to the current path from the current point to given point\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpoint\fP The point which will line to\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_move_to\fP, \fBps_bezier_curve_to\fP, \fBps_quad_curve_to\fP \fBps_arc\fP, \fBps_tangent_arc\fP, \fBps_rectangle\fP, \fBps_rounded_rect\fP, \fBps_ellipse\fP +.RE +.PP + +.SS "void ps_move_to (\fBps_context\fP * ctx, const \fBps_point\fP * point)" + +.PP +Begin a new sub path, and set the current point\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpoint\fP The point which will be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_line_to\fP, \fBps_bezier_curve_to\fP, \fBps_quad_curve_to\fP \fBps_arc\fP, \fBps_tangent_arc\fP, \fBps_rectangle\fP, \fBps_rounded_rect\fP, \fBps_ellipse\fP +.RE +.PP + +.SS "void ps_new_path (\fBps_context\fP * ctx)" + +.PP +Create a new empty path in the graphic context, clear the old one\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_new_sub_path\fP, \fBps_set_path\fP, \fBps_get_path\fP, \fBps_close_path\fP, \fBps_add_sub_path\fP +.RE +.PP + +.SS "void ps_new_sub_path (\fBps_context\fP * ctx)" + +.PP +Close the current path, and add a new empty sub path in the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_new_path\fP, \fBps_set_path\fP, \fBps_get_path\fP, \fBps_close_path\fP, \fBps_add_sub_path\fP +.RE +.PP + +.SS "void ps_quad_curve_to (\fBps_context\fP * ctx, const \fBps_point\fP * cp, const \fBps_point\fP * ep)" + +.PP +Add a quadratic bezier spline to the current path from current point to end point\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcp\fP The control point of the curve\&. +.br +\fIep\fP The end point of the curve\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_move_to\fP, \fBps_line_to\fP, \fBps_bezier_curve_to\fP, \fBps_arc\fP, \fBps_tangent_arc\fP, \fBps_rectangle\fP, \fBps_rounded_rect\fP, \fBps_ellipse\fP +.RE +.PP + +.SS "void ps_rectangle (\fBps_context\fP * ctx, const \fBps_rect\fP * rect)" + +.PP +Add a rectangle to the current path\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIrect\fP The rectangle which will be added\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_move_to\fP, \fBps_line_to\fP, \fBps_bezier_curve_to\fP, \fBps_quad_curve_to\fP, \fBps_arc\fP, \fBps_tangent_arc\fP, \fBps_rounded_rect\fP, \fBps_ellipse\fP +.RE +.PP + +.SS "void ps_rounded_rect (\fBps_context\fP * ctx, const \fBps_rect\fP * rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby)" + +.PP +Add a rounded rectangle to the current path\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIrect\fP The rectangle which will be added\&. +.br +\fIltx\fP The left top horizontal radius\&. +.br +\fIlty\fP The left top vertical radius\&. +.br +\fIrtx\fP The right top horizontal radius\&. +.br +\fIrty\fP The right top vertical radius\&. +.br +\fIlbx\fP The left bottom horizontal radius\&. +.br +\fIlby\fP The left bottom vertical radius\&. +.br +\fIrbx\fP The right bottom horizontal radius\&. +.br +\fIrby\fP The right bottom vertical radius\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_move_to\fP, \fBps_line_to\fP, \fBps_bezier_curve_to\fP, \fBps_quad_curve_to\fP, \fBps_arc\fP, \fBps_tangent_arc\fP, \fBps_rectangle\fP, \fBps_ellipse\fP +.RE +.PP + +.SS "void ps_set_path (\fBps_context\fP * ctx, const \fBps_path\fP * path)" + +.PP +Replace the current path in the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpath\fP The path will be set to graphic context\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_new_path\fP, \fBps_new_sub_path\fP, \fBps_get_path\fP, \fBps_close_path\fP, \fBps_add_sub_path\fP +.RE +.PP + +.SS "void ps_tangent_arc (\fBps_context\fP * ctx, const \fBps_rect\fP * rect, float sangle, float sweep)" + +.PP +Add a circular arc which is inner tangent from a rectangle\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIrect\fP The rectangle which the arc to fit in\&. +.br +\fIsangle\fP The start angle, in radians\&. +.br +\fIsweep\fP The sweep angle, in radians\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_move_to\fP, \fBps_line_to\fP, \fBps_bezier_curve_to\fP, \fBps_quad_curve_to\fP, \fBps_arc\fP, \fBps_rectangle\fP, \fBps_rounded_rect\fP, \fBps_ellipse\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/gradient.3 b/doc/man/man3/gradient.3 new file mode 100644 index 0000000..92abf1e --- /dev/null +++ b/doc/man/man3/gradient.3 @@ -0,0 +1,278 @@ +.TH "gradient" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +gradient +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_gradient_spread\fP \fBps_gradient_spread\fP" +.br +.RI "Fill type of outside the gradient area\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_gradient_spread\fP { \fBGRADIENT_SPREAD_PAD\fP, \fBGRADIENT_SPREAD_REPEAT\fP, \fBGRADIENT_SPREAD_REFLECT\fP }" +.br +.RI "Fill type of outside the gradient area\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_gradient\fP *PICAPI \fBps_gradient_create_linear\fP (\fBps_gradient_spread\fP spread, const \fBps_point\fP *start, const \fBps_point\fP *end)" +.br +.RI "Create a new gradient that varies along the line defined by provided starting and ending points\&. " +.ti -1c +.RI "PEXPORT \fBps_gradient\fP *PICAPI \fBps_gradient_create_radial\fP (\fBps_gradient_spread\fP spread, const \fBps_point\fP *start, float sradius, const \fBps_point\fP *end, float eradius)" +.br +.RI "Create a new gradient that varies along the area defined by provided starting and ending circles\&. " +.ti -1c +.RI "PEXPORT \fBps_gradient\fP *PICAPI \fBps_gradient_create_conic\fP (\fBps_gradient_spread\fP spread, const \fBps_point\fP *origin, float sangle)" +.br +.RI "Create a new gradient that varies along the area defined by provided concentric circles\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_gradient_transform\fP (\fBps_gradient\fP *gradient, const \fBps_matrix\fP *matrix)" +.br +.RI "Transform the gradient object\&. " +.ti -1c +.RI "PEXPORT \fBps_gradient\fP *PICAPI \fBps_gradient_ref\fP (\fBps_gradient\fP *gradient)" +.br +.RI "Increases the reference count of the gradient by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_gradient_unref\fP (\fBps_gradient\fP *gradient)" +.br +.RI "Decrements the reference count for the gradient object\&. If the reference count on the gradient falls to 0, the gradient is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_gradient_add_color_stop\fP (\fBps_gradient\fP *gradient, float offset, const \fBps_color\fP *color)" +.br +.RI "Add a color stop to a gradient\&. The offset specifies the location along the gradient's control vector\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_gradient_clear_color_stops\fP (\fBps_gradient\fP *gradient)" +.br +.RI "Clear color stops from gradient's control vector\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_gradient_spread\fP" + +.PP +Fill type of outside the gradient area\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIGRADIENT_SPREAD_PAD \fP\fP +Spread pad, the area is filled with closest stop color\&. +.TP +\fB\fIGRADIENT_SPREAD_REPEAT \fP\fP +Spread repeat, the gradient is repeated outside the area\&. +.TP +\fB\fIGRADIENT_SPREAD_REFLECT \fP\fP +Spread reflect, the gradient is reflected outside the area\&. +.PP +Definition at line 942 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "void ps_gradient_add_color_stop (\fBps_gradient\fP * gradient, float offset, const \fBps_color\fP * color)" + +.PP +Add a color stop to a gradient\&. The offset specifies the location along the gradient's control vector\&. +.PP +\fBParameters\fP +.RS 4 +\fIgradient\fP Pointer to an existing gradient object\&. +.br +\fIoffset\fP An offset position in control vector (range 0 ~ 1)\&. +.br +\fIcolor\fP Color for the stop\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_gradient_clear_color_stops\fP +.RE +.PP + +.SS "void ps_gradient_clear_color_stops (\fBps_gradient\fP * gradient)" + +.PP +Clear color stops from gradient's control vector\&. +.PP +\fBParameters\fP +.RS 4 +\fIgradient\fP Pointer to an existing gradient object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_gradient_add_color_stop\fP +.RE +.PP + +.SS "\fBps_gradient\fP * ps_gradient_create_conic (\fBps_gradient_spread\fP spread, const \fBps_point\fP * origin, float sangle)" + +.PP +Create a new gradient that varies along the area defined by provided concentric circles\&. +.PP +\fBParameters\fP +.RS 4 +\fIspread\fP The spread type of the gradient\&. +.br +\fIorigin\fP The center point of conic, of the required gradient\&. +.br +\fIsangle\fP The angle, int radians, which the first color\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new gradient object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +Conic Gradient support reflect and pad mode only, paramter spread repeat will be supposed pad\&. To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_gradient_create_linear\fP, \fBps_gradient_create_radial\fP, \fBps_gradient_ref\fP, \fBps_gradient_unref\fP +.RE +.PP + +.SS "\fBps_gradient\fP * ps_gradient_create_linear (\fBps_gradient_spread\fP spread, const \fBps_point\fP * start, const \fBps_point\fP * end)" + +.PP +Create a new gradient that varies along the line defined by provided starting and ending points\&. +.PP +\fBParameters\fP +.RS 4 +\fIspread\fP The spread type of the gradient\&. +.br +\fIstart\fP The starting point , of the required gradient\&. +.br +\fIend\fP The ending point, of the required gradient\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new gradient object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_gradient_create_radial\fP, \fBps_gradient_create_conic\fP, \fBps_gradient_ref\fP, \fBps_gradient_unref\fP +.RE +.PP + +.SS "\fBps_gradient\fP * ps_gradient_create_radial (\fBps_gradient_spread\fP spread, const \fBps_point\fP * start, float sradius, const \fBps_point\fP * end, float eradius)" + +.PP +Create a new gradient that varies along the area defined by provided starting and ending circles\&. +.PP +\fBParameters\fP +.RS 4 +\fIspread\fP The spread type of the gradient\&. +.br +\fIstart\fP The center point of the starting circle, of the required gradient\&. +.br +\fIsradius\fP The radius of the starting circle, of the required gradient\&. +.br +\fIend\fP The center point of the ending circle, of the required gradient\&. +.br +\fIeradius\fP The radius of the ending circle, of the required gradient\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new gradient object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_gradient_create_linear\fP, \fBps_gradient_create_conic\fP, \fBps_gradient_ref\fP, \fBps_gradient_unref\fP +.RE +.PP + +.SS "\fBps_gradient\fP * ps_gradient_ref (\fBps_gradient\fP * gradient)" + +.PP +Increases the reference count of the gradient by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fIgradient\fP Pointer to an existing gradient object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the gradient object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_gradient_create_linear\fP, \fBps_gradient_create_radial\fP, \fBps_gradient_create_conic\fP, \fBps_gradient_unref\fP +.RE +.PP + +.SS "void ps_gradient_transform (\fBps_gradient\fP * gradient, const \fBps_matrix\fP * matrix)" + +.PP +Transform the gradient object\&. +.PP +\fBParameters\fP +.RS 4 +\fIgradient\fP Pointer to an existing gradient object\&. +.br +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_gradient_create_linear\fP, \fBps_gradient_create_radial\fP, \fBps_gradient_create_conic\fP, \fBps_gradient_ref\fP, \fBps_gradient_unref\fP +.RE +.PP + +.SS "void ps_gradient_unref (\fBps_gradient\fP * gradient)" + +.PP +Decrements the reference count for the gradient object\&. If the reference count on the gradient falls to 0, the gradient is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fIgradient\fP Pointer to an existing gradient object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_gradient_create_linear\fP, \fBps_gradient_create_radial\fP, \fBps_gradient_create_conic\fP, \fBps_gradient_ref\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/graphic.3 b/doc/man/man3/graphic.3 new file mode 100644 index 0000000..139fa7b --- /dev/null +++ b/doc/man/man3/graphic.3 @@ -0,0 +1,57 @@ +.TH "graphic" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +graphic +.SH SYNOPSIS +.br +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "\fBContext\fP" +.br +.ti -1c +.RI "\fBCanvas\fP" +.br +.ti -1c +.RI "\fBImage\fP" +.br +.ti -1c +.RI "\fBPattern\fP" +.br +.ti -1c +.RI "\fBGradient\fP" +.br +.ti -1c +.RI "\fBMask\fP" +.br +.ti -1c +.RI "\fBDrawing\fP" +.br +.ti -1c +.RI "\fBFont\fP" +.br +.ti -1c +.RI "\fBText\fP" +.br +.ti -1c +.RI "\fBTransform\fP" +.br +.ti -1c +.RI "\fBMatrix\fP" +.br +.ti -1c +.RI "\fBGeometry\fP" +.br +.ti -1c +.RI "\fBPath\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/image.3 b/doc/man/man3/image.3 new file mode 100644 index 0000000..f1300d8 --- /dev/null +++ b/doc/man/man3/image.3 @@ -0,0 +1,384 @@ +.TH "image" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +image +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create\fP (\fBps_color_format\fP fmt, int width, int height)" +.br +.RI "Create a new image using the given parameters\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_with_data\fP (\fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch)" +.br +.RI "Create a new image using a given address in memory\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_from_data\fP (\fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch)" +.br +.RI "Create a new image using a copy of given address in memory\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_compatible\fP (const \fBps_canvas\fP *canvas, int width, int height)" +.br +.RI "Create a new image to compatible with an existing canvas\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_from_canvas\fP (\fBps_canvas\fP *canvas, const \fBps_rect\fP *rect)" +.br +.RI "Create a new image using part of an existing canvas in same pixel buffer\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_from_image\fP (\fBps_image\fP *img, const \fBps_rect\fP *rect)" +.br +.RI "Create a new image using part of an existing ps_image object in same pixel buffer\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_ref\fP (\fBps_image\fP *img)" +.br +.RI "Increases the reference count of the image by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_image_unref\fP (\fBps_image\fP *img)" +.br +.RI "Decrements the reference count for the image object\&. If the reference count on the image falls to 0, the image is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_image_set_allow_transparent\fP (\fBps_image\fP *img, \fBps_bool\fP allow)" +.br +.RI "Set whether the image allowed be transparent, False is default\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_image_set_transparent_color\fP (\fBps_image\fP *img, const \fBps_color\fP *color)" +.br +.RI "Set the transparent color for the image\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_image_get_size\fP (const \fBps_image\fP *img, \fBps_size\fP *rsize)" +.br +.RI "Return the size of the image\&. " +.ti -1c +.RI "PEXPORT \fBps_color_format\fP PICAPI \fBps_image_get_format\fP (const \fBps_image\fP *img)" +.br +.RI "Return the pixel format of the image\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "\fBps_image\fP * ps_image_create (\fBps_color_format\fP fmt, int width, int height)" + +.PP +Create a new image using the given parameters\&. +.PP +\fBParameters\fP +.RS 4 +\fIfmt\fP The Pixel format to use for the image\&. +.br +\fIwidth\fP The width, in pixels, of the required image\&. +.br +\fIheight\fP The height, in pixels, of the required image\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new image object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_create_with_data\fP, \fBps_image_create_compatible\fP, \fBps_image_create_from_canvas\fP, \fBps_image_create_from_data\fP, \fBps_image_create_from_image\fP, \fBps_image_ref\fP, \fBps_image_unref\fP +.RE +.PP + +.SS "\fBps_image\fP * ps_image_create_compatible (const \fBps_canvas\fP * canvas, int width, int height)" + +.PP +Create a new image to compatible with an existing canvas\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP A pointer to an existing canvas\&. +.br +\fIwidth\fP The width, in pixels, of the required canvas\&. If it is not more than zero, the width will be equal to the width of the reference canvas\&. +.br +\fIheight\fP The height, in pixels, of the required canvas\&. If it is not more than zero, the height will be equal to the height of the reference canvas\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new image object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_create\fP, \fBps_image_create_with_data\fP, \fBps_image_create_from_canvas\fP, \fBps_image_create_from_image\fP, \fBps_image_ref\fP, \fBps_image_unref\fP +.RE +.PP + +.SS "\fBps_image\fP * ps_image_create_from_canvas (\fBps_canvas\fP * canvas, const \fBps_rect\fP * rect)" + +.PP +Create a new image using part of an existing canvas in same pixel buffer\&. +.PP +\fBParameters\fP +.RS 4 +\fIcanvas\fP A pointer to an existing canvas\&. +.br +\fIrect\fP The rectangle area of the image from the ps_canvas\&. If it is NULL, the image's width and height will be equal to the parant canvas\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new image object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_create\fP, \fBps_image_create_with_data\fP, \fBps_image_create_compatible\fP, \fBps_image_create_from_data\fP, \fBps_image_create_from_image\fP, \fBps_image_ref\fP, \fBps_image_unref\fP +.RE +.PP + +.SS "\fBps_image\fP * ps_image_create_from_data (\fBps_byte\fP * data, \fBps_color_format\fP fmt, int width, int height, int pitch)" + +.PP +Create a new image using a copy of given address in memory\&. +.PP +\fBParameters\fP +.RS 4 +\fIdata\fP A pointer to the destination in memory where the drawing is to be rendered\&. The size of this memory block should be at least (pitch * height) bytes\&. +.br +\fIfmt\fP The Pixel format to use for the image\&. +.br +\fIwidth\fP The width, in pixels, of the required image\&. +.br +\fIheight\fP The height, in pixels, of the required image\&. +.br +\fIpitch\fP The number of bytes per row, of the required image\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new image object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_create\fP, \fBps_image_create_compatible\fP, \fBps_image_create_from_canvas\fP, \fBps_image_create_with_data\fP, \fBps_image_create_from_image\fP, \fBps_image_ref\fP, \fBps_image_unref\fP +.RE +.PP + +.SS "\fBps_image\fP * ps_image_create_from_image (\fBps_image\fP * img, const \fBps_rect\fP * rect)" + +.PP +Create a new image using part of an existing ps_image object in same pixel buffer\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP A pointer to an existing ps_image object\&. +.br +\fIrect\fP The rectangle area of the image from the parent image\&. If it is NULL, the image's width and height will be equal to parent image object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new image object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_create\fP, \fBps_image_create_with_data\fP, \fBps_image_create_compatible\fP, \fBps_image_create_from_data\fP, \fBps_image_create_from_canvas\fP, \fBps_image_ref\fP, \fBps_image_unref\fP +.RE +.PP + +.SS "\fBps_image\fP * ps_image_create_with_data (\fBps_byte\fP * data, \fBps_color_format\fP fmt, int width, int height, int pitch)" + +.PP +Create a new image using a given address in memory\&. +.PP +\fBParameters\fP +.RS 4 +\fIdata\fP A pointer to the destination in memory where the drawing is to be rendered\&. The size of this memory block should be at least (pitch * height) bytes\&. +.br +\fIfmt\fP The Pixel format to use for the image\&. +.br +\fIwidth\fP The width, in pixels, of the required image\&. +.br +\fIheight\fP The height, in pixels, of the required image\&. +.br +\fIpitch\fP The number of bytes per row, of the required image\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new image object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_create\fP, \fBps_image_create_compatible\fP, \fBps_image_create_from_canvas\fP, \fBps_image_create_from_data\fP, \fBps_image_create_from_image\fP, \fBps_image_ref\fP, \fBps_image_unref\fP +.RE +.PP + +.SS "\fBps_color_format\fP ps_image_get_format (const \fBps_image\fP * img)" + +.PP +Return the pixel format of the image\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP Pointer to an existing image object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return a valid color format\&. If the function fails, the return value is COLOR_FORMAT_UNKNOWN\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_get_size\fP, \fBps_image_set_allow_transparent\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_image_get_size (const \fBps_image\fP * img, \fBps_size\fP * rsize)" + +.PP +Return the size of the image\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP Pointer to an existing image object\&. +.br +\fIrsize\fP Pointer to a buffer to receiving the size\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_get_format\fP, \fBps_image_set_allow_transparent\fP +.RE +.PP + +.SS "\fBps_image\fP * ps_image_ref (\fBps_image\fP * img)" + +.PP +Increases the reference count of the image by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP Pointer to an existing image object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the image object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_create\fP, \fBps_image_create_with_data\fP, \fBps_image_create_compatible\fP, \fBps_image_create_from_data\fP, \fBps_image_create_from_canvas\fP, \fBps_image_create_from_image\fP, \fBps_image_unref\fP +.RE +.PP + +.SS "void ps_image_set_allow_transparent (\fBps_image\fP * img, \fBps_bool\fP allow)" + +.PP +Set whether the image allowed be transparent, False is default\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP Pointer to an existing image object\&. +.br +\fIallow\fP Boolean value whether transparent is allowed\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_get_format\fP, \fBps_image_get_size\fP +.RE +.PP + +.SS "void ps_image_set_transparent_color (\fBps_image\fP * img, const \fBps_color\fP * color)" + +.PP +Set the transparent color for the image\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP Pointer to an existing image object\&. +.br +\fIcolor\fP The color for the transparent, NULL for disable\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_get_format\fP, \fBps_image_get_size\fP +.RE +.PP + +.SS "void ps_image_unref (\fBps_image\fP * img)" + +.PP +Decrements the reference count for the image object\&. If the reference count on the image falls to 0, the image is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP Pointer to an existing image object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_image_create\fP, \fBps_image_create_with_data\fP, \fBps_image_create_compatible\fP, \fBps_image_create_from_data\fP, \fBps_image_create_from_canvas\fP, \fBps_image_create_from_image\fP, \fBps_image_ref\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/interface.3 b/doc/man/man3/interface.3 new file mode 100644 index 0000000..3c0c2e9 --- /dev/null +++ b/doc/man/man3/interface.3 @@ -0,0 +1,80 @@ +.TH "interface" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +interface +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT int \fBpsx_image_register_operator\fP (const char *type, const \fBps_byte\fP *signature, size_t sig_offset, size_t sig_len, \fBpsx_priority_level\fP level, \fBpsx_image_operator\fP *coder)" +.br +.RI "Register the image operator\&. " +.ti -1c +.RI "PEXPORT int \fBpsx_image_unregister_operator\fP (\fBpsx_image_operator\fP *coder)" +.br +.RI "Unregister the image operator\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "int psx_image_register_operator (const char * type, const \fBps_byte\fP * signature, size_t sig_offset, size_t sig_len, \fBpsx_priority_level\fP level, \fBpsx_image_operator\fP * coder)" + +.PP +Register the image operator\&. +.PP +\fBParameters\fP +.RS 4 +\fItype\fP The image operator short name\&. (i\&.e 'png' 'jpg' 'gif' 'bmp') +.br +\fIsignature\fP The image signature\&. +.br +\fIsig_offset\fP The image signature offset from the beginning of the image data\&. (usually is 0) +.br +\fIsig_len\fP The image signature length\&. +.br +\fIlevel\fP The image operator priority level\&. +.br +\fIcoder\fP The pointer to a image_operator object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +Result code returned\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_unregister_operator\fP +.RE +.PP + +.SS "int psx_image_unregister_operator (\fBpsx_image_operator\fP * coder)" + +.PP +Unregister the image operator\&. +.PP +\fBParameters\fP +.RS 4 +\fIcoder\fP The image operator which will be unregister\&. +.RE +.PP +\fBReturns\fP +.RS 4 +Result code returned\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_register_operator\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/mask.3 b/doc/man/man3/mask.3 new file mode 100644 index 0000000..cd95340 --- /dev/null +++ b/doc/man/man3/mask.3 @@ -0,0 +1,146 @@ +.TH "mask" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +mask +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_mask\fP *PICAPI \fBps_mask_create_with_data\fP (\fBps_byte\fP *data, int width, int height)" +.br +.RI "Create a new mask using a given data block\&. " +.ti -1c +.RI "PEXPORT \fBps_mask\fP *PICAPI \fBps_mask_ref\fP (\fBps_mask\fP *mask)" +.br +.RI "Increases the reference count of the mask by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_mask_unref\fP (\fBps_mask\fP *mask)" +.br +.RI "Decrements the reference count for the mask object\&. If the reference count on the mask falls to 0, the mask is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_mask_add_color_filter\fP (\fBps_mask\fP *mask, const \fBps_color\fP *color)" +.br +.RI "Add a color filter to a mask\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_mask_clear_color_filters\fP (\fBps_mask\fP *mask)" +.br +.RI "Clear all colors from mask's filter\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "void ps_mask_add_color_filter (\fBps_mask\fP * mask, const \fBps_color\fP * color)" + +.PP +Add a color filter to a mask\&. +.PP +\fBParameters\fP +.RS 4 +\fImask\fP Pointer to an existing mask object\&. +.br +\fIcolor\fP A color for be masked\&. Only the colors specified by filter can be masked\&. If no color is specified, all colors can be masked\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_mask_clear_color_filters\fP +.RE +.PP + +.SS "void ps_mask_clear_color_filters (\fBps_mask\fP * mask)" + +.PP +Clear all colors from mask's filter\&. +.PP +\fBParameters\fP +.RS 4 +\fImask\fP Pointer to an existing mask object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_mask_add_color_filter\fP +.RE +.PP + +.SS "\fBps_mask\fP * ps_mask_create_with_data (\fBps_byte\fP * data, int width, int height)" + +.PP +Create a new mask using a given data block\&. +.PP +\fBParameters\fP +.RS 4 +\fIdata\fP A pointer to the mask data block in memory\&. Each byte of data is a aplha value, from transparent to opaque (0 ~ 255)\&. The size of this memory block should be at least (width * height) bytes\&. +.br +\fIwidth\fP The width, in pixels, of the required mask\&. +.br +\fIheight\fP The height, in pixels, of the required mask\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new mask object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_mask_ref\fP, \fBps_mask_unref\fP, \fBps_canvas_set_mask\fP, \fBps_canvas_reset_mask\fP +.RE +.PP + +.SS "\fBps_mask\fP * ps_mask_ref (\fBps_mask\fP * mask)" + +.PP +Increases the reference count of the mask by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fImask\fP Pointer to an existing mask object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the mask object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_mask_create_with_data\fP, \fBps_mask_unref\fP, \fBps_canvas_set_mask\fP, \fBps_canvas_reset_mask\fP +.RE +.PP + +.SS "void ps_mask_unref (\fBps_mask\fP * mask)" + +.PP +Decrements the reference count for the mask object\&. If the reference count on the mask falls to 0, the mask is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fImask\fP Pointer to an existing mask object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_mask_create_with_data\fP, \fBps_mask_ref\fP, \fBps_canvas_set_mask\fP, \fBps_canvas_reset_mask\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/matrix.3 b/doc/man/man3/matrix.3 new file mode 100644 index 0000000..3f1e0a5 --- /dev/null +++ b/doc/man/man3/matrix.3 @@ -0,0 +1,697 @@ +.TH "matrix" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +matrix +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_matrix\fP *PICAPI \fBps_matrix_create\fP (void)" +.br +.RI "Create a identity matrix object\&. " +.ti -1c +.RI "PEXPORT \fBps_matrix\fP *PICAPI \fBps_matrix_create_init\fP (float sx, float shy, float shx, float sy, float tx, float ty)" +.br +.RI "Create a matrix with given parameters\&. " +.ti -1c +.RI "PEXPORT \fBps_matrix\fP *PICAPI \fBps_matrix_create_copy\fP (const \fBps_matrix\fP *matrix)" +.br +.RI "Create a matrix copy from an exist one\&. " +.ti -1c +.RI "PEXPORT \fBps_matrix\fP *PICAPI \fBps_matrix_ref\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Increases the reference count of the matrix by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_unref\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Decrements the reference count for the matrix object\&. If the reference count on the matrix falls to 0, the matrix is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_init\fP (\fBps_matrix\fP *matrix, float sx, float shy, float shx, float sy, float tx, float ty)" +.br +.RI "Initialize an existing matrix object with given parameters\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_translate\fP (\fBps_matrix\fP *matrix, float tx, float ty)" +.br +.RI "Modify a matrix by translating\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_scale\fP (\fBps_matrix\fP *matrix, float sx, float sy)" +.br +.RI "Modify a matrix by scaling\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_rotate\fP (\fBps_matrix\fP *matrix, float angle)" +.br +.RI "Modify a matrix by rotating\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_shear\fP (\fBps_matrix\fP *matrix, float shx, float shy)" +.br +.RI "Modify a matrix by shearing\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_invert\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Modify a matrix by inverting\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_identity\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Reset a matrix to identity matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_flip_x\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Flip a matrix in the horizontal direction\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_flip_y\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Flip a matrix in the vertical direction\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_multiply\fP (\fBps_matrix\fP *result, const \fBps_matrix\fP *a, const \fBps_matrix\fP *b)" +.br +.RI "Multiplies the matrix in a and b together and stores the result in result\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_is_identity\fP (const \fBps_matrix\fP *matrix)" +.br +.RI "Checks whether the matrix is the identity transform matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_is_equal\fP (const \fBps_matrix\fP *a, const \fBps_matrix\fP *b)" +.br +.RI "Checks whether two matrix are equal\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_matrix_get_determinant\fP (const \fBps_matrix\fP *matrix)" +.br +.RI "Return the determinant from a matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_set_translate_factor\fP (\fBps_matrix\fP *matrix, float tx, float ty)" +.br +.RI "Set the translate factors to the matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_get_translate_factor\fP (\fBps_matrix\fP *matrix, float *tx, float *ty)" +.br +.RI "Get the translate factors from the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_set_scale_factor\fP (\fBps_matrix\fP *matrix, float sx, float sy)" +.br +.RI "Set the scale factors to the matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_get_scale_factor\fP (\fBps_matrix\fP *matrix, float *sx, float *sy)" +.br +.RI "Get the scale factors from the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_set_shear_factor\fP (\fBps_matrix\fP *matrix, float shx, float shy)" +.br +.RI "Set the shear factors to the matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_get_shear_factor\fP (\fBps_matrix\fP *matrix, float *shx, float *shy)" +.br +.RI "Get the shear factors from the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_transform_point\fP (const \fBps_matrix\fP *matrix, \fBps_point\fP *point)" +.br +.RI "Transform an existing point using the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_transform_rect\fP (const \fBps_matrix\fP *matrix, \fBps_rect\fP *rect)" +.br +.RI "Transform an existing rectangle using the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_transform_path\fP (const \fBps_matrix\fP *matrix, \fBps_path\fP *path)" +.br +.RI "Transform an existing path using the matrix\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "\fBps_matrix\fP * ps_matrix_create (void)" + +.PP +Create a identity matrix object\&. +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new matrix object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_create_init\fP, \fBps_matrix_create_copy\fP, \fBps_matrix_ref\fP, \fBps_matrix_unref\fP +.RE +.PP + +.SS "\fBps_matrix\fP * ps_matrix_create_copy (const \fBps_matrix\fP * matrix)" + +.PP +Create a matrix copy from an exist one\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new matrix object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_create_init\fP, \fBps_matrix_create\fP, \fBps_matrix_ref\fP, \fBps_matrix_unref\fP +.RE +.PP + +.SS "\fBps_matrix\fP * ps_matrix_create_init (float sx, float shy, float shx, float sy, float tx, float ty)" + +.PP +Create a matrix with given parameters\&. +.PP +\fBParameters\fP +.RS 4 +\fIsx\fP The horizontal scaling factor\&. +.br +\fIshy\fP The vertical skewing factor\&. +.br +\fIshx\fP The horizontal skewing factor\&. +.br +\fIsy\fP The vertical scaling factor\&. +.br +\fItx\fP The horizontal translating factor\&. +.br +\fIty\fP The vertical translating factor\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new matrix object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_create\fP, \fBps_matrix_create_copy\fP, \fBps_matrix_ref\fP, \fBps_matrix_unref\fP +.RE +.PP + +.SS "void ps_matrix_flip_x (\fBps_matrix\fP * matrix)" + +.PP +Flip a matrix in the horizontal direction\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_identity\fP, \fBps_matrix_flip_y\fP, \fBps_matrix_invert\fP +.RE +.PP + +.SS "void ps_matrix_flip_y (\fBps_matrix\fP * matrix)" + +.PP +Flip a matrix in the vertical direction\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_identity\fP, \fBps_matrix_flip_x\fP, \fBps_matrix_invert\fP +.RE +.PP + +.SS "float ps_matrix_get_determinant (const \fBps_matrix\fP * matrix)" + +.PP +Return the determinant from a matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +The determinant of the matrix\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_is_equal\fP, \fBps_matrix_is_identity\fP, \fBps_matrix_multiply\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_matrix_get_scale_factor (\fBps_matrix\fP * matrix, float * sx, float * sy)" + +.PP +Get the scale factors from the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIsx\fP Pointer to a buffer to receiving the scale factor in x dimension\&. +.br +\fIsy\fP Pointer to a buffer to receiving the scale factor in y dimension\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_set_scale_factor\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_matrix_get_shear_factor (\fBps_matrix\fP * matrix, float * shx, float * shy)" + +.PP +Get the shear factors from the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIshx\fP Pointer to a buffer to receiving the shear factor in horizontal\&. +.br +\fIshy\fP Pointer to a buffer to receiving the shear factor in vertical\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_set_shear_factor\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_matrix_get_translate_factor (\fBps_matrix\fP * matrix, float * tx, float * ty)" + +.PP +Get the translate factors from the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fItx\fP Pointer to a buffer to receiving the translate factor in x direction\&. +.br +\fIty\fP Pointer to a buffer to receiving the translate factor in y direction\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_set_translate_factor\fP +.RE +.PP + +.SS "void ps_matrix_identity (\fBps_matrix\fP * matrix)" + +.PP +Reset a matrix to identity matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_flip_x\fP, \fBps_matrix_flip_y\fP, \fBps_matrix_invert\fP +.RE +.PP + +.SS "void ps_matrix_init (\fBps_matrix\fP * matrix, float sx, float shy, float shx, float sy, float tx, float ty)" + +.PP +Initialize an existing matrix object with given parameters\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIsx\fP The horizontal scaling factor\&. +.br +\fIshy\fP The vertical skewing factor\&. +.br +\fIshx\fP The horizontal skewing factor\&. +.br +\fIsy\fP The vertical scaling factor\&. +.br +\fItx\fP The horizontal translating factor\&. +.br +\fIty\fP The vertical translating factor\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_translate\fP, \fBps_matrix_scale\fP, \fBps_matrix_shear\fP, \fBps_matrix_rotate\fP +.RE +.PP + +.SS "void ps_matrix_invert (\fBps_matrix\fP * matrix)" + +.PP +Modify a matrix by inverting\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_flip_x\fP, \fBps_matrix_flip_y\fP, \fBps_matrix_identity\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_matrix_is_equal (const \fBps_matrix\fP * a, const \fBps_matrix\fP * b)" + +.PP +Checks whether two matrix are equal\&. +.PP +\fBParameters\fP +.RS 4 +\fIa\fP Pointer to an existing matrix object\&. +.br +\fIb\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if a and b are equal, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_is_identity\fP, \fBps_matrix_get_determinant\fP, \fBps_matrix_multiply\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_matrix_is_identity (const \fBps_matrix\fP * matrix)" + +.PP +Checks whether the matrix is the identity transform matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is identity, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_is_equal\fP, \fBps_matrix_get_determinant\fP, \fBps_matrix_multiply\fP +.RE +.PP + +.SS "void ps_matrix_multiply (\fBps_matrix\fP * result, const \fBps_matrix\fP * a, const \fBps_matrix\fP * b)" + +.PP +Multiplies the matrix in a and b together and stores the result in result\&. +.PP +\fBParameters\fP +.RS 4 +\fIresult\fP Pointer to an existing matrix object in which to store the result\&. +.br +\fIa\fP Pointer to an existing matrix object\&. +.br +\fIb\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_is_identity\fP, \fBps_matrix_is_equal\fP \fBps_matrix_get_determinant\fP +.RE +.PP + +.SS "\fBps_matrix\fP * ps_matrix_ref (\fBps_matrix\fP * matrix)" + +.PP +Increases the reference count of the matrix by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the matrix object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_create_init\fP, \fBps_matrix_create\fP, \fBps_matrix_create_copy\fP, \fBps_matrix_unref\fP +.RE +.PP + +.SS "void ps_matrix_rotate (\fBps_matrix\fP * matrix, float angle)" + +.PP +Modify a matrix by rotating\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIangle\fP The angle, in radians, which to rotate the specified matrix\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_translate\fP, \fBps_matrix_shear\fP, \fBps_matrix_scale\fP +.RE +.PP + +.SS "void ps_matrix_scale (\fBps_matrix\fP * matrix, float sx, float sy)" + +.PP +Modify a matrix by scaling\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIsx\fP The scale factor for the X dimension\&. +.br +\fIsy\fP The scale factor for the Y dimension\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_translate\fP, \fBps_matrix_shear\fP, \fBps_matrix_rotate\fP +.RE +.PP + +.SS "void ps_matrix_set_scale_factor (\fBps_matrix\fP * matrix, float sx, float sy)" + +.PP +Set the scale factors to the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIsx\fP The scale factor in x dimension\&. +.br +\fIsy\fP The scale factor in y dimension\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_get_scale_factor\fP +.RE +.PP + +.SS "void ps_matrix_set_shear_factor (\fBps_matrix\fP * matrix, float shx, float shy)" + +.PP +Set the shear factors to the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIshx\fP The shear factor for the horizontal\&. +.br +\fIshy\fP The shear factor for the vertical\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_get_shear_factor\fP +.RE +.PP + +.SS "void ps_matrix_set_translate_factor (\fBps_matrix\fP * matrix, float tx, float ty)" + +.PP +Set the translate factors to the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fItx\fP The amount, in pixels, which the translate factor in x direction\&. +.br +\fIty\fP The amount, in pixels, which the translate factor in y direction\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_get_translate_factor\fP +.RE +.PP + +.SS "void ps_matrix_shear (\fBps_matrix\fP * matrix, float shx, float shy)" + +.PP +Modify a matrix by shearing\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIshx\fP The shear factor for the horizontal\&. +.br +\fIshy\fP The shear factor for the vertical\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_translate\fP, \fBps_matrix_scale\fP, \fBps_matrix_rotate\fP +.RE +.PP + +.SS "void ps_matrix_transform_path (const \fBps_matrix\fP * matrix, \fBps_path\fP * path)" + +.PP +Transform an existing path using the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIpath\fP An existing path which will be transformed\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_transform_point\fP, \fBps_matrix_transform_rect\fP +.RE +.PP + +.SS "void ps_matrix_transform_point (const \fBps_matrix\fP * matrix, \fBps_point\fP * point)" + +.PP +Transform an existing point using the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIpoint\fP An existing point which will be transformed\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_transform_rect\fP, \fBps_matrix_transform_path\fP +.RE +.PP + +.SS "void ps_matrix_transform_rect (const \fBps_matrix\fP * matrix, \fBps_rect\fP * rect)" + +.PP +Transform an existing rectangle using the matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fIrect\fP An existing rectangle which will be transformed\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_transform_point\fP, \fBps_matrix_transform_path\fP +.RE +.PP + +.SS "void ps_matrix_translate (\fBps_matrix\fP * matrix, float tx, float ty)" + +.PP +Modify a matrix by translating\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.br +\fItx\fP The amount, in pixels, which to translate in x direction\&. +.br +\fIty\fP The amount, in pixels, which to translate in y direction\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_scale\fP, \fBps_matrix_shear\fP, \fBps_matrix_rotate\fP +.RE +.PP + +.SS "void ps_matrix_unref (\fBps_matrix\fP * matrix)" + +.PP +Decrements the reference count for the matrix object\&. If the reference count on the matrix falls to 0, the matrix is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix_create_init\fP, \fBps_matrix_create\fP, \fBps_matrix_create_copy\fP, \fBps_matrix_ref\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/objects.3 b/doc/man/man3/objects.3 new file mode 100644 index 0000000..900d5fa --- /dev/null +++ b/doc/man/man3/objects.3 @@ -0,0 +1,217 @@ +.TH "objects" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +objects +.SH SYNOPSIS +.br +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fB_ps_glyph\fP" +.br +.RI "A character glyph of a font\&. " +.ti -1c +.RI "struct \fB_ps_size\fP" +.br +.RI "A structure that contains width and height values\&. " +.ti -1c +.RI "struct \fB_ps_rect\fP" +.br +.RI "A structure that contains location and dimensions of a rectangle\&. " +.ti -1c +.RI "struct \fB_ps_point\fP" +.br +.RI "A structure that contains a point in a two-dimensional coordinate system\&. " +.ti -1c +.RI "struct \fB_ps_color\fP" +.br +.RI "A structure that contains rgba values for a color\&. " +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef struct _ps_context \fBps_context\fP" +.br +.RI "An opaque type represents a Picasso drawing environment\&. " +.ti -1c +.RI "typedef struct _ps_canvas \fBps_canvas\fP" +.br +.RI "An opaque type represents a pixel buffer\&. " +.ti -1c +.RI "typedef struct _ps_image \fBps_image\fP" +.br +.RI "An opaque type represents an image\&. " +.ti -1c +.RI "typedef struct _ps_pattern \fBps_pattern\fP" +.br +.RI "An opaque type represents a pattern\&. " +.ti -1c +.RI "typedef struct _ps_gradient \fBps_gradient\fP" +.br +.RI "An opaque type represents a gradient\&. " +.ti -1c +.RI "typedef struct _ps_matrix \fBps_matrix\fP" +.br +.RI "An opaque type represents a transform matrix\&. " +.ti -1c +.RI "typedef struct _ps_path \fBps_path\fP" +.br +.RI "An opaque type represents a graphic path\&. " +.ti -1c +.RI "typedef struct _ps_mask \fBps_mask\fP" +.br +.RI "An opaque type represents an alpha mask\&. " +.ti -1c +.RI "typedef struct _ps_font \fBps_font\fP" +.br +.RI "An opaque type represents a font\&. " +.ti -1c +.RI "typedef struct \fB_ps_glyph\fP \fBps_glyph\fP" +.br +.RI "A character glyph of a font\&. " +.ti -1c +.RI "typedef struct \fB_ps_size\fP \fBps_size\fP" +.br +.RI "A structure that contains width and height values\&. " +.ti -1c +.RI "typedef struct \fB_ps_rect\fP \fBps_rect\fP" +.br +.RI "A structure that contains location and dimensions of a rectangle\&. " +.ti -1c +.RI "typedef struct \fB_ps_point\fP \fBps_point\fP" +.br +.RI "A structure that contains a point in a two-dimensional coordinate system\&. " +.ti -1c +.RI "typedef struct \fB_ps_color\fP \fBps_color\fP" +.br +.RI "A structure that contains rgba values for a color\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Typedef Documentation" +.PP +.SS "\fBps_canvas\fP" + +.PP +An opaque type represents a pixel buffer\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_context\fP, \fBps_image\fP +.RE +.PP + +.PP +Definition at line 116 of file picasso\&.h\&. +.SS "\fBps_context\fP" + +.PP +An opaque type represents a Picasso drawing environment\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas\fP +.RE +.PP + +.PP +Definition at line 109 of file picasso\&.h\&. +.SS "\fBps_font\fP" + +.PP +An opaque type represents a font\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_context\fP +.RE +.PP + +.PP +Definition at line 165 of file picasso\&.h\&. +.SS "\fBps_gradient\fP" + +.PP +An opaque type represents a gradient\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_path\fP, \fBps_matrix\fP +.RE +.PP + +.PP +Definition at line 137 of file picasso\&.h\&. +.SS "\fBps_image\fP" + +.PP +An opaque type represents an image\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas\fP, \fBps_pattern\fP +.RE +.PP + +.PP +Definition at line 123 of file picasso\&.h\&. +.SS "\fBps_mask\fP" + +.PP +An opaque type represents an alpha mask\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_path\fP, \fBps_image\fP, \fBps_canvas\fP +.RE +.PP + +.PP +Definition at line 158 of file picasso\&.h\&. +.SS "\fBps_matrix\fP" + +.PP +An opaque type represents a transform matrix\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_path\fP, \fBps_context\fP +.RE +.PP + +.PP +Definition at line 144 of file picasso\&.h\&. +.SS "\fBps_path\fP" + +.PP +An opaque type represents a graphic path\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_matrix\fP, \fBps_context\fP +.RE +.PP + +.PP +Definition at line 151 of file picasso\&.h\&. +.SS "\fBps_pattern\fP" + +.PP +An opaque type represents a pattern\&. +.PP +\fBSee also\fP +.RS 4 +\fBps_canvas\fP, \fBps_image\fP +.RE +.PP + +.PP +Definition at line 130 of file picasso\&.h\&. +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/paint.3 b/doc/man/man3/paint.3 new file mode 100644 index 0000000..02d90c4 --- /dev/null +++ b/doc/man/man3/paint.3 @@ -0,0 +1,100 @@ +.TH "paint" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +paint +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void PICAPI \fBps_stroke\fP (\fBps_context\fP *ctx)" +.br +.RI "Stroke the current path according to the line attributes\&. After called, the current path will be cleared from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_fill\fP (\fBps_context\fP *ctx)" +.br +.RI "Fill the current path according to the source attributes\&. After called, the current path will be cleared from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_paint\fP (\fBps_context\fP *ctx)" +.br +.RI "Fill and stroke the current path according to the source and line attributes\&. After called, the current path will be cleared from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clear\fP (\fBps_context\fP *ctx)" +.br +.RI "Clear the current context with source color\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "void ps_clear (\fBps_context\fP * ctx)" + +.PP +Clear the current context with source color\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_stroke\fP, \fBps_fill\fP, \fBps_paint\fP +.RE +.PP + +.SS "void ps_fill (\fBps_context\fP * ctx)" + +.PP +Fill the current path according to the source attributes\&. After called, the current path will be cleared from the context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_stroke\fP, \fBps_paint\fP, \fBps_clear\fP +.RE +.PP + +.SS "void ps_paint (\fBps_context\fP * ctx)" + +.PP +Fill and stroke the current path according to the source and line attributes\&. After called, the current path will be cleared from the context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_stroke\fP, \fBps_fill\fP, \fBps_clear\fP +.RE +.PP + +.SS "void ps_stroke (\fBps_context\fP * ctx)" + +.PP +Stroke the current path according to the line attributes\&. After called, the current path will be cleared from the context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_fill\fP, \fBps_paint\fP, \fBps_clear\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/path.3 b/doc/man/man3/path.3 new file mode 100644 index 0000000..a9efb88 --- /dev/null +++ b/doc/man/man3/path.3 @@ -0,0 +1,779 @@ +.TH "path" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +path +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_path_cmd\fP \fBps_path_cmd\fP" +.br +.RI "Path command for vertices\&. " +.ti -1c +.RI "typedef enum \fB_ps_path_op\fP \fBps_path_operation\fP" +.br +.RI "Path clipping operations\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_path_cmd\fP { \fBPATH_CMD_STOP\fP = 0, \fBPATH_CMD_MOVE_TO\fP = 1, \fBPATH_CMD_LINE_TO\fP = 2, \fBPATH_CMD_CURVE3\fP = 3, \fBPATH_CMD_CURVE4\fP = 4, \fBPATH_CMD_END_POLY\fP = 0x0F }" +.br +.RI "Path command for vertices\&. " +.ti -1c +.RI "enum \fB_ps_path_op\fP { \fBPATH_OP_UNION\fP, \fBPATH_OP_INTERSECT\fP, \fBPATH_OP_XOR\fP, \fBPATH_OP_DIFF\fP }" +.br +.RI "Path clipping operations\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_path\fP *PICAPI \fBps_path_create\fP (void)" +.br +.RI "Create a new empty path object\&. " +.ti -1c +.RI "PEXPORT \fBps_path\fP *PICAPI \fBps_path_create_copy\fP (const \fBps_path\fP *path)" +.br +.RI "Create a copy from an existing path object\&. " +.ti -1c +.RI "PEXPORT \fBps_path\fP *PICAPI \fBps_path_ref\fP (\fBps_path\fP *path)" +.br +.RI "Increases the reference count of the path by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_unref\fP (\fBps_path\fP *path)" +.br +.RI "Decrements the reference count for the path object\&. If the reference count on the path falls to 0, the path is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_move_to\fP (\fBps_path\fP *path, const \fBps_point\fP *point)" +.br +.RI "Begin a new sub path, and set the current point in the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_line_to\fP (\fBps_path\fP *path, const \fBps_point\fP *point)" +.br +.RI "Add a line to the path from the current point to given point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_tangent_arc_to\fP (\fBps_path\fP *path, float radius, const \fBps_point\fP *tp, const \fBps_point\fP *ep)" +.br +.RI "Add an arc to the path which tangent at two line\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_arc_to\fP (\fBps_path\fP *path, float radiusX, float radiusY, float angle, \fBps_bool\fP large_arc, \fBps_bool\fP clockwise, const \fBps_point\fP *ep)" +.br +.RI "Add an arc to the path, using radius, angle and end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_bezier_to\fP (\fBps_path\fP *path, const \fBps_point\fP *fcp, const \fBps_point\fP *scp, const \fBps_point\fP *ep)" +.br +.RI "Add a cubic bezier spline to the path from current point to end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_quad_to\fP (\fBps_path\fP *path, const \fBps_point\fP *cp, const \fBps_point\fP *ep)" +.br +.RI "Add a quadratic bezier spline to the path from current point to end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_sub_close\fP (\fBps_path\fP *path)" +.br +.RI "Close the sub path, and begin a new one\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_path_get_length\fP (const \fBps_path\fP *path)" +.br +.RI "Return The length of the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_clear\fP (\fBps_path\fP *path)" +.br +.RI "Clear the path to empty\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_path_is_empty\fP (const \fBps_path\fP *path)" +.br +.RI "Checks whether the path is empty\&. " +.ti -1c +.RI "PEXPORT unsigned int PICAPI \fBps_path_get_vertex_count\fP (const \fBps_path\fP *path)" +.br +.RI "Return the count of vertices in the path\&. " +.ti -1c +.RI "PEXPORT \fBps_path_cmd\fP PICAPI \fBps_path_get_vertex\fP (const \fBps_path\fP *path, unsigned int index, \fBps_point\fP *point)" +.br +.RI "Get a vertex from the path by index, and return the vertex command\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_path_bounding_rect\fP (const \fBps_path\fP *path, \fBps_rect\fP *rect)" +.br +.RI "Get the bounding rectangle of the path\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_path_contains\fP (const \fBps_path\fP *path, const \fBps_point\fP *point, \fBps_fill_rule\fP rule)" +.br +.RI "Check whether a point is contained in the path by fill method\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_path_stroke_contains\fP (const \fBps_path\fP *path, const \fBps_point\fP *point, float width)" +.br +.RI "Check whether a point is contained in the path by stroke method\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_line\fP (\fBps_path\fP *path, const \fBps_point\fP *p1, const \fBps_point\fP *p2)" +.br +.RI "Add a line to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_arc\fP (\fBps_path\fP *path, const \fBps_point\fP *cp, float radius, float sangle, float eangle, \fBps_bool\fP clockwise)" +.br +.RI "Add a arc to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_rect\fP (\fBps_path\fP *path, const \fBps_rect\fP *rect)" +.br +.RI "Add a rectangle to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_ellipse\fP (\fBps_path\fP *path, const \fBps_rect\fP *rect)" +.br +.RI "Add an ellipse to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_rounded_rect\fP (\fBps_path\fP *path, const \fBps_rect\fP *rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby)" +.br +.RI "Add a rounded rectangle to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_sub_path\fP (\fBps_path\fP *path, const \fBps_path\fP *spath)" +.br +.RI "Add an sub path to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_clipping\fP (\fBps_path\fP *result, \fBps_path_operation\fP op, const \fBps_path\fP *a, const \fBps_path\fP *b)" +.br +.RI "Clipping two path with the operation and get the result path\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_path_cmd\fP" + +.PP +Path command for vertices\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIPATH_CMD_STOP \fP\fP +Stop command\&. +.TP +\fB\fIPATH_CMD_MOVE_TO \fP\fP +Move to command\&. +.TP +\fB\fIPATH_CMD_LINE_TO \fP\fP +Line to command\&. +.TP +\fB\fIPATH_CMD_CURVE3 \fP\fP +Quad curve to command\&. +.TP +\fB\fIPATH_CMD_CURVE4 \fP\fP +Bezier curve to command\&. +.TP +\fB\fIPATH_CMD_END_POLY \fP\fP +End polyline command\&. +.PP +Definition at line 3301 of file picasso\&.h\&. +.SS "enum \fB_ps_path_op\fP" + +.PP +Path clipping operations\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIPATH_OP_UNION \fP\fP +Union\&. +.TP +\fB\fIPATH_OP_INTERSECT \fP\fP +Intersection\&. +.TP +\fB\fIPATH_OP_XOR \fP\fP +Exclusive or\&. +.TP +\fB\fIPATH_OP_DIFF \fP\fP +Difference\&. +.PP +Definition at line 3477 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "void ps_path_add_arc (\fBps_path\fP * path, const \fBps_point\fP * cp, float radius, float sangle, float eangle, \fBps_bool\fP clockwise)" + +.PP +Add a arc to the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIcp\fP The center point of the arc\&. +.br +\fIradius\fP The radius of the arc\&. +.br +\fIsangle\fP The start angle, in radians\&. +.br +\fIeangle\fP The end angle, in radians\&. +.br +\fIclockwise\fP True is clockwise, False is counter clockwise\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_add_line\fP, \fBps_path_add_rect\fP, \fBps_path_add_ellipse\fP, \fBps_path_add_rounded_rect\fP, \fBps_path_add_sub_path\fP +.RE +.PP + +.SS "void ps_path_add_ellipse (\fBps_path\fP * path, const \fBps_rect\fP * rect)" + +.PP +Add an ellipse to the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIrect\fP The rectangle to enclose the ellipse\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_add_arc\fP, \fBps_path_add_line\fP, \fBps_path_add_rect\fP, \fBps_path_add_rounded_rect\fP, \fBps_path_add_sub_path\fP +.RE +.PP + +.SS "void ps_path_add_line (\fBps_path\fP * path, const \fBps_point\fP * p1, const \fBps_point\fP * p2)" + +.PP +Add a line to the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIp1\fP The start point for the line\&. +.br +\fIp2\fP The end point for the line\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_add_arc\fP, \fBps_path_add_rect\fP, \fBps_path_add_ellipse\fP, \fBps_path_add_rounded_rect\fP, \fBps_path_add_sub_path\fP +.RE +.PP + +.SS "void ps_path_add_rect (\fBps_path\fP * path, const \fBps_rect\fP * rect)" + +.PP +Add a rectangle to the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIrect\fP The rectangle to be added\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_add_arc\fP, \fBps_path_add_line\fP, \fBps_path_add_ellipse\fP, \fBps_path_add_rounded_rect\fP, \fBps_path_add_sub_path\fP +.RE +.PP + +.SS "void ps_path_add_rounded_rect (\fBps_path\fP * path, const \fBps_rect\fP * rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby)" + +.PP +Add a rounded rectangle to the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIrect\fP The rectangle which will be added\&. +.br +\fIltx\fP The left top horizontal radius\&. +.br +\fIlty\fP The left top vertical radius\&. +.br +\fIrtx\fP The right top horizontal radius\&. +.br +\fIrty\fP The right top vertical radius\&. +.br +\fIlbx\fP The left bottom horizontal radius\&. +.br +\fIlby\fP The left bottom vertical radius\&. +.br +\fIrbx\fP The right bottom horizontal radius\&. +.br +\fIrby\fP The right bottom vertical radius\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_add_arc\fP, \fBps_path_add_line\fP, \fBps_path_add_rect\fP, \fBps_path_add_ellipse\fP, \fBps_path_add_sub_path\fP +.RE +.PP + +.SS "void ps_path_add_sub_path (\fBps_path\fP * path, const \fBps_path\fP * spath)" + +.PP +Add an sub path to the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIspath\fP The path will be added\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_add_arc\fP, \fBps_path_add_line\fP, \fBps_path_add_rect\fP, \fBps_path_add_rounded_rect\fP, \fBps_path_add_ellipse\fP +.RE +.PP + +.SS "void ps_path_arc_to (\fBps_path\fP * path, float radiusX, float radiusY, float angle, \fBps_bool\fP large_arc, \fBps_bool\fP clockwise, const \fBps_point\fP * ep)" + +.PP +Add an arc to the path, using radius, angle and end point\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIradiusX\fP The horizontal radius of arc\&. +.br +\fIradiusY\fP The vertical radius of arc\&. +.br +\fIangle\fP The angle of arc, in radians\&. +.br +\fIlarge_arc\fP True is large arc, False is small arc\&. +.br +\fIclockwise\fP True is clockwise, False is counter clockwise\&. +.br +\fIep\fP The end point of the arc\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_move_to\fP, \fBps_path_bezier_to\fP, \fBps_path_quad_to\fP \fBps_path_tangent_arc_to\fP, \fBps_path_line_to\fP +.RE +.PP + +.SS "void ps_path_bezier_to (\fBps_path\fP * path, const \fBps_point\fP * fcp, const \fBps_point\fP * scp, const \fBps_point\fP * ep)" + +.PP +Add a cubic bezier spline to the path from current point to end point\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIfcp\fP The first control point of the curve\&. +.br +\fIscp\fP The second control point of the curve\&. +.br +\fIep\fP The end point of the curve\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_move_to\fP, \fBps_path_arc_to\fP, \fBps_path_quad_to\fP \fBps_path_tangent_arc_to\fP, \fBps_path_line_to\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_path_bounding_rect (const \fBps_path\fP * path, \fBps_rect\fP * rect)" + +.PP +Get the bounding rectangle of the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIrect\fP Pointer to a buffer to receiving the rect\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_get_vertex_count\fP, \fBps_path_get_vertex\fP, \fBps_path_contains\fP, \fBps_path_stroke_contains\fP +.RE +.PP + +.SS "void ps_path_clear (\fBps_path\fP * path)" + +.PP +Clear the path to empty\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_sub_close\fP, \fBps_path_get_length\fP, \fBps_path_is_empty\fP +.RE +.PP + +.SS "void ps_path_clipping (\fBps_path\fP * result, \fBps_path_operation\fP op, const \fBps_path\fP * a, const \fBps_path\fP * b)" + +.PP +Clipping two path with the operation and get the result path\&. +.PP +\fBParameters\fP +.RS 4 +\fIresult\fP Pointer to an existing path object for result\&. +.br +\fIop\fP The specified operation for clipping\&. +.br +\fIa\fP The source path for clipping\&. +.br +\fIb\fP The path which will be clipping\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_get_vertex\fP, \fBps_path_get_vertex_count\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_path_contains (const \fBps_path\fP * path, const \fBps_point\fP * point, \fBps_fill_rule\fP rule)" + +.PP +Check whether a point is contained in the path by fill method\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIpoint\fP The point to be checked\&. +.br +\fIrule\fP The filling rule for the path\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if the point is contained, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_get_vertex_count\fP, \fBps_path_get_vertex\fP, \fBps_path_bounding_rect\fP, \fBps_path_stroke_contains\fP +.RE +.PP + +.SS "\fBps_path\fP * ps_path_create (void)" + +.PP +Create a new empty path object\&. +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new path object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_create_copy\fP, \fBps_path_ref\fP, \fBps_path_unref\fP +.RE +.PP + +.SS "\fBps_path\fP * ps_path_create_copy (const \fBps_path\fP * path)" + +.PP +Create a copy from an existing path object\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new path object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_create\fP, \fBps_path_ref\fP, \fBps_path_unref\fP +.RE +.PP + +.SS "float ps_path_get_length (const \fBps_path\fP * path)" + +.PP +Return The length of the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the length of the path object\&. If the function fails, the return value is 0\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_sub_close\fP, \fBps_path_clear\fP, \fBps_path_is_empty\fP +.RE +.PP + +.SS "\fBps_path_cmd\fP ps_path_get_vertex (const \fBps_path\fP * path, unsigned int index, \fBps_point\fP * point)" + +.PP +Get a vertex from the path by index, and return the vertex command\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIindex\fP The index of the vertex\&. +.br +\fIpoint\fP Pointer to a structure to receiving the vertex\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the command of the vertex\&. If the function fails, the return value is PATH_CMD_STOP\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_get_vertex_count\fP, \fBps_path_bounding_rect\fP, \fBps_path_contains\fP, \fBps_path_stroke_contains\fP +.RE +.PP + +.SS "unsigned int ps_path_get_vertex_count (const \fBps_path\fP * path)" + +.PP +Return the count of vertices in the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the vertices count in the path object\&. If the function fails, the return value is 0\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_get_vertex\fP, \fBps_path_bounding_rect\fP, \fBps_path_contains\fP, \fBps_path_stroke_contains\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_path_is_empty (const \fBps_path\fP * path)" + +.PP +Checks whether the path is empty\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_sub_close\fP, \fBps_path_get_length\fP, \fBps_path_clear\fP +.RE +.PP + +.SS "void ps_path_line_to (\fBps_path\fP * path, const \fBps_point\fP * point)" + +.PP +Add a line to the path from the current point to given point\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIpoint\fP The point which will be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_move_to\fP, \fBps_path_bezier_to\fP, \fBps_path_quad_to\fP \fBps_path_arc_to\fP, \fBps_path_tangent_arc_to\fP +.RE +.PP + +.SS "void ps_path_move_to (\fBps_path\fP * path, const \fBps_point\fP * point)" + +.PP +Begin a new sub path, and set the current point in the path\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIpoint\fP The point which will be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_line_to\fP, \fBps_path_bezier_to\fP, \fBps_path_quad_to\fP \fBps_path_arc_to\fP, \fBps_path_tangent_arc_to\fP +.RE +.PP + +.SS "void ps_path_quad_to (\fBps_path\fP * path, const \fBps_point\fP * cp, const \fBps_point\fP * ep)" + +.PP +Add a quadratic bezier spline to the path from current point to end point\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIcp\fP The control point of the curve\&. +.br +\fIep\fP The end point of the curve\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_move_to\fP, \fBps_path_arc_to\fP, \fBps_path_bezier_to\fP \fBps_path_tangent_arc_to\fP, \fBps_path_line_to\fP +.RE +.PP + +.SS "\fBps_path\fP * ps_path_ref (\fBps_path\fP * path)" + +.PP +Increases the reference count of the path by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the path object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_create\fP, \fBps_path_create_copy\fP, \fBps_path_unref\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_path_stroke_contains (const \fBps_path\fP * path, const \fBps_point\fP * point, float width)" + +.PP +Check whether a point is contained in the path by stroke method\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIpoint\fP The point to be checked\&. +.br +\fIwidth\fP The line width to use, in pixels, must be greater than 0\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if the point is contained, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_get_vertex_count\fP, \fBps_path_get_vertex\fP, \fBps_path_bounding_rect\fP, \fBps_path_contains\fP +.RE +.PP + +.SS "void ps_path_sub_close (\fBps_path\fP * path)" + +.PP +Close the sub path, and begin a new one\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_get_length\fP, \fBps_path_clear\fP, \fBps_path_is_empty\fP +.RE +.PP + +.SS "void ps_path_tangent_arc_to (\fBps_path\fP * path, float radius, const \fBps_point\fP * tp, const \fBps_point\fP * ep)" + +.PP +Add an arc to the path which tangent at two line\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.br +\fIradius\fP The radius of the arc\&. +.br +\fItp\fP The point which the first tangent line from current point to\&. +.br +\fIep\fP The point which the second tangent line from \fItp\fP to\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_move_to\fP, \fBps_path_bezier_to\fP, \fBps_path_quad_to\fP \fBps_path_arc_to\fP, \fBps_path_line_to\fP +.RE +.PP + +.SS "void ps_path_unref (\fBps_path\fP * path)" + +.PP +Decrements the reference count for the path object\&. If the reference count on the path falls to 0, the path is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fIpath\fP Pointer to an existing path object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_path_create\fP, \fBps_path_create_copy\fP, \fBps_path_ref\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/pattern.3 b/doc/man/man3/pattern.3 new file mode 100644 index 0000000..ad0271f --- /dev/null +++ b/doc/man/man3/pattern.3 @@ -0,0 +1,161 @@ +.TH "pattern" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pattern +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_wrap_type\fP \fBps_wrap_type\fP" +.br +.RI "Fill type of pattern\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_wrap_type\fP { \fBWRAP_TYPE_REPEAT\fP, \fBWRAP_TYPE_REFLECT\fP }" +.br +.RI "Fill type of pattern\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_pattern\fP *PICAPI \fBps_pattern_create_image\fP (const \fBps_image\fP *img, \fBps_wrap_type\fP x_wrap, \fBps_wrap_type\fP y_wrap, const \fBps_matrix\fP *transform)" +.br +.RI "Create a new pattern with an existing image\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_pattern_transform\fP (\fBps_pattern\fP *pattern, const \fBps_matrix\fP *matrix)" +.br +.RI "Transform the pattern object\&. " +.ti -1c +.RI "PEXPORT \fBps_pattern\fP *PICAPI \fBps_pattern_ref\fP (\fBps_pattern\fP *pattern)" +.br +.RI "Increases the reference count of the pattern by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_pattern_unref\fP (\fBps_pattern\fP *pattern)" +.br +.RI "Decrements the reference count for the pattern object\&. If the reference count on the pattern falls to 0, the pattern is freed\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_wrap_type\fP" + +.PP +Fill type of pattern\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIWRAP_TYPE_REPEAT \fP\fP +Wrap repeat, the pattern is repeated\&. +.TP +\fB\fIWRAP_TYPE_REFLECT \fP\fP +Wrap reflect the pattern is reflected\&. +.PP +Definition at line 864 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "\fBps_pattern\fP * ps_pattern_create_image (const \fBps_image\fP * img, \fBps_wrap_type\fP x_wrap, \fBps_wrap_type\fP y_wrap, const \fBps_matrix\fP * transform)" + +.PP +Create a new pattern with an existing image\&. +.PP +\fBParameters\fP +.RS 4 +\fIimg\fP An existing image object which will be a tiled of pattern object\&. +.br +\fIx_wrap\fP The horizontal wrap type, of the required pattern\&. +.br +\fIy_wrap\fP The vertical wrap type, of the required pattern\&. +.br +\fItransform\fP A matrix that represents a transform for every tiled\&. If no transform needed, pass NULL\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to a new pattern object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_pattern_ref\fP, \fBps_pattern_unref\fP +.RE +.PP + +.SS "\fBps_pattern\fP * ps_pattern_ref (\fBps_pattern\fP * pattern)" + +.PP +Increases the reference count of the pattern by 1\&. +.PP +\fBParameters\fP +.RS 4 +\fIpattern\fP Pointer to an existing pattern object\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the pointer to the pattern object\&. If the function fails, the return value is NULL\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_pattern_create_image\fP, \fBps_pattern_unref\fP +.RE +.PP + +.SS "void ps_pattern_transform (\fBps_pattern\fP * pattern, const \fBps_matrix\fP * matrix)" + +.PP +Transform the pattern object\&. +.PP +\fBParameters\fP +.RS 4 +\fIpattern\fP Pointer to an existing pattern object\&. +.br +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_pattern_create_image\fP, \fBps_pattern_ref\fP, \fBps_pattern_unref\fP +.RE +.PP + +.SS "void ps_pattern_unref (\fBps_pattern\fP * pattern)" + +.PP +Decrements the reference count for the pattern object\&. If the reference count on the pattern falls to 0, the pattern is freed\&. +.PP +\fBParameters\fP +.RS 4 +\fIpattern\fP Pointer to an existing pattern object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_pattern_create_image\fP, \fBps_pattern_ref\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/picasso.h.3 b/doc/man/man3/picasso.h.3 new file mode 100644 index 0000000..140ec73 --- /dev/null +++ b/doc/man/man3/picasso.h.3 @@ -0,0 +1,1085 @@ +.TH "include/picasso.h" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +include/picasso.h +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.br + +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fB_ps_glyph\fP" +.br +.RI "A character glyph of a font\&. " +.ti -1c +.RI "struct \fB_ps_size\fP" +.br +.RI "A structure that contains width and height values\&. " +.ti -1c +.RI "struct \fB_ps_rect\fP" +.br +.RI "A structure that contains location and dimensions of a rectangle\&. " +.ti -1c +.RI "struct \fB_ps_point\fP" +.br +.RI "A structure that contains a point in a two-dimensional coordinate system\&. " +.ti -1c +.RI "struct \fB_ps_color\fP" +.br +.RI "A structure that contains rgba values for a color\&. " +.ti -1c +.RI "struct \fB_ps_font_info\fP" +.br +.RI "A structure that contains font information\&. " +.in -1c +.SS "Macros" + +.in +1c +.ti -1c +.RI "#define \fBTrue\fP 1" +.br +.RI "define true value " +.ti -1c +.RI "#define \fBFalse\fP 0" +.br +.RI "define false value " +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef int \fBps_bool\fP" +.br +.RI "boolean type " +.ti -1c +.RI "typedef uint16_t \fBps_uchar16\fP" +.br +.RI "16 bit unsigned unicode character " +.ti -1c +.RI "typedef int16_t \fBps_schar16\fP" +.br +.RI "16 bit signed unicode character " +.ti -1c +.RI "typedef uint8_t \fBps_byte\fP" +.br +.RI "byte data type " +.ti -1c +.RI "typedef struct _ps_context \fBps_context\fP" +.br +.RI "An opaque type represents a Picasso drawing environment\&. " +.ti -1c +.RI "typedef struct _ps_canvas \fBps_canvas\fP" +.br +.RI "An opaque type represents a pixel buffer\&. " +.ti -1c +.RI "typedef struct _ps_image \fBps_image\fP" +.br +.RI "An opaque type represents an image\&. " +.ti -1c +.RI "typedef struct _ps_pattern \fBps_pattern\fP" +.br +.RI "An opaque type represents a pattern\&. " +.ti -1c +.RI "typedef struct _ps_gradient \fBps_gradient\fP" +.br +.RI "An opaque type represents a gradient\&. " +.ti -1c +.RI "typedef struct _ps_matrix \fBps_matrix\fP" +.br +.RI "An opaque type represents a transform matrix\&. " +.ti -1c +.RI "typedef struct _ps_path \fBps_path\fP" +.br +.RI "An opaque type represents a graphic path\&. " +.ti -1c +.RI "typedef struct _ps_mask \fBps_mask\fP" +.br +.RI "An opaque type represents an alpha mask\&. " +.ti -1c +.RI "typedef struct _ps_font \fBps_font\fP" +.br +.RI "An opaque type represents a font\&. " +.ti -1c +.RI "typedef struct \fB_ps_glyph\fP \fBps_glyph\fP" +.br +.RI "A character glyph of a font\&. " +.ti -1c +.RI "typedef struct \fB_ps_size\fP \fBps_size\fP" +.br +.RI "A structure that contains width and height values\&. " +.ti -1c +.RI "typedef struct \fB_ps_rect\fP \fBps_rect\fP" +.br +.RI "A structure that contains location and dimensions of a rectangle\&. " +.ti -1c +.RI "typedef struct \fB_ps_point\fP \fBps_point\fP" +.br +.RI "A structure that contains a point in a two-dimensional coordinate system\&. " +.ti -1c +.RI "typedef struct \fB_ps_color\fP \fBps_color\fP" +.br +.RI "A structure that contains rgba values for a color\&. " +.ti -1c +.RI "typedef enum \fB_ps_status\fP \fBps_status\fP" +.br +.RI "Status code return by call ps_last_status function\&. " +.ti -1c +.RI "typedef enum \fB_ps_color_format\fP \fBps_color_format\fP" +.br +.RI "Pixel formats of canvas or image\&. " +.ti -1c +.RI "typedef enum \fB_ps_wrap_type\fP \fBps_wrap_type\fP" +.br +.RI "Fill type of pattern\&. " +.ti -1c +.RI "typedef enum \fB_ps_gradient_spread\fP \fBps_gradient_spread\fP" +.br +.RI "Fill type of outside the gradient area\&. " +.ti -1c +.RI "typedef enum \fB_ps_line_cap\fP \fBps_line_cap\fP" +.br +.RI "Styles for rendering the endpoint of a stroked line\&. " +.ti -1c +.RI "typedef enum \fB_ps_line_join\fP \fBps_line_join\fP" +.br +.RI "Junction types for stroked lines\&. " +.ti -1c +.RI "typedef enum \fB_ps_line_inner_join\fP \fBps_line_inner_join\fP" +.br +.RI "Inner junction types for stroked lines\&. " +.ti -1c +.RI "typedef enum \fB_ps_composite\fP \fBps_composite\fP" +.br +.RI "Compositing operations for graphics context\&. " +.ti -1c +.RI "typedef enum \fB_ps_filter\fP \fBps_filter\fP" +.br +.RI "Graphics quality for rendering an image\&. " +.ti -1c +.RI "typedef enum \fB_ps_fill_rule\fP \fBps_fill_rule\fP" +.br +.RI "Fill rules for graphics\&. " +.ti -1c +.RI "typedef enum \fB_ps_charset\fP \fBps_charset\fP" +.br +.RI "Charset for a font\&. " +.ti -1c +.RI "typedef enum \fB_ps_font_weight\fP \fBps_font_weight\fP" +.br +.RI "Font weight\&. " +.ti -1c +.RI "typedef struct \fB_ps_font_info\fP \fBps_font_info\fP" +.br +.RI "A structure that contains font information\&. " +.ti -1c +.RI "typedef enum \fB_ps_text_type\fP \fBps_text_type\fP" +.br +.RI "Text rendering type\&. " +.ti -1c +.RI "typedef enum \fB_ps_draw_text_type\fP \fBps_draw_text_type\fP" +.br +.RI "Draw mode for rending text\&. " +.ti -1c +.RI "typedef enum \fB_ps_text_align\fP \fBps_text_align\fP" +.br +.RI "Text align mode for drawing text\&. " +.ti -1c +.RI "typedef enum \fB_ps_path_cmd\fP \fBps_path_cmd\fP" +.br +.RI "Path command for vertices\&. " +.ti -1c +.RI "typedef enum \fB_ps_path_op\fP \fBps_path_operation\fP" +.br +.RI "Path clipping operations\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_status\fP { \fBSTATUS_SUCCEED\fP, \fBSTATUS_OUT_OF_MEMORY\fP, \fBSTATUS_INVALID_ARGUMENT\fP, \fBSTATUS_NOT_SUPPORT\fP, \fBSTATUS_DEVICE_ERROR\fP, \fBSTATUS_MISMATCHING_FORMAT\fP, \fBSTATUS_UNKNOWN_ERROR\fP }" +.br +.RI "Status code return by call ps_last_status function\&. " +.ti -1c +.RI "enum \fB_ps_color_format\fP { \fBCOLOR_FORMAT_RGBA\fP, \fBCOLOR_FORMAT_ARGB\fP, \fBCOLOR_FORMAT_ABGR\fP, \fBCOLOR_FORMAT_BGRA\fP, \fBCOLOR_FORMAT_RGB\fP, \fBCOLOR_FORMAT_BGR\fP, \fBCOLOR_FORMAT_RGB565\fP, \fBCOLOR_FORMAT_RGB555\fP, \fBCOLOR_FORMAT_UNKNOWN\fP }" +.br +.RI "Pixel formats of canvas or image\&. " +.ti -1c +.RI "enum \fB_ps_wrap_type\fP { \fBWRAP_TYPE_REPEAT\fP, \fBWRAP_TYPE_REFLECT\fP }" +.br +.RI "Fill type of pattern\&. " +.ti -1c +.RI "enum \fB_ps_gradient_spread\fP { \fBGRADIENT_SPREAD_PAD\fP, \fBGRADIENT_SPREAD_REPEAT\fP, \fBGRADIENT_SPREAD_REFLECT\fP }" +.br +.RI "Fill type of outside the gradient area\&. " +.ti -1c +.RI "enum \fB_ps_line_cap\fP { \fBLINE_CAP_BUTT\fP, \fBLINE_CAP_ROUND\fP, \fBLINE_CAP_SQUARE\fP }" +.br +.RI "Styles for rendering the endpoint of a stroked line\&. " +.ti -1c +.RI "enum \fB_ps_line_join\fP { \fBLINE_JOIN_MITER\fP, \fBLINE_JOIN_MITER_REVERT\fP, \fBLINE_JOIN_MITER_ROUND\fP, \fBLINE_JOIN_ROUND\fP, \fBLINE_JOIN_BEVEL\fP }" +.br +.RI "Junction types for stroked lines\&. " +.ti -1c +.RI "enum \fB_ps_line_inner_join\fP { \fBLINE_INNER_MITER\fP, \fBLINE_INNER_BEVEL\fP, \fBLINE_INNER_JAG\fP, \fBLINE_INNER_ROUND\fP }" +.br +.RI "Inner junction types for stroked lines\&. " +.ti -1c +.RI "enum \fB_ps_composite\fP { \fBCOMPOSITE_CLEAR\fP, \fBCOMPOSITE_SRC\fP, \fBCOMPOSITE_SRC_OVER\fP, \fBCOMPOSITE_SRC_IN\fP, \fBCOMPOSITE_SRC_OUT\fP, \fBCOMPOSITE_SRC_ATOP\fP, \fBCOMPOSITE_DST\fP, \fBCOMPOSITE_DST_OVER\fP, \fBCOMPOSITE_DST_IN\fP, \fBCOMPOSITE_DST_OUT\fP, \fBCOMPOSITE_DST_ATOP\fP, \fBCOMPOSITE_XOR\fP, \fBCOMPOSITE_DARKEN\fP, \fBCOMPOSITE_LIGHTEN\fP, \fBCOMPOSITE_OVERLAY\fP, \fBCOMPOSITE_SCREEN\fP, \fBCOMPOSITE_MULTIPLY\fP, \fBCOMPOSITE_PLUS\fP, \fBCOMPOSITE_MINUS\fP, \fBCOMPOSITE_EXCLUSION\fP, \fBCOMPOSITE_DIFFERENCE\fP, \fBCOMPOSITE_SOFTLIGHT\fP, \fBCOMPOSITE_HARDLIGHT\fP, \fBCOMPOSITE_BURN\fP, \fBCOMPOSITE_DODGE\fP, \fBCOMPOSITE_CONTRAST\fP, \fBCOMPOSITE_INVERT\fP, \fBCOMPOSITE_INVERT_BLEND\fP, \fBCOMPOSITE_HUE\fP, \fBCOMPOSITE_SATURATION\fP, \fBCOMPOSITE_COLOR\fP, \fBCOMPOSITE_LUMINOSITY\fP, \fBCOMPOSITE_ERROR\fP }" +.br +.RI "Compositing operations for graphics context\&. " +.ti -1c +.RI "enum \fB_ps_filter\fP { \fBFILTER_NEAREST\fP, \fBFILTER_BILINEAR\fP, \fBFILTER_GAUSSIAN\fP, \fBFILTER_BICUBIC\fP, \fBFILTER_QUADRIC\fP, \fBFILTER_UNKNOWN\fP }" +.br +.RI "Graphics quality for rendering an image\&. " +.ti -1c +.RI "enum \fB_ps_fill_rule\fP { \fBFILL_RULE_WINDING\fP, \fBFILL_RULE_EVEN_ODD\fP, \fBFILL_RULE_ERROR\fP }" +.br +.RI "Fill rules for graphics\&. " +.ti -1c +.RI "enum \fB_ps_charset\fP { \fBCHARSET_ANSI\fP, \fBCHARSET_UNICODE\fP }" +.br +.RI "Charset for a font\&. " +.ti -1c +.RI "enum \fB_ps_font_weight\fP { \fBFONT_WEIGHT_REGULAR\fP = 400, \fBFONT_WEIGHT_MEDIUM\fP = 500, \fBFONT_WEIGHT_BOLD\fP = 700, \fBFONT_WEIGHT_HEAVY\fP = 900 }" +.br +.RI "Font weight\&. " +.ti -1c +.RI "enum \fB_ps_text_type\fP { \fBTEXT_TYPE_SMOOTH\fP, \fBTEXT_TYPE_MONO\fP, \fBTEXT_TYPE_STROKE\fP }" +.br +.RI "Text rendering type\&. " +.ti -1c +.RI "enum \fB_ps_draw_text_type\fP { \fBDRAW_TEXT_FILL\fP, \fBDRAW_TEXT_STROKE\fP, \fBDRAW_TEXT_BOTH\fP }" +.br +.RI "Draw mode for rending text\&. " +.ti -1c +.RI "enum \fB_ps_text_align\fP { \fBTEXT_ALIGN_CENTER\fP = 0, \fBTEXT_ALIGN_TOP\fP = 1, \fBTEXT_ALIGN_BOTTOM\fP = 2, \fBTEXT_ALIGN_LEFT\fP = 4, \fBTEXT_ALIGN_RIGHT\fP = 8 }" +.br +.RI "Text align mode for drawing text\&. " +.ti -1c +.RI "enum \fB_ps_path_cmd\fP { \fBPATH_CMD_STOP\fP = 0, \fBPATH_CMD_MOVE_TO\fP = 1, \fBPATH_CMD_LINE_TO\fP = 2, \fBPATH_CMD_CURVE3\fP = 3, \fBPATH_CMD_CURVE4\fP = 4, \fBPATH_CMD_END_POLY\fP = 0x0F }" +.br +.RI "Path command for vertices\&. " +.ti -1c +.RI "enum \fB_ps_path_op\fP { \fBPATH_OP_UNION\fP, \fBPATH_OP_INTERSECT\fP, \fBPATH_OP_XOR\fP, \fBPATH_OP_DIFF\fP }" +.br +.RI "Path clipping operations\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT int PICAPI \fBps_version\fP (void)" +.br +.RI "Return current version of picasso\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_initialize\fP (void)" +.br +.RI "Initialize the picasso drawing environment\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_shutdown\fP (void)" +.br +.RI "Shutdown the picasso drawing environment\&. " +.ti -1c +.RI "PEXPORT \fBps_status\fP PICAPI \fBps_last_status\fP (void)" +.br +.RI "Return the last status code of picasso\&. " +.ti -1c +.RI "PEXPORT \fBps_context\fP *PICAPI \fBps_context_create\fP (\fBps_canvas\fP *canvas, \fBps_context\fP *shared_context)" +.br +.RI "Create a new graphic context for a canvas\&. " +.ti -1c +.RI "PEXPORT \fBps_context\fP *PICAPI \fBps_context_ref\fP (\fBps_context\fP *ctx)" +.br +.RI "Increases the reference count of the context by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_context_unref\fP (\fBps_context\fP *ctx)" +.br +.RI "Decrements the reference count for the context object\&. If the reference count on the context falls to 0, the context is freed\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_context_set_canvas\fP (\fBps_context\fP *ctx, \fBps_canvas\fP *canvas)" +.br +.RI "Set a new canvas into a context, and return the old one\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_context_get_canvas\fP (\fBps_context\fP *ctx)" +.br +.RI "Get the canvas from the context\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create\fP (\fBps_color_format\fP fmt, int width, int height)" +.br +.RI "Create a new canvas using the given parameters\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create_with_data\fP (\fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch)" +.br +.RI "Create a new canvas using a given address in memory\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create_compatible\fP (const \fBps_canvas\fP *canvas, int width, int height)" +.br +.RI "Create a new canvas to compatible with an existing canvas\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create_from_canvas\fP (\fBps_canvas\fP *canvas, const \fBps_rect\fP *rect)" +.br +.RI "Create a new canvas using part of an existing canvas in same pixel buffer\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_create_from_image\fP (\fBps_image\fP *img, const \fBps_rect\fP *rect)" +.br +.RI "Create a new canvas using part of an existing ps_image object in same pixel buffer\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_replace_data\fP (\fBps_canvas\fP *canvas, \fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch)" +.br +.RI "Replace a canvas target rendering buffer address in memory, which is only use for canvas create by \fIps_canvas_create_with_data\fP\&. " +.ti -1c +.RI "PEXPORT \fBps_canvas\fP *PICAPI \fBps_canvas_ref\fP (\fBps_canvas\fP *canvas)" +.br +.RI "Increases the reference count of the canvas by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_canvas_unref\fP (\fBps_canvas\fP *canvas)" +.br +.RI "Decrements the reference count for the canvas object\&. If the reference count on the canvas falls to 0, the canvas is freed\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_canvas_get_size\fP (const \fBps_canvas\fP *canvas, \fBps_size\fP *rsize)" +.br +.RI "Return the size of the canvas\&. " +.ti -1c +.RI "PEXPORT \fBps_color_format\fP PICAPI \fBps_canvas_get_format\fP (const \fBps_canvas\fP *canvas)" +.br +.RI "Return the pixel format of the canvas\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_canvas_set_mask\fP (\fBps_canvas\fP *canvas, const \fBps_mask\fP *mask)" +.br +.RI "Set a new mask into an existing canvas object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_canvas_reset_mask\fP (\fBps_canvas\fP *canvas)" +.br +.RI "Clear the mask from the canvas object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_canvas_bitblt\fP (\fBps_canvas\fP *src, const \fBps_rect\fP *rect, \fBps_canvas\fP *dst, const \fBps_point\fP *location)" +.br +.RI "Copy raster data between two canvas objects\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create\fP (\fBps_color_format\fP fmt, int width, int height)" +.br +.RI "Create a new image using the given parameters\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_with_data\fP (\fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch)" +.br +.RI "Create a new image using a given address in memory\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_from_data\fP (\fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch)" +.br +.RI "Create a new image using a copy of given address in memory\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_compatible\fP (const \fBps_canvas\fP *canvas, int width, int height)" +.br +.RI "Create a new image to compatible with an existing canvas\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_from_canvas\fP (\fBps_canvas\fP *canvas, const \fBps_rect\fP *rect)" +.br +.RI "Create a new image using part of an existing canvas in same pixel buffer\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_create_from_image\fP (\fBps_image\fP *img, const \fBps_rect\fP *rect)" +.br +.RI "Create a new image using part of an existing ps_image object in same pixel buffer\&. " +.ti -1c +.RI "PEXPORT \fBps_image\fP *PICAPI \fBps_image_ref\fP (\fBps_image\fP *img)" +.br +.RI "Increases the reference count of the image by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_image_unref\fP (\fBps_image\fP *img)" +.br +.RI "Decrements the reference count for the image object\&. If the reference count on the image falls to 0, the image is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_image_set_allow_transparent\fP (\fBps_image\fP *img, \fBps_bool\fP allow)" +.br +.RI "Set whether the image allowed be transparent, False is default\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_image_set_transparent_color\fP (\fBps_image\fP *img, const \fBps_color\fP *color)" +.br +.RI "Set the transparent color for the image\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_image_get_size\fP (const \fBps_image\fP *img, \fBps_size\fP *rsize)" +.br +.RI "Return the size of the image\&. " +.ti -1c +.RI "PEXPORT \fBps_color_format\fP PICAPI \fBps_image_get_format\fP (const \fBps_image\fP *img)" +.br +.RI "Return the pixel format of the image\&. " +.ti -1c +.RI "PEXPORT \fBps_pattern\fP *PICAPI \fBps_pattern_create_image\fP (const \fBps_image\fP *img, \fBps_wrap_type\fP x_wrap, \fBps_wrap_type\fP y_wrap, const \fBps_matrix\fP *transform)" +.br +.RI "Create a new pattern with an existing image\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_pattern_transform\fP (\fBps_pattern\fP *pattern, const \fBps_matrix\fP *matrix)" +.br +.RI "Transform the pattern object\&. " +.ti -1c +.RI "PEXPORT \fBps_pattern\fP *PICAPI \fBps_pattern_ref\fP (\fBps_pattern\fP *pattern)" +.br +.RI "Increases the reference count of the pattern by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_pattern_unref\fP (\fBps_pattern\fP *pattern)" +.br +.RI "Decrements the reference count for the pattern object\&. If the reference count on the pattern falls to 0, the pattern is freed\&. " +.ti -1c +.RI "PEXPORT \fBps_gradient\fP *PICAPI \fBps_gradient_create_linear\fP (\fBps_gradient_spread\fP spread, const \fBps_point\fP *start, const \fBps_point\fP *end)" +.br +.RI "Create a new gradient that varies along the line defined by provided starting and ending points\&. " +.ti -1c +.RI "PEXPORT \fBps_gradient\fP *PICAPI \fBps_gradient_create_radial\fP (\fBps_gradient_spread\fP spread, const \fBps_point\fP *start, float sradius, const \fBps_point\fP *end, float eradius)" +.br +.RI "Create a new gradient that varies along the area defined by provided starting and ending circles\&. " +.ti -1c +.RI "PEXPORT \fBps_gradient\fP *PICAPI \fBps_gradient_create_conic\fP (\fBps_gradient_spread\fP spread, const \fBps_point\fP *origin, float sangle)" +.br +.RI "Create a new gradient that varies along the area defined by provided concentric circles\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_gradient_transform\fP (\fBps_gradient\fP *gradient, const \fBps_matrix\fP *matrix)" +.br +.RI "Transform the gradient object\&. " +.ti -1c +.RI "PEXPORT \fBps_gradient\fP *PICAPI \fBps_gradient_ref\fP (\fBps_gradient\fP *gradient)" +.br +.RI "Increases the reference count of the gradient by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_gradient_unref\fP (\fBps_gradient\fP *gradient)" +.br +.RI "Decrements the reference count for the gradient object\&. If the reference count on the gradient falls to 0, the gradient is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_gradient_add_color_stop\fP (\fBps_gradient\fP *gradient, float offset, const \fBps_color\fP *color)" +.br +.RI "Add a color stop to a gradient\&. The offset specifies the location along the gradient's control vector\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_gradient_clear_color_stops\fP (\fBps_gradient\fP *gradient)" +.br +.RI "Clear color stops from gradient's control vector\&. " +.ti -1c +.RI "PEXPORT \fBps_mask\fP *PICAPI \fBps_mask_create_with_data\fP (\fBps_byte\fP *data, int width, int height)" +.br +.RI "Create a new mask using a given data block\&. " +.ti -1c +.RI "PEXPORT \fBps_mask\fP *PICAPI \fBps_mask_ref\fP (\fBps_mask\fP *mask)" +.br +.RI "Increases the reference count of the mask by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_mask_unref\fP (\fBps_mask\fP *mask)" +.br +.RI "Decrements the reference count for the mask object\&. If the reference count on the mask falls to 0, the mask is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_mask_add_color_filter\fP (\fBps_mask\fP *mask, const \fBps_color\fP *color)" +.br +.RI "Add a color filter to a mask\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_mask_clear_color_filters\fP (\fBps_mask\fP *mask)" +.br +.RI "Clear all colors from mask's filter\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set a Color to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_image\fP (\fBps_context\fP *ctx, const \fBps_image\fP *image)" +.br +.RI "Set a image to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_pattern\fP (\fBps_context\fP *ctx, const \fBps_pattern\fP *pattern)" +.br +.RI "Set a pattern to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_gradient\fP (\fBps_context\fP *ctx, const \fBps_gradient\fP *gradient)" +.br +.RI "Set a gradient to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_source_canvas\fP (\fBps_context\fP *ctx, const \fBps_canvas\fP *canvas)" +.br +.RI "Set a canvas to the context, it is used to fill a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_line_cap\fP (\fBps_context\fP *ctx, \fBps_line_cap\fP line_cap)" +.br +.RI "Set the style for the endpoint of lines in a graphics context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_line_join\fP (\fBps_context\fP *ctx, \fBps_line_join\fP line_join)" +.br +.RI "Set the style for the joins of connected lines in a graphics context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_line_inner_join\fP (\fBps_context\fP *ctx, \fBps_line_inner_join\fP line_inner_join)" +.br +.RI "Set the style for the inner joins of connected lines in a graphics context\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_line_width\fP (\fBps_context\fP *ctx, float width)" +.br +.RI "Set the line width for a graphics context\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_miter_limit\fP (\fBps_context\fP *ctx, float limit)" +.br +.RI "Set the miter limit for the joins of connected lines in a graphics context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set a color to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_image\fP (\fBps_context\fP *ctx, const \fBps_image\fP *image)" +.br +.RI "Set a image to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_pattern\fP (\fBps_context\fP *ctx, const \fBps_pattern\fP *pattern)" +.br +.RI "Set a pattern to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_gradient\fP (\fBps_context\fP *ctx, const \fBps_gradient\fP *gradient)" +.br +.RI "Set a gradient to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_canvas\fP (\fBps_context\fP *ctx, const \fBps_canvas\fP *canvas)" +.br +.RI "Set a canvas to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_line_dash\fP (\fBps_context\fP *ctx, float start, const float *dashes, unsigned int num_dashes)" +.br +.RI "Set the pattern for dashed lines in the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_reset_line_dash\fP (\fBps_context\fP *ctx)" +.br +.RI "Clear the dashs from the context, and set to solid\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_shadow\fP (\fBps_context\fP *ctx, float x_offset, float y_offset, float blur)" +.br +.RI "Enables shadowing in a context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_shadow_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set the color of shadow\&. Default is a black color with 1/3 alpha\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_reset_shadow\fP (\fBps_context\fP *ctx)" +.br +.RI "Disables shadowing in a context\&. " +.ti -1c +.RI "PEXPORT \fBps_composite\fP PICAPI \fBps_set_composite_operator\fP (\fBps_context\fP *ctx, \fBps_composite\fP composite)" +.br +.RI "Set composites opertaions for graphics context\&. " +.ti -1c +.RI "PEXPORT \fBps_filter\fP PICAPI \fBps_set_filter\fP (\fBps_context\fP *ctx, \fBps_filter\fP filter)" +.br +.RI "Set interpolation filter for graphic context\&. " +.ti -1c +.RI "PEXPORT \fBps_fill_rule\fP PICAPI \fBps_set_fill_rule\fP (\fBps_context\fP *ctx, \fBps_fill_rule\fP rule)" +.br +.RI "Set fill rule for graphic context\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_alpha\fP (\fBps_context\fP *ctx, float alpha)" +.br +.RI "Set the opacity level for objects drawn in graphic context\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_gamma\fP (\fBps_context\fP *ctx, float gamma)" +.br +.RI "Set the gamma value for the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_antialias\fP (\fBps_context\fP *ctx, \fBps_bool\fP antialias)" +.br +.RI "Set whether the Anti-aliasing should be turn on\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_blur\fP (\fBps_context\fP *ctx, float blur)" +.br +.RI "Set the blur level for the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_stroke\fP (\fBps_context\fP *ctx)" +.br +.RI "Stroke the current path according to the line attributes\&. After called, the current path will be cleared from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_fill\fP (\fBps_context\fP *ctx)" +.br +.RI "Fill the current path according to the source attributes\&. After called, the current path will be cleared from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_paint\fP (\fBps_context\fP *ctx)" +.br +.RI "Fill and stroke the current path according to the source and line attributes\&. After called, the current path will be cleared from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clear\fP (\fBps_context\fP *ctx)" +.br +.RI "Clear the current context with source color\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clip\fP (\fBps_context\fP *ctx)" +.br +.RI "Clipping the current path, using the current fill rule\&. After called, the current path will be cleared from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clip_path\fP (\fBps_context\fP *ctx, const \fBps_path\fP *path, \fBps_fill_rule\fP rule)" +.br +.RI "Clipping specified path, using the given fill rule\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clip_rect\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect)" +.br +.RI "Clipping specified rectangle\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_scissor_rect\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect)" +.br +.RI "The fast way to clipping specified rectangle, the clip rect can not be transformed by world matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_clip_rects\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rects, unsigned int num_rects)" +.br +.RI "Clipping specified area defined by an array of rectangles\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_reset_clip\fP (\fBps_context\fP *ctx)" +.br +.RI "Clear the clipping area from the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_save\fP (\fBps_context\fP *ctx)" +.br +.RI "Pushes a copy of the current graphics state on to stack for context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_restore\fP (\fBps_context\fP *ctx)" +.br +.RI "Set the current graphics state to the state most recently saved\&. " +.ti -1c +.RI "PEXPORT \fBps_font\fP *PICAPI \fBps_font_create\fP (const char *name, \fBps_charset\fP charset, float size, int weight, \fBps_bool\fP italic)" +.br +.RI "Create a font object using the given parameters\&. " +.ti -1c +.RI "PEXPORT \fBps_font\fP *PICAPI \fBps_font_create_copy\fP (const \fBps_font\fP *font)" +.br +.RI "Create a copy from an existing font object\&. " +.ti -1c +.RI "PEXPORT \fBps_font\fP *PICAPI \fBps_font_ref\fP (\fBps_font\fP *font)" +.br +.RI "Increases the reference count of the font by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_unref\fP (\fBps_font\fP *font)" +.br +.RI "Decrements the reference count for the font object\&. If the reference count on the font falls to 0, the font is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_size\fP (\fBps_font\fP *font, float size)" +.br +.RI "Set size for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_weight\fP (\fBps_font\fP *font, int weight)" +.br +.RI "Set weight for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_italic\fP (\fBps_font\fP *font, \fBps_bool\fP italic)" +.br +.RI "Set italic for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_charset\fP (\fBps_font\fP *font, \fBps_charset\fP charset)" +.br +.RI "Set charset for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_hint\fP (\fBps_font\fP *font, \fBps_bool\fP hint)" +.br +.RI "Set hiting for a font object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_font_set_flip\fP (\fBps_font\fP *font, \fBps_bool\fP flip)" +.br +.RI "Set flip for a font object\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_font_info\fP (\fBps_context\fP *ctx, \fBps_font_info\fP *info)" +.br +.RI "Return the font information from the graphics context\&. " +.ti -1c +.RI "PEXPORT \fBps_font\fP *PICAPI \fBps_set_font\fP (\fBps_context\fP *ctx, const \fBps_font\fP *font)" +.br +.RI "Set a new font to graphics context\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_text_extent\fP (\fBps_context\fP *ctx, const void *text, unsigned int length, \fBps_size\fP *rsize)" +.br +.RI "Get extent for text using current font which selected to graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set the text fill color for the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_stroke_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set the text stroke color for the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_text_transform\fP (\fBps_context\fP *ctx, const \fBps_matrix\fP *matrix)" +.br +.RI "Transform text matrix for the graphic context\&. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix\&. The text matrix is an attribute of graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_matrix\fP (\fBps_context\fP *ctx, const \fBps_matrix\fP *matrix)" +.br +.RI "Set text matrix for the graphic context\&. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix\&. The text matrix is an attribute of graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_render_type\fP (\fBps_context\fP *ctx, \fBps_text_type\fP type)" +.br +.RI "Set rendering type for text\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_antialias\fP (\fBps_context\fP *ctx, \fBps_bool\fP antialias)" +.br +.RI "Set whether the font allowed be anti-aliasing\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_kerning\fP (\fBps_context\fP *ctx, \fBps_bool\fP kerning)" +.br +.RI "Set whether the font auto kerning is allowed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_text_out_length\fP (\fBps_context\fP *ctx, float x, float y, const char *text, unsigned int length)" +.br +.RI "Draw single byte characters (latin-1) at location in user space\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_wide_text_out_length\fP (\fBps_context\fP *ctx, float x, float y, const \fBps_uchar16\fP *text, unsigned int length)" +.br +.RI "Draw unicode characters (ucs-2) at location in user space\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_draw_text\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *area, const void *text, unsigned int length, \fBps_draw_text_type\fP type, \fBps_text_align\fP align)" +.br +.RI "Draw text in a rectangle area, using font object which is selected in graphic context\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_glyph\fP (\fBps_context\fP *ctx, int ch, \fBps_glyph\fP *glyph)" +.br +.RI "Get the glyph from a given character, using font object which is selected in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_show_glyphs\fP (\fBps_context\fP *ctx, float x, float y, \fBps_glyph\fP *glyphs, unsigned int length)" +.br +.RI "Draw an array of glyphs at location in user space\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_path_from_glyph\fP (\fBps_context\fP *ctx, const \fBps_glyph\fP *glyph, \fBps_path\fP *path)" +.br +.RI "Get the path from a given glyph object\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_glyph_get_extent\fP (const \fBps_glyph\fP *glyph, \fBps_size\fP *rsize)" +.br +.RI "Get extent for a glyph object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_translate\fP (\fBps_context\fP *ctx, float tx, float ty)" +.br +.RI "Changes the origin of the user coordinate system in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_scale\fP (\fBps_context\fP *ctx, float sx, float sy)" +.br +.RI "Changes the scale of the user coordinate system in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_shear\fP (\fBps_context\fP *ctx, float shx, float shy)" +.br +.RI "Changes the shear of the user coordinate system in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_rotate\fP (\fBps_context\fP *ctx, float angle)" +.br +.RI "Rotates the user coordinate system in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_identity\fP (\fBps_context\fP *ctx)" +.br +.RI "Reset the current transformation matrix to identity matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_transform\fP (\fBps_context\fP *ctx, const \fBps_matrix\fP *matrix)" +.br +.RI "Transforms the user coordinate system in graphic context using a specified matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_matrix\fP (\fBps_context\fP *ctx, const \fBps_matrix\fP *matrix)" +.br +.RI "Modifies the current transformation matrix to the given matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_matrix\fP (\fBps_context\fP *ctx, \fBps_matrix\fP *matrix)" +.br +.RI "Get the current transformation matrix from graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_world_to_viewport\fP (\fBps_context\fP *ctx, \fBps_point\fP *point)" +.br +.RI "Transform a coordinate from device space to user space\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_viewport_to_world\fP (\fBps_context\fP *ctx, \fBps_point\fP *point)" +.br +.RI "Transform a coordinate from user space to device space\&. " +.ti -1c +.RI "PEXPORT \fBps_matrix\fP *PICAPI \fBps_matrix_create\fP (void)" +.br +.RI "Create a identity matrix object\&. " +.ti -1c +.RI "PEXPORT \fBps_matrix\fP *PICAPI \fBps_matrix_create_init\fP (float sx, float shy, float shx, float sy, float tx, float ty)" +.br +.RI "Create a matrix with given parameters\&. " +.ti -1c +.RI "PEXPORT \fBps_matrix\fP *PICAPI \fBps_matrix_create_copy\fP (const \fBps_matrix\fP *matrix)" +.br +.RI "Create a matrix copy from an exist one\&. " +.ti -1c +.RI "PEXPORT \fBps_matrix\fP *PICAPI \fBps_matrix_ref\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Increases the reference count of the matrix by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_unref\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Decrements the reference count for the matrix object\&. If the reference count on the matrix falls to 0, the matrix is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_init\fP (\fBps_matrix\fP *matrix, float sx, float shy, float shx, float sy, float tx, float ty)" +.br +.RI "Initialize an existing matrix object with given parameters\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_translate\fP (\fBps_matrix\fP *matrix, float tx, float ty)" +.br +.RI "Modify a matrix by translating\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_scale\fP (\fBps_matrix\fP *matrix, float sx, float sy)" +.br +.RI "Modify a matrix by scaling\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_rotate\fP (\fBps_matrix\fP *matrix, float angle)" +.br +.RI "Modify a matrix by rotating\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_shear\fP (\fBps_matrix\fP *matrix, float shx, float shy)" +.br +.RI "Modify a matrix by shearing\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_invert\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Modify a matrix by inverting\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_identity\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Reset a matrix to identity matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_flip_x\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Flip a matrix in the horizontal direction\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_flip_y\fP (\fBps_matrix\fP *matrix)" +.br +.RI "Flip a matrix in the vertical direction\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_multiply\fP (\fBps_matrix\fP *result, const \fBps_matrix\fP *a, const \fBps_matrix\fP *b)" +.br +.RI "Multiplies the matrix in a and b together and stores the result in result\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_is_identity\fP (const \fBps_matrix\fP *matrix)" +.br +.RI "Checks whether the matrix is the identity transform matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_is_equal\fP (const \fBps_matrix\fP *a, const \fBps_matrix\fP *b)" +.br +.RI "Checks whether two matrix are equal\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_matrix_get_determinant\fP (const \fBps_matrix\fP *matrix)" +.br +.RI "Return the determinant from a matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_set_translate_factor\fP (\fBps_matrix\fP *matrix, float tx, float ty)" +.br +.RI "Set the translate factors to the matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_get_translate_factor\fP (\fBps_matrix\fP *matrix, float *tx, float *ty)" +.br +.RI "Get the translate factors from the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_set_scale_factor\fP (\fBps_matrix\fP *matrix, float sx, float sy)" +.br +.RI "Set the scale factors to the matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_get_scale_factor\fP (\fBps_matrix\fP *matrix, float *sx, float *sy)" +.br +.RI "Get the scale factors from the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_set_shear_factor\fP (\fBps_matrix\fP *matrix, float shx, float shy)" +.br +.RI "Set the shear factors to the matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_matrix_get_shear_factor\fP (\fBps_matrix\fP *matrix, float *shx, float *shy)" +.br +.RI "Get the shear factors from the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_transform_point\fP (const \fBps_matrix\fP *matrix, \fBps_point\fP *point)" +.br +.RI "Transform an existing point using the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_transform_rect\fP (const \fBps_matrix\fP *matrix, \fBps_rect\fP *rect)" +.br +.RI "Transform an existing rectangle using the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_matrix_transform_path\fP (const \fBps_matrix\fP *matrix, \fBps_path\fP *path)" +.br +.RI "Transform an existing path using the matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_new_path\fP (\fBps_context\fP *ctx)" +.br +.RI "Create a new empty path in the graphic context, clear the old one\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_new_sub_path\fP (\fBps_context\fP *ctx)" +.br +.RI "Close the current path, and add a new empty sub path in the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_add_sub_path\fP (\fBps_context\fP *ctx, const \fBps_path\fP *path)" +.br +.RI "Add a new sub path to current path in the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_path\fP (\fBps_context\fP *ctx, const \fBps_path\fP *path)" +.br +.RI "Replace the current path in the graphic context\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_path\fP (\fBps_context\fP *ctx, \fBps_path\fP *path)" +.br +.RI "Get the current path in the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_close_path\fP (\fBps_context\fP *ctx)" +.br +.RI "Close the current path in the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_move_to\fP (\fBps_context\fP *ctx, const \fBps_point\fP *point)" +.br +.RI "Begin a new sub path, and set the current point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_line_to\fP (\fBps_context\fP *ctx, const \fBps_point\fP *point)" +.br +.RI "Add a line to the current path from the current point to given point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_bezier_curve_to\fP (\fBps_context\fP *ctx, const \fBps_point\fP *fcp, const \fBps_point\fP *scp, const \fBps_point\fP *ep)" +.br +.RI "Add a cubic bezier spline to the current path from current point to end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_quad_curve_to\fP (\fBps_context\fP *ctx, const \fBps_point\fP *cp, const \fBps_point\fP *ep)" +.br +.RI "Add a quadratic bezier spline to the current path from current point to end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_arc\fP (\fBps_context\fP *ctx, const \fBps_point\fP *cp, float radius, float sangle, float eangle, \fBps_bool\fP clockwise)" +.br +.RI "Add a circular arc to the current path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_tangent_arc\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect, float sangle, float sweep)" +.br +.RI "Add a circular arc which is inner tangent from a rectangle\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_rectangle\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect)" +.br +.RI "Add a rectangle to the current path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_rounded_rect\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby)" +.br +.RI "Add a rounded rectangle to the current path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_ellipse\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *rect)" +.br +.RI "Adds an ellipse to the current path which fits inside the specified rectangle\&. " +.ti -1c +.RI "PEXPORT \fBps_path\fP *PICAPI \fBps_path_create\fP (void)" +.br +.RI "Create a new empty path object\&. " +.ti -1c +.RI "PEXPORT \fBps_path\fP *PICAPI \fBps_path_create_copy\fP (const \fBps_path\fP *path)" +.br +.RI "Create a copy from an existing path object\&. " +.ti -1c +.RI "PEXPORT \fBps_path\fP *PICAPI \fBps_path_ref\fP (\fBps_path\fP *path)" +.br +.RI "Increases the reference count of the path by 1\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_unref\fP (\fBps_path\fP *path)" +.br +.RI "Decrements the reference count for the path object\&. If the reference count on the path falls to 0, the path is freed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_move_to\fP (\fBps_path\fP *path, const \fBps_point\fP *point)" +.br +.RI "Begin a new sub path, and set the current point in the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_line_to\fP (\fBps_path\fP *path, const \fBps_point\fP *point)" +.br +.RI "Add a line to the path from the current point to given point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_tangent_arc_to\fP (\fBps_path\fP *path, float radius, const \fBps_point\fP *tp, const \fBps_point\fP *ep)" +.br +.RI "Add an arc to the path which tangent at two line\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_arc_to\fP (\fBps_path\fP *path, float radiusX, float radiusY, float angle, \fBps_bool\fP large_arc, \fBps_bool\fP clockwise, const \fBps_point\fP *ep)" +.br +.RI "Add an arc to the path, using radius, angle and end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_bezier_to\fP (\fBps_path\fP *path, const \fBps_point\fP *fcp, const \fBps_point\fP *scp, const \fBps_point\fP *ep)" +.br +.RI "Add a cubic bezier spline to the path from current point to end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_quad_to\fP (\fBps_path\fP *path, const \fBps_point\fP *cp, const \fBps_point\fP *ep)" +.br +.RI "Add a quadratic bezier spline to the path from current point to end point\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_sub_close\fP (\fBps_path\fP *path)" +.br +.RI "Close the sub path, and begin a new one\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_path_get_length\fP (const \fBps_path\fP *path)" +.br +.RI "Return The length of the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_clear\fP (\fBps_path\fP *path)" +.br +.RI "Clear the path to empty\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_path_is_empty\fP (const \fBps_path\fP *path)" +.br +.RI "Checks whether the path is empty\&. " +.ti -1c +.RI "PEXPORT unsigned int PICAPI \fBps_path_get_vertex_count\fP (const \fBps_path\fP *path)" +.br +.RI "Return the count of vertices in the path\&. " +.ti -1c +.RI "PEXPORT \fBps_path_cmd\fP PICAPI \fBps_path_get_vertex\fP (const \fBps_path\fP *path, unsigned int index, \fBps_point\fP *point)" +.br +.RI "Get a vertex from the path by index, and return the vertex command\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_path_bounding_rect\fP (const \fBps_path\fP *path, \fBps_rect\fP *rect)" +.br +.RI "Get the bounding rectangle of the path\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_path_contains\fP (const \fBps_path\fP *path, const \fBps_point\fP *point, \fBps_fill_rule\fP rule)" +.br +.RI "Check whether a point is contained in the path by fill method\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_path_stroke_contains\fP (const \fBps_path\fP *path, const \fBps_point\fP *point, float width)" +.br +.RI "Check whether a point is contained in the path by stroke method\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_line\fP (\fBps_path\fP *path, const \fBps_point\fP *p1, const \fBps_point\fP *p2)" +.br +.RI "Add a line to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_arc\fP (\fBps_path\fP *path, const \fBps_point\fP *cp, float radius, float sangle, float eangle, \fBps_bool\fP clockwise)" +.br +.RI "Add a arc to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_rect\fP (\fBps_path\fP *path, const \fBps_rect\fP *rect)" +.br +.RI "Add a rectangle to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_ellipse\fP (\fBps_path\fP *path, const \fBps_rect\fP *rect)" +.br +.RI "Add an ellipse to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_rounded_rect\fP (\fBps_path\fP *path, const \fBps_rect\fP *rect, float ltx, float lty, float rtx, float rty, float lbx, float lby, float rbx, float rby)" +.br +.RI "Add a rounded rectangle to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_add_sub_path\fP (\fBps_path\fP *path, const \fBps_path\fP *spath)" +.br +.RI "Add an sub path to the path\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_path_clipping\fP (\fBps_path\fP *result, \fBps_path_operation\fP op, const \fBps_path\fP *a, const \fBps_path\fP *b)" +.br +.RI "Clipping two path with the operation and get the result path\&. " +.in -1c +.SH "Detailed Description" +.PP + +.PP +\fBAuthor\fP +.RS 4 +Zhang Ji Peng onecoolx@gmail.com +.RE +.PP +\fBDate\fP +.RS 4 +2014/6/16 +.RE +.PP +This file includes all interfaces of Picasso +.PP +.PP +.nf + Copyright (C) 2008 ~ 2024 Zhang Ji Peng + + All rights reserved. + + Picasso is a vector graphic library..fi +.PP + +.PP +Definition in file \fBpicasso\&.h\fP\&. +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/psx_image.h.3 b/doc/man/man3/psx_image.h.3 new file mode 100644 index 0000000..f5319cc --- /dev/null +++ b/doc/man/man3/psx_image.h.3 @@ -0,0 +1,145 @@ +.TH "include/images/psx_image.h" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +include/images/psx_image.h +.SH SYNOPSIS +.br +.PP +\fC#include 'picasso\&.h'\fP +.br + +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fB_psx_image_frame\fP" +.br +.RI "A frame image data\&. " +.ti -1c +.RI "struct \fB_psx_image\fP" +.br +.RI "A image object\&. " +.in -1c +.SS "Macros" + +.in +1c +.ti -1c +.RI "#define \fBIMG_OBJ\fP(image) \fBIMG_OBJ_AT_INDEX\fP(image, 0)" +.br +.RI "Get first ps_image obj\&. " +.ti -1c +.RI "#define \fBIMG_DATA\fP(image) \fBIMG_DATA_AT_INDEX\fP(image, 0)" +.br +.RI "Get first image frame data\&. " +.ti -1c +.RI "#define \fBIMG_DATA_SIZE\fP(image) \fBIMG_DATA_SIZE_AT_INDEX\fP(image, 0)" +.br +.RI "Get first image frame data size\&. " +.ti -1c +.RI "#define \fBIMG_OBJ_AT_INDEX\fP(image, idx) (image\->frames[idx]\&.img)" +.br +.RI "Get ps_image obj at index\&. " +.ti -1c +.RI "#define \fBIMG_DATA_AT_INDEX\fP(image, idx) (image\->frames[idx]\&.data)" +.br +.RI "Get image frame data at index\&. " +.ti -1c +.RI "#define \fBIMG_DATA_SIZE_AT_INDEX\fP(img, idx) (img\->frames[idx]\&.size)" +.br +.RI "Get image frame data size at index\&. " +.ti -1c +.RI "#define \fBIMG_DURATION_AT_INDEX\fP(img, idx) (img\->frames[idx]\&.duration)" +.br +.RI "Get image frame duration at index\&. " +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef struct \fB_psx_image_frame\fP \fBpsx_image_frame\fP" +.br +.RI "A frame image data\&. " +.ti -1c +.RI "typedef struct \fB_psx_image\fP \fBpsx_image\fP" +.br +.RI "A image object\&. " +.ti -1c +.RI "typedef int(* \fBimage_writer_fn\fP) (void *param, const \fBps_byte\fP *data, size_t length)" +.br +.RI "Callback function for saving image data\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum { \fBS_OK\fP = 0, \fBS_BAD_PARAMS\fP = 1, \fBS_NOT_SUPPORT\fP = 2, \fBS_OUT_OF_MEMORY\fP = 3, \fBS_INIT_FAILURE\fP = 4, \fBS_FAILURE\fP = 5 }" +.br +.RI "Status code return by call APIs\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_init\fP (void)" +.br +.RI "Initialze the library and load resources\&. " +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_shutdown\fP (void)" +.br +.RI "Release resources and shutdoen\&. " +.ti -1c +.RI "PEXPORT \fBpsx_image\fP *PICAPI \fBpsx_image_create_from_data\fP (\fBps_byte\fP *data, \fBps_color_format\fP fmt, int width, int height, int pitch, int *err_code)" +.br +.RI "Create a new psx_image using a copy of given address in memory\&. " +.ti -1c +.RI "PEXPORT \fBpsx_image\fP *PICAPI \fBpsx_image_load\fP (const char *file_name, int *err_code)" +.br +.RI "Create a new psx_image object and load from file\&. " +.ti -1c +.RI "PEXPORT \fBpsx_image\fP *PICAPI \fBpsx_image_load_from_memory\fP (const \fBps_byte\fP *data, size_t length, int *err_code)" +.br +.RI "Create a new psx_image object and load data from memory\&. " +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_save\fP (const \fBpsx_image\fP *image, \fBimage_writer_fn\fP func, void *param, const char *type, float quality)" +.br +.RI "Encoding psx_image to a gaving format and output it\&. " +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_save_to_file\fP (const \fBpsx_image\fP *image, const char *file_name, const char *type, float quality)" +.br +.RI "Encoding psx_image to a gaving format and output to a file\&. " +.ti -1c +.RI "PEXPORT int PICAPI \fBpsx_image_destroy\fP (\fBpsx_image\fP *image)" +.br +.RI "Destroy the psx_image object and release resources\&. " +.in -1c +.SH "Detailed Description" +.PP + +.PP +\fBAuthor\fP +.RS 4 +Zhang Ji Peng onecoolx@gmail.com +.RE +.PP +\fBDate\fP +.RS 4 +2012/1/31 +.RE +.PP +This file includes all interfaces of picasso extended image decoders\&. +.PP +.nf + Copyright (C) 2008 ~ 2024 Zhang Ji Peng + + All rights reserved. + + Picasso is a vector graphic library. +.fi +.PP + +.PP +Definition in file \fBpsx_image\&.h\fP\&. +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/psx_image_plugin.h.3 b/doc/man/man3/psx_image_plugin.h.3 new file mode 100644 index 0000000..af24246 --- /dev/null +++ b/doc/man/man3/psx_image_plugin.h.3 @@ -0,0 +1,111 @@ +.TH "include/images/psx_image_plugin.h" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +include/images/psx_image_plugin.h +.SH SYNOPSIS +.br +.PP +\fC#include 'picasso\&.h'\fP +.br +\fC#include 'psx_image\&.h'\fP +.br + +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fB_psx_image_header\fP" +.br +.RI "Image reader header define\&. " +.ti -1c +.RI "struct \fB_psx_image_operator\fP" +.br +.RI "The image operator define\&. " +.in -1c +.SS "Macros" + +.in +1c +.ti -1c +.RI "#define \fBMODULE_NAME\fP 1" +.br +.RI "Get module name\&. " +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef struct \fB_psx_image_header\fP \fBpsx_image_header\fP" +.br +.RI "Image reader header define\&. " +.ti -1c +.RI "typedef struct \fB_psx_image_operator\fP \fBpsx_image_operator\fP" +.br +.RI "The image operator define\&. " +.ti -1c +.RI "typedef enum \fB_psx_priority_level\fP \fBpsx_priority_level\fP" +.br +.RI "Priority level for image_operator\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_psx_priority_level\fP { \fBPRIORITY_EXTENTED\fP = -1, \fBPRIORITY_DEFAULT\fP = 0, \fBPRIORITY_MASTER\fP = 1 }" +.br +.RI "Priority level for image_operator\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT int \fBpsx_image_register_operator\fP (const char *type, const \fBps_byte\fP *signature, size_t sig_offset, size_t sig_len, \fBpsx_priority_level\fP level, \fBpsx_image_operator\fP *coder)" +.br +.RI "Register the image operator\&. " +.ti -1c +.RI "PEXPORT int \fBpsx_image_unregister_operator\fP (\fBpsx_image_operator\fP *coder)" +.br +.RI "Unregister the image operator\&. " +.ti -1c +.RI "PEXPORT void \fBpsx_image_module_init\fP (void)" +.br +.RI "Initialze the image module\&. " +.ti -1c +.RI "PEXPORT void \fBpsx_image_module_shutdown\fP (void)" +.br +.RI "Shutdown the image module\&. " +.ti -1c +.RI "const PEXPORT char * \fBpsx_image_module_get_string\fP (int id)" +.br +.RI "Get the string info about module\&. " +.in -1c +.SH "Detailed Description" +.PP + +.PP +\fBAuthor\fP +.RS 4 +Zhang Ji Peng onecoolx@gmail.com +.RE +.PP +\fBDate\fP +.RS 4 +2012/1/31 +.RE +.PP +This file includes all interfaces of image decoder backend\&. +.PP +.nf + Copyright (C) 2008 ~ 2024 Zhang Ji Peng + + All rights reserved. + + Picasso is a vector graphic library. +.fi +.PP + +.PP +Definition in file \fBpsx_image_plugin\&.h\fP\&. +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/shadow.3 b/doc/man/man3/shadow.3 new file mode 100644 index 0000000..1ecb1a1 --- /dev/null +++ b/doc/man/man3/shadow.3 @@ -0,0 +1,88 @@ +.TH "shadow" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +shadow +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_shadow\fP (\fBps_context\fP *ctx, float x_offset, float y_offset, float blur)" +.br +.RI "Enables shadowing in a context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_shadow_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set the color of shadow\&. Default is a black color with 1/3 alpha\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_reset_shadow\fP (\fBps_context\fP *ctx)" +.br +.RI "Disables shadowing in a context\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "void ps_reset_shadow (\fBps_context\fP * ctx)" + +.PP +Disables shadowing in a context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_shadow_color\fP, \fBps_set_shadow\fP +.RE +.PP + +.SS "void ps_set_shadow (\fBps_context\fP * ctx, float x_offset, float y_offset, float blur)" + +.PP +Enables shadowing in a context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIx_offset\fP Offset on horizontal from origin (0,0)\&. +.br +\fIy_offset\fP Offset on vertical from origin (0,0)\&. +.br +\fIblur\fP Specifying the amount of blur (0 ~ 1)\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_shadow_color\fP, \fBps_reset_shadow\fP +.RE +.PP + +.SS "void ps_set_shadow_color (\fBps_context\fP * ctx, const \fBps_color\fP * color)" + +.PP +Set the color of shadow\&. Default is a black color with 1/3 alpha\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcolor\fP Specifies the color of the shadow\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_shadow\fP, \fBps_reset_shadow\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/state.3 b/doc/man/man3/state.3 new file mode 100644 index 0000000..b46bef4 --- /dev/null +++ b/doc/man/man3/state.3 @@ -0,0 +1,99 @@ +.TH "state" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +state +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void PICAPI \fBps_save\fP (\fBps_context\fP *ctx)" +.br +.RI "Pushes a copy of the current graphics state on to stack for context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_restore\fP (\fBps_context\fP *ctx)" +.br +.RI "Set the current graphics state to the state most recently saved\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "void ps_restore (\fBps_context\fP * ctx)" + +.PP +Set the current graphics state to the state most recently saved\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_save\fP +.RE +.PP + +.SS "void ps_save (\fBps_context\fP * ctx)" + +.PP +Pushes a copy of the current graphics state on to stack for context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. The graphics state saved are: +.IP "\(bu" 2 +Image filter +.IP "\(bu" 2 +Font object +.IP "\(bu" 2 +Gamma value +.IP "\(bu" 2 +Alpha value +.IP "\(bu" 2 +Blur value +.IP "\(bu" 2 +Text stroke color +.IP "\(bu" 2 +Text fill color +.IP "\(bu" 2 +Compositing method +.IP "\(bu" 2 +Transform matrix +.IP "\(bu" 2 +Line width +.IP "\(bu" 2 +Line cap +.IP "\(bu" 2 +Line join +.IP "\(bu" 2 +Line dash +.IP "\(bu" 2 +Stroke object +.IP "\(bu" 2 +Source object +.IP "\(bu" 2 +Fill color +.IP "\(bu" 2 +Fill rule +.IP "\(bu" 2 +Clip region +.IP "\(bu" 2 +Shadow parameters +.PP +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_restore\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/stroke.3 b/doc/man/man3/stroke.3 new file mode 100644 index 0000000..24c0593 --- /dev/null +++ b/doc/man/man3/stroke.3 @@ -0,0 +1,403 @@ +.TH "stroke" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +stroke +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_line_cap\fP \fBps_line_cap\fP" +.br +.RI "Styles for rendering the endpoint of a stroked line\&. " +.ti -1c +.RI "typedef enum \fB_ps_line_join\fP \fBps_line_join\fP" +.br +.RI "Junction types for stroked lines\&. " +.ti -1c +.RI "typedef enum \fB_ps_line_inner_join\fP \fBps_line_inner_join\fP" +.br +.RI "Inner junction types for stroked lines\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_line_cap\fP { \fBLINE_CAP_BUTT\fP, \fBLINE_CAP_ROUND\fP, \fBLINE_CAP_SQUARE\fP }" +.br +.RI "Styles for rendering the endpoint of a stroked line\&. " +.ti -1c +.RI "enum \fB_ps_line_join\fP { \fBLINE_JOIN_MITER\fP, \fBLINE_JOIN_MITER_REVERT\fP, \fBLINE_JOIN_MITER_ROUND\fP, \fBLINE_JOIN_ROUND\fP, \fBLINE_JOIN_BEVEL\fP }" +.br +.RI "Junction types for stroked lines\&. " +.ti -1c +.RI "enum \fB_ps_line_inner_join\fP { \fBLINE_INNER_MITER\fP, \fBLINE_INNER_BEVEL\fP, \fBLINE_INNER_JAG\fP, \fBLINE_INNER_ROUND\fP }" +.br +.RI "Inner junction types for stroked lines\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_line_cap\fP (\fBps_context\fP *ctx, \fBps_line_cap\fP line_cap)" +.br +.RI "Set the style for the endpoint of lines in a graphics context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_line_join\fP (\fBps_context\fP *ctx, \fBps_line_join\fP line_join)" +.br +.RI "Set the style for the joins of connected lines in a graphics context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_line_inner_join\fP (\fBps_context\fP *ctx, \fBps_line_inner_join\fP line_inner_join)" +.br +.RI "Set the style for the inner joins of connected lines in a graphics context\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_line_width\fP (\fBps_context\fP *ctx, float width)" +.br +.RI "Set the line width for a graphics context\&. " +.ti -1c +.RI "PEXPORT float PICAPI \fBps_set_miter_limit\fP (\fBps_context\fP *ctx, float limit)" +.br +.RI "Set the miter limit for the joins of connected lines in a graphics context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set a color to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_image\fP (\fBps_context\fP *ctx, const \fBps_image\fP *image)" +.br +.RI "Set a image to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_pattern\fP (\fBps_context\fP *ctx, const \fBps_pattern\fP *pattern)" +.br +.RI "Set a pattern to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_gradient\fP (\fBps_context\fP *ctx, const \fBps_gradient\fP *gradient)" +.br +.RI "Set a gradient to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_stroke_canvas\fP (\fBps_context\fP *ctx, const \fBps_canvas\fP *canvas)" +.br +.RI "Set a canvas to the context, it is used to stroke a graphic object\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_line_dash\fP (\fBps_context\fP *ctx, float start, const float *dashes, unsigned int num_dashes)" +.br +.RI "Set the pattern for dashed lines in the context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_reset_line_dash\fP (\fBps_context\fP *ctx)" +.br +.RI "Clear the dashs from the context, and set to solid\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_line_cap\fP" + +.PP +Styles for rendering the endpoint of a stroked line\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fILINE_CAP_BUTT \fP\fP +A line with a squared-off end\&. The line to extend only to the endpoint\&.(Default) +.TP +\fB\fILINE_CAP_ROUND \fP\fP +A line with a rounded end\&. The line to extend beyond the endpoint\&. +.TP +\fB\fILINE_CAP_SQUARE \fP\fP +A line with a squared-off end\&. The line to extend beyond the endpoint\&. +.PP +Definition at line 1231 of file picasso\&.h\&. +.SS "enum \fB_ps_line_inner_join\fP" + +.PP +Inner junction types for stroked lines\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fILINE_INNER_MITER \fP\fP +A inner join with a sharp corner\&.(Default) +.TP +\fB\fILINE_INNER_BEVEL \fP\fP +A inner join with a squared-off end\&. +.TP +\fB\fILINE_INNER_JAG \fP\fP +A inner join with a jag end\&. +.TP +\fB\fILINE_INNER_ROUND \fP\fP +A inner join with a rounded end\&. +.PP +Definition at line 1299 of file picasso\&.h\&. +.SS "enum \fB_ps_line_join\fP" + +.PP +Junction types for stroked lines\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fILINE_JOIN_MITER \fP\fP +A join with a sharp corner\&.(Default) +.TP +\fB\fILINE_JOIN_MITER_REVERT \fP\fP +A join with a sharp corner revert\&. +.TP +\fB\fILINE_JOIN_MITER_ROUND \fP\fP +A join with a miter rounded end\&. +.TP +\fB\fILINE_JOIN_ROUND \fP\fP +A join with a rounded end\&. +.TP +\fB\fILINE_JOIN_BEVEL \fP\fP +A join with a squared-off end\&. +.PP +Definition at line 1261 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "void ps_reset_line_dash (\fBps_context\fP * ctx)" + +.PP +Clear the dashs from the context, and set to solid\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_stroke_color\fP, \fBps_set_line_dash\fP, \fBps_set_line_inner_join\fP +.RE +.PP + +.SS "void ps_set_line_cap (\fBps_context\fP * ctx, \fBps_line_cap\fP line_cap)" + +.PP +Set the style for the endpoint of lines in a graphics context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIline_cap\fP The cap style of the lines\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_stroke_color\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP +.RE +.PP + +.SS "void ps_set_line_dash (\fBps_context\fP * ctx, float start, const float * dashes, unsigned int num_dashes)" + +.PP +Set the pattern for dashed lines in the context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIstart\fP A value that specifies how far into the dash pattern the line start\&. +.br +\fIdashes\fP An array of values that specify the length of the painted segments and unpainted segments\&. +.br +\fInum_dashes\fP The number of elements in the array\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_stroke_color\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP +.RE +.PP + +.SS "void ps_set_line_inner_join (\fBps_context\fP * ctx, \fBps_line_inner_join\fP line_inner_join)" + +.PP +Set the style for the inner joins of connected lines in a graphics context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIline_inner_join\fP The inner join style of the lines\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_stroke_color\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_join\fP +.RE +.PP + +.SS "void ps_set_line_join (\fBps_context\fP * ctx, \fBps_line_join\fP line_join)" + +.PP +Set the style for the joins of connected lines in a graphics context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIline_join\fP The join style of the lines\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_stroke_color\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP +.RE +.PP + +.SS "float ps_set_line_width (\fBps_context\fP * ctx, float width)" + +.PP +Set the line width for a graphics context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIwidth\fP The line width to use, in pixels, must be greater than 0\&. Default value is 1\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the old width\&. If the function fails, the return value is 0\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_miter_limit\fP, \fBps_set_stroke_color\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP +.RE +.PP + +.SS "float ps_set_miter_limit (\fBps_context\fP * ctx, float limit)" + +.PP +Set the miter limit for the joins of connected lines in a graphics context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIlimit\fP The miter limit to use, must be greater than 0\&. Default value is 4\&. +.RE +.PP +\fBReturns\fP +.RS 4 +If the function succeeds, the return value is the old miter limit\&. If the function fails, the return value is 0\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_stroke_color\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP +.RE +.PP + +.SS "void ps_set_stroke_canvas (\fBps_context\fP * ctx, const \fBps_canvas\fP * canvas)" + +.PP +Set a canvas to the context, it is used to stroke a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcanvas\fP The canvas to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP, \fBps_set_stroke_color\fP \fBps_set_stroke_image\fP, \fBps_set_stroke_pattern\fP, \fBps_set_stroke_gradient\fP +.RE +.PP + +.SS "void ps_set_stroke_color (\fBps_context\fP * ctx, const \fBps_color\fP * color)" + +.PP +Set a color to the context, it is used to stroke a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcolor\fP The color to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP, \fBps_set_stroke_image\fP \fBps_set_stroke_pattern\fP, \fBps_set_stroke_gradient\fP, \fBps_set_stroke_canvas\fP +.RE +.PP + +.SS "void ps_set_stroke_gradient (\fBps_context\fP * ctx, const \fBps_gradient\fP * gradient)" + +.PP +Set a gradient to the context, it is used to stroke a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIgradient\fP The gradient to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP, \fBps_set_stroke_color\fP \fBps_set_stroke_image\fP, \fBps_set_stroke_pattern\fP, \fBps_set_stroke_canvas\fP +.RE +.PP + +.SS "void ps_set_stroke_image (\fBps_context\fP * ctx, const \fBps_image\fP * image)" + +.PP +Set a image to the context, it is used to stroke a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIimage\fP The image to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP, \fBps_set_stroke_color\fP \fBps_set_stroke_pattern\fP, \fBps_set_stroke_gradient\fP, \fBps_set_stroke_canvas\fP +.RE +.PP + +.SS "void ps_set_stroke_pattern (\fBps_context\fP * ctx, const \fBps_pattern\fP * pattern)" + +.PP +Set a pattern to the context, it is used to stroke a graphic object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpattern\fP The pattern to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_line_cap\fP, \fBps_set_line_join\fP, \fBps_set_line_width\fP, \fBps_set_miter_limit\fP, \fBps_set_line_dash\fP, \fBps_reset_line_dash\fP, \fBps_set_line_inner_join\fP, \fBps_set_stroke_color\fP \fBps_set_stroke_image\fP, \fBps_set_stroke_gradient\fP, \fBps_set_stroke_canvas\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/text.3 b/doc/man/man3/text.3 new file mode 100644 index 0000000..c6d2bac --- /dev/null +++ b/doc/man/man3/text.3 @@ -0,0 +1,508 @@ +.TH "text" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +text +.SH SYNOPSIS +.br +.PP +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef enum \fB_ps_text_type\fP \fBps_text_type\fP" +.br +.RI "Text rendering type\&. " +.ti -1c +.RI "typedef enum \fB_ps_draw_text_type\fP \fBps_draw_text_type\fP" +.br +.RI "Draw mode for rending text\&. " +.ti -1c +.RI "typedef enum \fB_ps_text_align\fP \fBps_text_align\fP" +.br +.RI "Text align mode for drawing text\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fB_ps_text_type\fP { \fBTEXT_TYPE_SMOOTH\fP, \fBTEXT_TYPE_MONO\fP, \fBTEXT_TYPE_STROKE\fP }" +.br +.RI "Text rendering type\&. " +.ti -1c +.RI "enum \fB_ps_draw_text_type\fP { \fBDRAW_TEXT_FILL\fP, \fBDRAW_TEXT_STROKE\fP, \fBDRAW_TEXT_BOTH\fP }" +.br +.RI "Draw mode for rending text\&. " +.ti -1c +.RI "enum \fB_ps_text_align\fP { \fBTEXT_ALIGN_CENTER\fP = 0, \fBTEXT_ALIGN_TOP\fP = 1, \fBTEXT_ALIGN_BOTTOM\fP = 2, \fBTEXT_ALIGN_LEFT\fP = 4, \fBTEXT_ALIGN_RIGHT\fP = 8 }" +.br +.RI "Text align mode for drawing text\&. " +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_text_extent\fP (\fBps_context\fP *ctx, const void *text, unsigned int length, \fBps_size\fP *rsize)" +.br +.RI "Get extent for text using current font which selected to graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set the text fill color for the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_stroke_color\fP (\fBps_context\fP *ctx, const \fBps_color\fP *color)" +.br +.RI "Set the text stroke color for the graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_text_transform\fP (\fBps_context\fP *ctx, const \fBps_matrix\fP *matrix)" +.br +.RI "Transform text matrix for the graphic context\&. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix\&. The text matrix is an attribute of graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_matrix\fP (\fBps_context\fP *ctx, const \fBps_matrix\fP *matrix)" +.br +.RI "Set text matrix for the graphic context\&. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix\&. The text matrix is an attribute of graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_render_type\fP (\fBps_context\fP *ctx, \fBps_text_type\fP type)" +.br +.RI "Set rendering type for text\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_antialias\fP (\fBps_context\fP *ctx, \fBps_bool\fP antialias)" +.br +.RI "Set whether the font allowed be anti-aliasing\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_text_kerning\fP (\fBps_context\fP *ctx, \fBps_bool\fP kerning)" +.br +.RI "Set whether the font auto kerning is allowed\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_text_out_length\fP (\fBps_context\fP *ctx, float x, float y, const char *text, unsigned int length)" +.br +.RI "Draw single byte characters (latin-1) at location in user space\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_wide_text_out_length\fP (\fBps_context\fP *ctx, float x, float y, const \fBps_uchar16\fP *text, unsigned int length)" +.br +.RI "Draw unicode characters (ucs-2) at location in user space\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_draw_text\fP (\fBps_context\fP *ctx, const \fBps_rect\fP *area, const void *text, unsigned int length, \fBps_draw_text_type\fP type, \fBps_text_align\fP align)" +.br +.RI "Draw text in a rectangle area, using font object which is selected in graphic context\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_glyph\fP (\fBps_context\fP *ctx, int ch, \fBps_glyph\fP *glyph)" +.br +.RI "Get the glyph from a given character, using font object which is selected in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_show_glyphs\fP (\fBps_context\fP *ctx, float x, float y, \fBps_glyph\fP *glyphs, unsigned int length)" +.br +.RI "Draw an array of glyphs at location in user space\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_path_from_glyph\fP (\fBps_context\fP *ctx, const \fBps_glyph\fP *glyph, \fBps_path\fP *path)" +.br +.RI "Get the path from a given glyph object\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_glyph_get_extent\fP (const \fBps_glyph\fP *glyph, \fBps_size\fP *rsize)" +.br +.RI "Get extent for a glyph object\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fB_ps_draw_text_type\fP" + +.PP +Draw mode for rending text\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIDRAW_TEXT_FILL \fP\fP +Perform a fill operation on the text\&. +.TP +\fB\fIDRAW_TEXT_STROKE \fP\fP +Perform a stroke operation on the text\&. +.TP +\fB\fIDRAW_TEXT_BOTH \fP\fP +Perform fill,then stroke operation on the text\&. +.PP +Definition at line 2302 of file picasso\&.h\&. +.SS "enum \fB_ps_text_align\fP" + +.PP +Text align mode for drawing text\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fITEXT_ALIGN_CENTER \fP\fP +Centers text horizontally in the rectangle\&. +.TP +\fB\fITEXT_ALIGN_TOP \fP\fP +Justifies the text to the top of the rectangle\&. +.TP +\fB\fITEXT_ALIGN_BOTTOM \fP\fP +Justifies the text to the bottom of the rectangle\&. +.TP +\fB\fITEXT_ALIGN_LEFT \fP\fP +Aligns text to left\&. +.TP +\fB\fITEXT_ALIGN_RIGHT \fP\fP +Aligns text to right\&. +.PP +Definition at line 2320 of file picasso\&.h\&. +.SS "enum \fB_ps_text_type\fP" + +.PP +Text rendering type\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fITEXT_TYPE_SMOOTH \fP\fP +Smooth rendering\&. +.TP +\fB\fITEXT_TYPE_MONO \fP\fP +Mono rendering\&. +.TP +\fB\fITEXT_TYPE_STROKE \fP\fP +OutLine rendering\&. +.PP +Definition at line 2150 of file picasso\&.h\&. +.SH "Function Documentation" +.PP +.SS "void ps_draw_text (\fBps_context\fP * ctx, const \fBps_rect\fP * area, const void * text, unsigned int length, \fBps_draw_text_type\fP type, \fBps_text_align\fP align)" + +.PP +Draw text in a rectangle area, using font object which is selected in graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIarea\fP The rectangle area which text to be drawn\&. +.br +\fItext\fP The unicode text string to be draw\&. +.br +\fIlength\fP The length of the text string\&. +.br +\fItype\fP The rending type of text\&. +.br +\fIalign\fP The text align mode\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_text_out_length\fP, \fBps_wide_text_out_length\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_get_glyph (\fBps_context\fP * ctx, int ch, \fBps_glyph\fP * glyph)" + +.PP +Get the glyph from a given character, using font object which is selected in graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIch\fP The character value\&. +.br +\fIglyph\fP Pointer to a structure to receiving the glyph\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_show_glyphs\fP, \fBps_get_path_from_glyph\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_get_path_from_glyph (\fBps_context\fP * ctx, const \fBps_glyph\fP * glyph, \fBps_path\fP * path)" + +.PP +Get the path from a given glyph object\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIglyph\fP The glyph object\&. +.br +\fIpath\fP Pointer to a structure to receiving the path\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_show_glyphs\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_get_text_extent (\fBps_context\fP * ctx, const void * text, unsigned int length, \fBps_size\fP * rsize)" + +.PP +Get extent for text using current font which selected to graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fItext\fP Text which being tested\&. It can be latin-1 or unicode encoding\&. +.br +\fIlength\fP Length of the text\&. +.br +\fIrsize\fP Pointer to a buffer to receiving the size\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_glyph_get_extent\fP +.RE +.PP + +.SS "\fBps_bool\fP ps_glyph_get_extent (const \fBps_glyph\fP * glyph, \fBps_size\fP * rsize)" + +.PP +Get extent for a glyph object\&. +.PP +\fBParameters\fP +.RS 4 +\fIglyph\fP Pointer to an existing glyph object\&. +.br +\fIrsize\fP Pointer to a buffer to receiving the size\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBNote\fP +.RS 4 +To get extended error information, call \fIps_last_status\fP\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_get_text_extent\fP +.RE +.PP + +.SS "void ps_set_text_antialias (\fBps_context\fP * ctx, \fBps_bool\fP antialias)" + +.PP +Set whether the font allowed be anti-aliasing\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIantialias\fP Boolean value whether anti-aliasing is allowed\&. (True default) +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_text_matrix\fP, \fBps_set_text_color\fP, \fBps_set_text_stroke_color\fP, \fBps_set_text_render_type\fP, \fBps_text_transform\fP, \fBps_set_text_kerning\fP +.RE +.PP + +.SS "void ps_set_text_color (\fBps_context\fP * ctx, const \fBps_color\fP * color)" + +.PP +Set the text fill color for the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcolor\fP The text fill color\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_transform\fP, \fBps_set_text_matrix\fP, \fBps_set_text_antialias\fP, \fBps_set_text_stroke_color\fP, \fBps_set_text_render_type\fP, \fBps_set_text_kerning\fP +.RE +.PP + +.SS "void ps_set_text_kerning (\fBps_context\fP * ctx, \fBps_bool\fP kerning)" + +.PP +Set whether the font auto kerning is allowed\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIkerning\fP Boolean value whether auto kerning is allowed\&. (True default) +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_text_matrix\fP, \fBps_set_text_color\fP, \fBps_set_text_stroke_color\fP, \fBps_set_text_render_type\fP, \fBps_text_transform\fP, \fBps_set_text_antialias\fP +.RE +.PP + +.SS "void ps_set_text_matrix (\fBps_context\fP * ctx, const \fBps_matrix\fP * matrix)" + +.PP +Set text matrix for the graphic context\&. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix\&. The text matrix is an attribute of graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_text_transform\fP, \fBps_set_text_antialias\fP, \fBps_set_text_color\fP, \fBps_set_text_stroke_color\fP, \fBps_set_text_render_type\fP, \fBps_set_text_kerning\fP +.RE +.PP + +.SS "void ps_set_text_render_type (\fBps_context\fP * ctx, \fBps_text_type\fP type)" + +.PP +Set rendering type for text\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fItype\fP Rendering type for the text\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_text_matrix\fP, \fBps_set_text_color\fP, \fBps_set_text_stroke_color\fP, \fBps_set_text_antialias\fP, \fBps_text_transform\fP, \fBps_set_text_kerning\fP +.RE +.PP + +.SS "void ps_set_text_stroke_color (\fBps_context\fP * ctx, const \fBps_color\fP * color)" + +.PP +Set the text stroke color for the graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIcolor\fP The text stroke color\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_text_color\fP, \fBps_set_text_matrix\fP, \fBps_set_text_antialias\fP, \fBps_text_transform\fP, \fBps_set_text_render_type\fP, \fBps_set_text_kerning\fP +.RE +.PP + +.SS "void ps_show_glyphs (\fBps_context\fP * ctx, float x, float y, \fBps_glyph\fP * glyphs, unsigned int length)" + +.PP +Draw an array of glyphs at location in user space\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIx\fP The X-coordinate at which to draw the glyphs\&. +.br +\fIy\fP The Y-coordinate at which to draw the glyphs\&. +.br +\fIglyphs\fP The array of glyphs\&. +.br +\fIlength\fP The length of array\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_get_path_from_glyph\fP +.RE +.PP + +.SS "void ps_text_out_length (\fBps_context\fP * ctx, float x, float y, const char * text, unsigned int length)" + +.PP +Draw single byte characters (latin-1) at location in user space\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIx\fP The X-coordinate at which to draw the text\&. +.br +\fIy\fP The Y-coordinate at which to draw the text\&. +.br +\fItext\fP The text string to be draw\&. +.br +\fIlength\fP The length of the text string\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_wide_text_out_length\fP, \fBps_draw_text\fP +.RE +.PP + +.SS "void ps_text_transform (\fBps_context\fP * ctx, const \fBps_matrix\fP * matrix)" + +.PP +Transform text matrix for the graphic context\&. The text matrix is not a part of graphic state -- saving and restoring has no effect on the text matrix\&. The text matrix is an attribute of graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fImatrix\fP Pointer to an existing matrix object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_text_matrix\fP, \fBps_set_text_antialias\fP, \fBps_set_text_color\fP, \fBps_set_text_stroke_color\fP, \fBps_set_text_render_type\fP, \fBps_set_text_kerning\fP +.RE +.PP + +.SS "void ps_wide_text_out_length (\fBps_context\fP * ctx, float x, float y, const \fBps_uchar16\fP * text, unsigned int length)" + +.PP +Draw unicode characters (ucs-2) at location in user space\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIx\fP The X-coordinate at which to draw the text\&. +.br +\fIy\fP The Y-coordinate at which to draw the text\&. +.br +\fItext\fP The unicode text string to be draw\&. +.br +\fIlength\fP The length of the text string\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_text_out_length\fP, \fBps_draw_text\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/transform.3 b/doc/man/man3/transform.3 new file mode 100644 index 0000000..75ed107 --- /dev/null +++ b/doc/man/man3/transform.3 @@ -0,0 +1,249 @@ +.TH "transform" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +transform +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "PEXPORT void PICAPI \fBps_translate\fP (\fBps_context\fP *ctx, float tx, float ty)" +.br +.RI "Changes the origin of the user coordinate system in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_scale\fP (\fBps_context\fP *ctx, float sx, float sy)" +.br +.RI "Changes the scale of the user coordinate system in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_shear\fP (\fBps_context\fP *ctx, float shx, float shy)" +.br +.RI "Changes the shear of the user coordinate system in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_rotate\fP (\fBps_context\fP *ctx, float angle)" +.br +.RI "Rotates the user coordinate system in graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_identity\fP (\fBps_context\fP *ctx)" +.br +.RI "Reset the current transformation matrix to identity matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_transform\fP (\fBps_context\fP *ctx, const \fBps_matrix\fP *matrix)" +.br +.RI "Transforms the user coordinate system in graphic context using a specified matrix\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_set_matrix\fP (\fBps_context\fP *ctx, const \fBps_matrix\fP *matrix)" +.br +.RI "Modifies the current transformation matrix to the given matrix\&. " +.ti -1c +.RI "PEXPORT \fBps_bool\fP PICAPI \fBps_get_matrix\fP (\fBps_context\fP *ctx, \fBps_matrix\fP *matrix)" +.br +.RI "Get the current transformation matrix from graphic context\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_world_to_viewport\fP (\fBps_context\fP *ctx, \fBps_point\fP *point)" +.br +.RI "Transform a coordinate from device space to user space\&. " +.ti -1c +.RI "PEXPORT void PICAPI \fBps_viewport_to_world\fP (\fBps_context\fP *ctx, \fBps_point\fP *point)" +.br +.RI "Transform a coordinate from user space to device space\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Function Documentation" +.PP +.SS "\fBps_bool\fP ps_get_matrix (\fBps_context\fP * ctx, \fBps_matrix\fP * matrix)" + +.PP +Get the current transformation matrix from graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fImatrix\fP Pointer to a matrix object to receiving the current transformation\&. +.RE +.PP +\fBReturns\fP +.RS 4 +True if is success, otherwise False\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_set_matrix\fP +.RE +.PP + +.SS "void ps_identity (\fBps_context\fP * ctx)" + +.PP +Reset the current transformation matrix to identity matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_translate\fP, \fBps_scale\fP, \fBps_shear\fP, \fBps_rotate\fP, \fBps_transform\fP +.RE +.PP + +.SS "void ps_rotate (\fBps_context\fP * ctx, float angle)" + +.PP +Rotates the user coordinate system in graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIangle\fP The angle, in radians, which to rotate the specified context\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_translate\fP, \fBps_scale\fP, \fBps_shear\fP, \fBps_identity\fP, \fBps_transform\fP +.RE +.PP + +.SS "void ps_scale (\fBps_context\fP * ctx, float sx, float sy)" + +.PP +Changes the scale of the user coordinate system in graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIsx\fP The scale factor for the X dimension\&. +.br +\fIsy\fP The scale factor for the Y dimension\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_translate\fP, \fBps_shear\fP, \fBps_rotate\fP, \fBps_identity\fP, \fBps_transform\fP +.RE +.PP + +.SS "void ps_set_matrix (\fBps_context\fP * ctx, const \fBps_matrix\fP * matrix)" + +.PP +Modifies the current transformation matrix to the given matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fImatrix\fP The transformation matrix to be set\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_get_matrix\fP +.RE +.PP + +.SS "void ps_shear (\fBps_context\fP * ctx, float shx, float shy)" + +.PP +Changes the shear of the user coordinate system in graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIshx\fP The shear factor for the horizontal\&. +.br +\fIshy\fP The shear factor for the vertical\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_translate\fP, \fBps_scale\fP, \fBps_rotate\fP, \fBps_identity\fP, \fBps_transform\fP +.RE +.PP + +.SS "void ps_transform (\fBps_context\fP * ctx, const \fBps_matrix\fP * matrix)" + +.PP +Transforms the user coordinate system in graphic context using a specified matrix\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fImatrix\fP The matrix to apply to the specified context's current transformation matrix\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_translate\fP, \fBps_scale\fP, \fBps_shear\fP, \fBps_rotate\fP, \fBps_identity\fP +.RE +.PP + +.SS "void ps_translate (\fBps_context\fP * ctx, float tx, float ty)" + +.PP +Changes the origin of the user coordinate system in graphic context\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fItx\fP The amount, in pixels, which to translate in x direction\&. +.br +\fIty\fP The amount, in pixels, which to translate in y direction\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_scale\fP, \fBps_shear\fP, \fBps_rotate\fP, \fBps_identity\fP, \fBps_transform\fP +.RE +.PP + +.SS "void ps_viewport_to_world (\fBps_context\fP * ctx, \fBps_point\fP * point)" + +.PP +Transform a coordinate from user space to device space\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpoint\fP The point which to be transformed\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_world_to_viewport\fP +.RE +.PP + +.SS "void ps_world_to_viewport (\fBps_context\fP * ctx, \fBps_point\fP * point)" + +.PP +Transform a coordinate from device space to user space\&. +.PP +\fBParameters\fP +.RS 4 +\fIctx\fP Pointer to an existing context object\&. +.br +\fIpoint\fP The point which to be transformed\&. +.RE +.PP +\fBSee also\fP +.RS 4 +\fBps_viewport_to_world\fP +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&. diff --git a/doc/man/man3/types.3 b/doc/man/man3/types.3 new file mode 100644 index 0000000..6a2888d --- /dev/null +++ b/doc/man/man3/types.3 @@ -0,0 +1,273 @@ +.TH "types" 3 "Tue Dec 24 2024" "Version 2.8" "Picasso API" \" -*- nroff -*- +.ad l +.nh +.SH NAME +types +.SH SYNOPSIS +.br +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fB_psx_image_frame\fP" +.br +.RI "A frame image data\&. " +.ti -1c +.RI "struct \fB_psx_image\fP" +.br +.RI "A image object\&. " +.ti -1c +.RI "struct \fB_psx_image_header\fP" +.br +.RI "Image reader header define\&. " +.ti -1c +.RI "struct \fB_psx_image_operator\fP" +.br +.RI "The image operator define\&. " +.in -1c +.SS "Macros" + +.in +1c +.ti -1c +.RI "#define \fBIMG_OBJ\fP(image) \fBIMG_OBJ_AT_INDEX\fP(image, 0)" +.br +.RI "Get first ps_image obj\&. " +.ti -1c +.RI "#define \fBIMG_DATA\fP(image) \fBIMG_DATA_AT_INDEX\fP(image, 0)" +.br +.RI "Get first image frame data\&. " +.ti -1c +.RI "#define \fBIMG_DATA_SIZE\fP(image) \fBIMG_DATA_SIZE_AT_INDEX\fP(image, 0)" +.br +.RI "Get first image frame data size\&. " +.ti -1c +.RI "#define \fBIMG_OBJ_AT_INDEX\fP(image, idx) (image\->frames[idx]\&.img)" +.br +.RI "Get ps_image obj at index\&. " +.ti -1c +.RI "#define \fBIMG_DATA_AT_INDEX\fP(image, idx) (image\->frames[idx]\&.data)" +.br +.RI "Get image frame data at index\&. " +.ti -1c +.RI "#define \fBIMG_DATA_SIZE_AT_INDEX\fP(img, idx) (img\->frames[idx]\&.size)" +.br +.RI "Get image frame data size at index\&. " +.ti -1c +.RI "#define \fBIMG_DURATION_AT_INDEX\fP(img, idx) (img\->frames[idx]\&.duration)" +.br +.RI "Get image frame duration at index\&. " +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef struct \fB_psx_image_frame\fP \fBpsx_image_frame\fP" +.br +.RI "A frame image data\&. " +.ti -1c +.RI "typedef struct \fB_psx_image\fP \fBpsx_image\fP" +.br +.RI "A image object\&. " +.ti -1c +.RI "typedef struct \fB_psx_image_header\fP \fBpsx_image_header\fP" +.br +.RI "Image reader header define\&. " +.ti -1c +.RI "typedef struct \fB_psx_image_operator\fP \fBpsx_image_operator\fP" +.br +.RI "The image operator define\&. " +.ti -1c +.RI "typedef enum \fB_psx_priority_level\fP \fBpsx_priority_level\fP" +.br +.RI "Priority level for image_operator\&. " +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum { \fBS_OK\fP = 0, \fBS_BAD_PARAMS\fP = 1, \fBS_NOT_SUPPORT\fP = 2, \fBS_OUT_OF_MEMORY\fP = 3, \fBS_INIT_FAILURE\fP = 4, \fBS_FAILURE\fP = 5 }" +.br +.RI "Status code return by call APIs\&. " +.ti -1c +.RI "enum \fB_psx_priority_level\fP { \fBPRIORITY_EXTENTED\fP = -1, \fBPRIORITY_DEFAULT\fP = 0, \fBPRIORITY_MASTER\fP = 1 }" +.br +.RI "Priority level for image_operator\&. " +.in -1c +.SH "Detailed Description" +.PP + +.SH "Macro Definition Documentation" +.PP +.SS "#define IMG_DATA(image) \fBIMG_DATA_AT_INDEX\fP(image, 0)" + +.PP +Get first image frame data\&. +.PP +\fBSee also\fP +.RS 4 +\fBIMG_DATA_AT_INDEX\fP +.RE +.PP + +.PP +Definition at line 84 of file psx_image\&.h\&. +.SS "#define IMG_DATA_AT_INDEX(image, idx) (image\->frames[idx]\&.data)" + +.PP +Get image frame data at index\&. +.PP +\fBSee also\fP +.RS 4 +\fBIMG_DATA\fP +.RE +.PP + +.PP +Definition at line 105 of file psx_image\&.h\&. +.SS "#define IMG_DATA_SIZE(image) \fBIMG_DATA_SIZE_AT_INDEX\fP(image, 0)" + +.PP +Get first image frame data size\&. +.PP +\fBSee also\fP +.RS 4 +\fBIMG_DATA_SIZE_AT_INDEX\fP +.RE +.PP + +.PP +Definition at line 91 of file psx_image\&.h\&. +.SS "#define IMG_DATA_SIZE_AT_INDEX(img, idx) (img\->frames[idx]\&.size)" + +.PP +Get image frame data size at index\&. +.PP +\fBSee also\fP +.RS 4 +\fBIMG_DATA_SIZE\fP +.RE +.PP + +.PP +Definition at line 112 of file psx_image\&.h\&. +.SS "#define IMG_DURATION_AT_INDEX(img, idx) (img\->frames[idx]\&.duration)" + +.PP +Get image frame duration at index\&. +.PP +\fBSee also\fP +.RS 4 +\fBIMG_DATA_SIZE\fP, \fBIMG_DATA\fP +.RE +.PP + +.PP +Definition at line 119 of file psx_image\&.h\&. +.SS "#define IMG_OBJ(image) \fBIMG_OBJ_AT_INDEX\fP(image, 0)" + +.PP +Get first ps_image obj\&. +.PP +\fBSee also\fP +.RS 4 +\fBIMG_OBJ_AT_INDEX\fP +.RE +.PP + +.PP +Definition at line 77 of file psx_image\&.h\&. +.SS "#define IMG_OBJ_AT_INDEX(image, idx) (image\->frames[idx]\&.img)" + +.PP +Get ps_image obj at index\&. +.PP +\fBSee also\fP +.RS 4 +\fBIMG_OBJ\fP +.RE +.PP + +.PP +Definition at line 98 of file psx_image\&.h\&. +.SH "Typedef Documentation" +.PP +.SS "typedef struct \fB_psx_image_operator\fP \fBpsx_image_operator\fP" + +.PP +The image operator define\&. +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_register_operator\fP \fBpsx_image_unregister_operator\fP +.RE +.PP + +.SS "typedef enum \fB_psx_priority_level\fP \fBpsx_priority_level\fP" + +.PP +Priority level for image_operator\&. +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_register_operator\fP +.RE +.PP + +.SH "Enumeration Type Documentation" +.PP +.SS "anonymous enum" + +.PP +Status code return by call APIs\&. +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIS_OK \fP\fP +Successful no errors\&. +.TP +\fB\fIS_BAD_PARAMS \fP\fP +Invalid params input\&. +.TP +\fB\fIS_NOT_SUPPORT \fP\fP +Not support format or decoder module not found\&. +.TP +\fB\fIS_OUT_OF_MEMORY \fP\fP +Not enough memory\&. +.TP +\fB\fIS_INIT_FAILURE \fP\fP +Not initialize system\&. +.TP +\fB\fIS_FAILURE \fP\fP +Operation failed by internal errors\&. +.PP +Definition at line 124 of file psx_image\&.h\&. +.SS "enum \fB_psx_priority_level\fP" + +.PP +Priority level for image_operator\&. +.PP +\fBSee also\fP +.RS 4 +\fBpsx_image_register_operator\fP +.RE +.PP + +.PP +\fBEnumerator\fP +.in +1c +.TP +\fB\fIPRIORITY_EXTENTED \fP\fP +Low level operator\&. +.TP +\fB\fIPRIORITY_DEFAULT \fP\fP +Default level operator\&. +.TP +\fB\fIPRIORITY_MASTER \fP\fP +High level operator\&. +.PP +Definition at line 89 of file psx_image_plugin\&.h\&. +.SH "Author" +.PP +Generated automatically by Doxygen for Picasso API from the source code\&.