From a5546a2a940c191e24138704254934006972401b Mon Sep 17 00:00:00 2001 From: nirenjan Date: Fri, 27 Feb 2026 06:41:32 +0000 Subject: [PATCH] deploy: 004eca2418e77340434aa85d1a462832586d2af9 --- annotated.html | 42 +- bc_sd.png | Bin 0 -> 635 bytes bdwn.png | Bin 147 -> 0 bytes classes.html | 44 +- deprecated.html | 44 +- dir_2990d7c532eb7441b74916b8f5365141.html | 42 +- dir_39030b11ec2f66a58a20203c6f23f032.html | 46 +- dir_49e56c817e5e54854c35e136979f97ca.html | 42 +- dir_72bd0fa12375565f4a365205e194c9e5.html | 46 +- dir_85e58cee4bf06c699396f90891b08ff4.html | 46 +- dir_97767a50cf9a4cc236a4b6e9aa21d056.html | 46 +- dir_9dc252854a5b01c7c4bd5889aefb1f34.html | 42 +- doc.png | Bin 746 -> 0 bytes doc.svg | 12 + docd.svg | 12 + doxygen.css | 1084 +++++++++++++-------- doxygen.svg | 4 +- dynsections.js | 71 ++ files.html | 50 +- folderclosed.png | Bin 616 -> 0 bytes folderclosed.svg | 11 + folderclosedd.svg | 11 + folderopen.png | Bin 597 -> 0 bytes folderopen.svg | 17 + folderopend.svg | 12 + functions.html | 55 +- functions_vars.html | 57 +- globals.html | 679 ++++--------- globals_enum.html | 81 +- globals_eval.html | 439 +++------ globals_func.html | 233 ++--- globals_type.html | 53 +- group__libx52clock.html | 134 +-- group__libx52dev.html | 68 +- group__libx52init.html | 80 +- group__libx52io.html | 352 +++---- group__libx52mfdled.html | 130 +-- group__libx52misc.html | 118 +-- group__libx52str.html | 116 +-- group__libx52util.html | 52 +- group__x52dcomm.html | 90 +- index.html | 44 +- jquery.js | 11 +- libx52_8h.html | 180 ++-- libx52_8h_source.html | 537 +++++----- libx52_caveats.html | 44 +- libx52_integration.html | 80 +- libx52io_8h.html | 138 +-- libx52io_8h_source.html | 589 +++++------ libx52util_8h.html | 50 +- libx52util_8h_source.html | 99 +- menu.js | 97 +- menudata.js | 3 +- minus.svg | 8 + minusd.svg | 8 + modules.html | 89 -- nav_fd.png | Bin 0 -> 169 bytes nav_hd.png | Bin 0 -> 114 bytes pages.html | 52 +- plus.svg | 9 + plusd.svg | 9 + proto_config.html | 44 +- proto_logging.html | 44 +- search/all_0.html | 37 - search/all_0.js | 7 +- search/all_1.html | 37 - search/all_1.js | 4 +- search/all_10.js | 7 + search/all_11.js | 8 + search/all_12.js | 15 + search/all_2.html | 37 - search/all_2.js | 18 +- search/all_3.html | 37 - search/all_3.js | 13 +- search/all_4.html | 37 - search/all_4.js | 4 +- search/all_5.html | 37 - search/all_5.js | 9 +- search/all_6.html | 37 - search/all_6.js | 161 +-- search/all_7.html | 37 - search/all_7.js | 5 +- search/all_8.html | 37 - search/all_8.js | 14 +- search/all_9.html | 37 - search/all_9.js | 2 +- search/all_a.html | 37 - search/all_a.js | 185 +++- search/all_b.js | 9 + search/all_c.js | 7 + search/all_d.js | 8 + search/all_e.js | 9 + search/all_f.js | 22 + search/classes_0.html | 37 - search/classes_0.js | 2 +- search/close.svg | 19 +- search/enums_0.html | 37 - search/enums_0.js | 20 +- search/enumvalues_0.html | 37 - search/enumvalues_0.js | 198 ++-- search/files_0.html | 37 - search/files_0.js | 6 +- search/files_1.html | 37 - search/files_1.js | 2 +- search/functions_0.html | 37 - search/functions_0.js | 84 +- search/functions_1.html | 37 - search/functions_1.js | 10 +- search/groups_0.html | 37 - search/groups_0.js | 3 +- search/groups_1.html | 37 - search/groups_1.js | 5 +- search/groups_2.html | 37 - search/groups_2.js | 4 +- search/groups_3.html | 37 - search/groups_3.js | 2 +- search/groups_4.html | 37 - search/groups_4.js | 3 +- search/groups_5.html | 37 - search/groups_5.js | 3 +- search/groups_6.html | 37 - search/groups_6.js | 4 +- search/groups_7.js | 5 + search/groups_8.js | 4 + search/groups_9.js | 4 + search/mag.svg | 24 + search/mag_d.svg | 24 + search/mag_sel.svg | 53 +- search/mag_seld.svg | 31 + search/nomatches.html | 13 - search/pages_0.html | 37 - search/pages_0.js | 5 +- search/pages_1.html | 37 - search/pages_1.js | 7 +- search/pages_2.html | 37 - search/pages_2.js | 6 +- search/pages_3.html | 37 - search/pages_3.js | 3 +- search/pages_4.html | 37 - search/pages_4.js | 5 +- search/pages_5.html | 37 - search/pages_5.js | 8 +- search/pages_6.js | 4 + search/pages_7.js | 4 + search/pages_8.js | 4 + search/pages_9.js | 6 + search/pages_a.js | 5 + search/pages_b.js | 5 + search/pages_c.js | 8 + search/search.css | 122 ++- search/search.js | 190 ++-- search/search_l.png | Bin 567 -> 0 bytes search/search_m.png | Bin 158 -> 0 bytes search/search_r.png | Bin 553 -> 0 bytes search/searchdata.js | 6 +- search/typedefs_0.html | 37 - search/typedefs_0.js | 4 +- search/typedefs_1.html | 37 - search/typedefs_1.js | 2 +- search/variables_0.html | 37 - search/variables_0.js | 2 +- search/variables_1.html | 37 - search/variables_1.js | 2 +- search/variables_2.html | 37 - search/variables_2.js | 2 +- search/variables_3.html | 37 - search/variables_3.js | 2 +- splitbard.png | Bin 0 -> 282 bytes structlibx52io__report.html | 68 +- tab_ad.png | Bin 0 -> 135 bytes tab_bd.png | Bin 0 -> 173 bytes tab_hd.png | Bin 0 -> 180 bytes tab_sd.png | Bin 0 -> 188 bytes tabs.css | 2 +- x52bugreport.html | 44 +- x52cli.html | 52 +- x52ctl.html | 44 +- x52d.html | 46 +- x52d_protocol.html | 46 +- x52dcomm_8h.html | 72 +- x52dcomm_8h_source.html | 119 ++- 181 files changed, 4449 insertions(+), 5441 deletions(-) create mode 100644 bc_sd.png delete mode 100644 bdwn.png delete mode 100644 doc.png create mode 100644 doc.svg create mode 100644 docd.svg delete mode 100644 folderclosed.png create mode 100644 folderclosed.svg create mode 100644 folderclosedd.svg delete mode 100644 folderopen.png create mode 100644 folderopen.svg create mode 100644 folderopend.svg create mode 100644 minus.svg create mode 100644 minusd.svg delete mode 100644 modules.html create mode 100644 nav_fd.png create mode 100644 nav_hd.png create mode 100644 plus.svg create mode 100644 plusd.svg delete mode 100644 search/all_0.html delete mode 100644 search/all_1.html create mode 100644 search/all_10.js create mode 100644 search/all_11.js create mode 100644 search/all_12.js delete mode 100644 search/all_2.html delete mode 100644 search/all_3.html delete mode 100644 search/all_4.html delete mode 100644 search/all_5.html delete mode 100644 search/all_6.html delete mode 100644 search/all_7.html delete mode 100644 search/all_8.html delete mode 100644 search/all_9.html delete mode 100644 search/all_a.html create mode 100644 search/all_b.js create mode 100644 search/all_c.js create mode 100644 search/all_d.js create mode 100644 search/all_e.js create mode 100644 search/all_f.js delete mode 100644 search/classes_0.html delete mode 100644 search/enums_0.html delete mode 100644 search/enumvalues_0.html delete mode 100644 search/files_0.html delete mode 100644 search/files_1.html delete mode 100644 search/functions_0.html delete mode 100644 search/functions_1.html delete mode 100644 search/groups_0.html delete mode 100644 search/groups_1.html delete mode 100644 search/groups_2.html delete mode 100644 search/groups_3.html delete mode 100644 search/groups_4.html delete mode 100644 search/groups_5.html delete mode 100644 search/groups_6.html create mode 100644 search/groups_7.js create mode 100644 search/groups_8.js create mode 100644 search/groups_9.js create mode 100644 search/mag.svg create mode 100644 search/mag_d.svg create mode 100644 search/mag_seld.svg delete mode 100644 search/nomatches.html delete mode 100644 search/pages_0.html delete mode 100644 search/pages_1.html delete mode 100644 search/pages_2.html delete mode 100644 search/pages_3.html delete mode 100644 search/pages_4.html delete mode 100644 search/pages_5.html create mode 100644 search/pages_6.js create mode 100644 search/pages_7.js create mode 100644 search/pages_8.js create mode 100644 search/pages_9.js create mode 100644 search/pages_a.js create mode 100644 search/pages_b.js create mode 100644 search/pages_c.js delete mode 100644 search/search_l.png delete mode 100644 search/search_m.png delete mode 100644 search/search_r.png delete mode 100644 search/typedefs_0.html delete mode 100644 search/typedefs_1.html delete mode 100644 search/variables_0.html delete mode 100644 search/variables_1.html delete mode 100644 search/variables_2.html delete mode 100644 search/variables_3.html create mode 100644 splitbard.png create mode 100644 tab_ad.png create mode 100644 tab_bd.png create mode 100644 tab_hd.png create mode 100644 tab_sd.png diff --git a/annotated.html b/annotated.html index e106c83..d802e3d 100644 --- a/annotated.html +++ b/annotated.html @@ -1,9 +1,9 @@ - + - - + + libx52: Data Structures @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ + @@ -57,14 +57,20 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Data Structures
+
Data Structures
Here are the data structures with brief descriptions:
@@ -75,7 +81,7 @@ $(function() {
diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/bdwn.png b/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - + - - + + libx52: Data Structure Index @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,26 +57,32 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Data Structure Index
+
Data Structure Index
diff --git a/deprecated.html b/deprecated.html index 6cc1654..64fbba1 100644 --- a/deprecated.html +++ b/deprecated.html @@ -1,9 +1,9 @@ - + - - + + libx52: Deprecated List @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
Deprecated List
+
+
Deprecated List
@@ -77,7 +83,7 @@ $(function() {
diff --git a/dir_2990d7c532eb7441b74916b8f5365141.html b/dir_2990d7c532eb7441b74916b8f5365141.html index d377242..a403555 100644 --- a/dir_2990d7c532eb7441b74916b8f5365141.html +++ b/dir_2990d7c532eb7441b74916b8f5365141.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/cli Directory Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
cli Directory Reference
+
cli Directory Reference
diff --git a/dir_39030b11ec2f66a58a20203c6f23f032.html b/dir_39030b11ec2f66a58a20203c6f23f032.html index 0127e1a..39bbe95 100644 --- a/dir_39030b11ec2f66a58a20203c6f23f032.html +++ b/dir_39030b11ec2f66a58a20203c6f23f032.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/daemon Directory Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
daemon Directory Reference
+
daemon Directory Reference
- - +

+

Files

file  x52dcomm.h [code]
 x52dcomm.h
 Functions, structures and enumerations for the Saitek X52 MFD & LED daemon communication library.
 
diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html index 6bc1f14..1a46267 100644 --- a/dir_49e56c817e5e54854c35e136979f97ca.html +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/docs Directory Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
docs Directory Reference
+
docs Directory Reference
diff --git a/dir_72bd0fa12375565f4a365205e194c9e5.html b/dir_72bd0fa12375565f4a365205e194c9e5.html index 89c8936..e889b31 100644 --- a/dir_72bd0fa12375565f4a365205e194c9e5.html +++ b/dir_72bd0fa12375565f4a365205e194c9e5.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/libx52io Directory Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
libx52io Directory Reference
+
libx52io Directory Reference
- - +

+

Files

file  libx52io.h [code]
 libx52io.h
 Functions, structures and enumerations for the Saitek X52 IO driver library.
 
diff --git a/dir_85e58cee4bf06c699396f90891b08ff4.html b/dir_85e58cee4bf06c699396f90891b08ff4.html index a97a598..bd47c6c 100644 --- a/dir_85e58cee4bf06c699396f90891b08ff4.html +++ b/dir_85e58cee4bf06c699396f90891b08ff4.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/libx52 Directory Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
libx52 Directory Reference
+
libx52 Directory Reference
- - +

+

Files

file  libx52.h [code]
 libx52.h
 Functions, structures and enumerations for the Saitek X52 MFD & LED driver library.
 
diff --git a/dir_97767a50cf9a4cc236a4b6e9aa21d056.html b/dir_97767a50cf9a4cc236a4b6e9aa21d056.html index 08c0967..89906d1 100644 --- a/dir_97767a50cf9a4cc236a4b6e9aa21d056.html +++ b/dir_97767a50cf9a4cc236a4b6e9aa21d056.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/libx52util Directory Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
libx52util Directory Reference
+
libx52util Directory Reference
- - +

+

Files

file  libx52util.h [code]
 libx52util.h
 Utility functions for the Saitek X52 MFD & LED driver library.
 
diff --git a/dir_9dc252854a5b01c7c4bd5889aefb1f34.html b/dir_9dc252854a5b01c7c4bd5889aefb1f34.html index e6e7b19..8216728 100644 --- a/dir_9dc252854a5b01c7c4bd5889aefb1f34.html +++ b/dir_9dc252854a5b01c7c4bd5889aefb1f34.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/bugreport Directory Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
bugreport Directory Reference
+
bugreport Directory Reference
diff --git a/doc.png b/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc.svg b/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doxygen.css b/doxygen.css index ffbff02..009a9b5 100644 --- a/doxygen.css +++ b/doxygen.css @@ -1,29 +1,378 @@ -/* The standard CSS for doxygen 1.9.1 */ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; } -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; } /* @group Heading Levels */ -h1.groupheader { - font-size: 150%; -} - .title { - font: 400 14px/28px Roboto,sans-serif; + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; font-size: 150%; font-weight: bold; margin: 10px 2px; } +h1.groupheader { + font-size: 150%; +} + h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); font-size: 150%; font-weight: normal; margin-top: 1.75em; @@ -46,22 +395,13 @@ h1, h2, h3, h4, h5, h6 { } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; + text-shadow: 0 0 15px var(--glow-color); } 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; } @@ -113,7 +453,6 @@ h3.version { } div.navtab { - border-right: 1px solid #A3B4D7; padding-right: 15px; text-align: right; line-height: 110%; @@ -127,16 +466,17 @@ td.navtab { padding-right: 6px; padding-left: 6px; } + td.navtabHL { - background-image: url('tab_a.png'); + background-image: var(--nav-gradient-active-image); background-repeat:repeat-x; padding-right: 6px; padding-left: 6px; } td.navtabHL a, td.navtabHL a:visited { - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); } a.navtab { @@ -148,7 +488,13 @@ div.qindex{ width: 100%; line-height: 140%; font-size: 130%; - color: #A0A0A0; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; } dt.alphachar{ @@ -157,7 +503,7 @@ dt.alphachar{ } .alphachar a{ - color: black; + color: var(--index-header-color); } .alphachar a:hover, .alphachar a:visited{ @@ -176,8 +522,12 @@ dt.alphachar{ line-height: 1.15em; } +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + .classindex dl.odd { - background-color: #F8F9FC; + background-color: var(--index-odd-item-bg-color); } @media(min-width: 1120px) { @@ -196,23 +546,19 @@ dt.alphachar{ /* @group Link Styling */ a { - color: #3D578C; + color: var(--page-link-color); font-weight: normal; text-decoration: none; } .contents a:visited { - color: #4665A2; + color: var(--page-visited-link-color); } a:hover { text-decoration: underline; } -.contents a.qindexHL:visited { - color: #FFFFFF; -} - a.el { font-weight: bold; } @@ -221,13 +567,40 @@ a.elRef { } a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; + color: var(--code-link-color); } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; + color: var(--code-external-link-color); } +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + /* @end */ dl.el { @@ -235,7 +608,17 @@ dl.el { } ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; } #side-nav ul { @@ -254,30 +637,32 @@ ul { } pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); 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-family: var(--font-family-monospace); 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; + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); } div.line { - font-family: monospace, fixed; + font-family: var(--font-family-monospace); font-size: 13px; min-height: 13px; - line-height: 1.0; + line-height: 1.2; text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ @@ -306,24 +691,40 @@ div.line:after { } div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); } +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} span.lineno { padding-right: 4px; + margin-right: 9px; text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); white-space: pre; } -span.lineno a { - background-color: #D8D8D8; +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); } span.lineno a:hover { - background-color: #C8C8C8; + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); } .lineno { @@ -335,24 +736,6 @@ span.lineno a:hover { 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; @@ -374,8 +757,7 @@ div.groupText { } body { - background-color: white; - color: black; + color: var(--page-foreground-color); margin: 0; } @@ -385,31 +767,17 @@ div.contents { 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.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + img.formulaDsp { } @@ -437,89 +805,74 @@ address.footer { img.footer { border: 0px; vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; } /* @group Code Colorization */ span.keyword { - color: #008000 + color: var(--code-keyword-color); } span.keywordtype { - color: #604020 + color: var(--code-type-keyword-color); } span.keywordflow { - color: #e08000 + color: var(--code-flow-keyword-color); } span.comment { - color: #800000 + color: var(--code-comment-color); } span.preprocessor { - color: #806020 + color: var(--code-preprocessor-color); } span.stringliteral { - color: #002080 + color: var(--code-string-literal-color); } span.charliteral { - color: #008080 + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); } span.vhdldigit { - color: #ff00ff + color: var(--code-vhdl-digit-color); } span.vhdlchar { - color: #000000 + color: var(--code-vhdl-char-color); } span.vhdlkeyword { - color: #700070 + color: var(--code-vhdl-keyword-color); } span.vhdllogic { - color: #ff0000 + color: var(--code-vhdl-logic-color); } blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); 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%; } @@ -527,18 +880,19 @@ td.tiny { .dirtab { padding: 4px; border-collapse: collapse; - border: 1px solid #A3B4D7; + border: 1px solid var(--table-cell-border-color); } th.dirtab { - background: #EBEFF6; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-weight: bold; } hr { height: 0px; border: none; - border-top: 1px solid #4A6AAA; + border-top: 1px solid var(--separator-color); } hr.footer { @@ -566,14 +920,14 @@ table.memberdecls { } .memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); } .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; + background-color: var(--memdecl-background-color); border: none; margin: 4px; padding: 1px 0 0 8px; @@ -581,11 +935,11 @@ table.memberdecls { .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; - color: #555; + color: var(--memdecl-foreground-color); } .memSeparator { - border-bottom: 1px solid #DEE4F0; + border-bottom: 1px solid var(--memdecl-separator-color); line-height: 1px; margin: 0px; padding: 0px; @@ -600,7 +954,7 @@ table.memberdecls { } .memTemplParams { - color: #4665A2; + color: var(--memdecl-template-color); white-space: nowrap; font-size: 80%; } @@ -613,15 +967,15 @@ table.memberdecls { .memtitle { padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); border-top-right-radius: 4px; border-top-left-radius: 4px; margin-bottom: -1px; - background-image: url('nav_f.png'); + background-image: var(--memdef-title-gradient-image); background-repeat: repeat-x; - background-color: #E2E8F2; + background-color: var(--memdef-title-background-color); line-height: 1.25; font-weight: 300; float:left; @@ -636,20 +990,11 @@ table.memberdecls { .memtemplate { font-size: 80%; - color: #4665A2; + color: var(--memdef-template-color); 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%; } @@ -668,7 +1013,7 @@ table.memberdecls { } .memitem.glow { - box-shadow: 0 0 15px cyan; + box-shadow: 0 0 15px var(--glow-color); } .memname { @@ -681,41 +1026,32 @@ table.memberdecls { } .memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); padding: 6px 0px 6px 0px; - color: #253555; + color: var(--memdef-proto-text-color); font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); 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-family: var(--font-family-monospace); font-size: 65%; } .memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); 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; + background-color: var(--memdef-doc-background-color); /* opera specific markup */ border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; @@ -748,7 +1084,7 @@ dl.reflist dd { } .paramname { - color: #602020; + color: var(--memdef-param-name-color); white-space: nowrap; } .paramname em { @@ -761,20 +1097,20 @@ dl.reflist dd { .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; + font-family: var(--font-family-monospace); vertical-align: top; } @@ -798,13 +1134,13 @@ span.mlabels { } 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; + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); text-shadow: none; - color: white; + color: var(--label-foreground-color); margin-right: 4px; padding: 2px 3px; border-radius: 3px; @@ -821,8 +1157,8 @@ span.mlabel { div.directory { margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); width: 100%; } @@ -858,9 +1194,14 @@ div.directory { border-left: 1px solid rgba(0,0,0,0.05); } +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + .directory tr.even { padding-left: 6px; - background-color: #F7F8FB; + background-color: var(--index-even-item-bg-color); } .directory img { @@ -878,11 +1219,11 @@ div.directory { cursor: pointer; padding-left: 2px; padding-right: 2px; - color: #3D578C; + color: var(--page-link-color); } .arrow { - color: #9CAFD4; + color: var(--nav-arrow-color); -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; @@ -896,14 +1237,15 @@ div.directory { } .icon { - font-family: Arial, Helvetica; + font-family: var(--font-family-icon); + line-height: normal; font-weight: bold; font-size: 12px; height: 14px; width: 16px; display: inline-block; - background-color: #728DC1; - color: white; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); text-align: center; border-radius: 4px; margin-left: 2px; @@ -920,8 +1262,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; + background-image:var(--icon-folder-open-image); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -931,8 +1272,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; + background-image:var(--icon-folder-closed-image); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -942,17 +1282,13 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('doc.png'); + background-image:var(--icon-doc-image); 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 { @@ -967,7 +1303,7 @@ div.dynheader { address { font-style: normal; - color: #2A3D61; + color: var(--footer-foreground-color); } table.doxtable caption { @@ -981,28 +1317,23 @@ table.doxtable { } table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; + border: 1px solid var(--table-cell-border-color); padding: 3px 7px 2px; } table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-size: 110%; padding-bottom: 4px; padding-top: 5px; } table.fieldtable { - /*width: 100%;*/ margin-bottom: 10px; - border: 1px solid #A8B8D9; + border: 1px solid var(--memdef-border-color); 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); } @@ -1012,8 +1343,8 @@ table.fieldtable { .fieldtable td.fieldtype, .fieldtable td.fieldname { white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); vertical-align: top; } @@ -1022,14 +1353,13 @@ table.fieldtable { } .fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ + border-bottom: 1px solid var(--memdef-border-color); } .fieldtable td.fielddoc p:first-child { margin-top: 0px; -} - +} + .fieldtable td.fielddoc p:last-child { margin-bottom: 2px; } @@ -1039,22 +1369,18 @@ table.fieldtable { } .fieldtable th { - background-image:url('nav_f.png'); + background-image: var(--memdef-title-gradient-image); background-repeat:repeat-x; - background-color: #E2E8F2; + background-color: var(--memdef-title-background-color); font-size: 90%; - color: #253555; + color: var(--memdef-proto-text-color); 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; + border-bottom: 1px solid var(--memdef-border-color); } @@ -1062,7 +1388,7 @@ table.fieldtable { top: 0px; left: 10px; height: 36px; - background-image: url('tab_b.png'); + background-image: var(--nav-gradient-image); z-index: 101; overflow: hidden; font-size: 13px; @@ -1071,13 +1397,13 @@ table.fieldtable { .navpath ul { font-size: 11px; - background-image:url('tab_b.png'); + background-image: var(--nav-gradient-image); background-repeat:repeat-x; background-position: 0 -5px; height:30px; line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); overflow:hidden; margin:0px; padding:0px; @@ -1089,10 +1415,10 @@ table.fieldtable { float:left; padding-left:10px; padding-right:15px; - background-image:url('bc_s.png'); + background-image:var(--nav-breadcrumb-image); background-repeat:no-repeat; background-position:right; - color:#364D7C; + color: var(--nav-foreground-color); } .navpath li.navelem a @@ -1101,15 +1427,16 @@ table.fieldtable { 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; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; } .navpath li.navelem a:hover { - color:#6884BD; + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); } .navpath li.footer @@ -1121,7 +1448,7 @@ table.fieldtable { background-image:none; background-repeat:no-repeat; background-position:right; - color:#364D7C; + color: var(--footer-foreground-color); font-size: 8pt; } @@ -1133,7 +1460,7 @@ div.summary padding-right: 5px; width: 50%; text-align: right; -} +} div.summary a { @@ -1148,7 +1475,7 @@ table.classindex margin-right: 3%; width: 94%; border: 0; - border-spacing: 0; + border-spacing: 0; padding: 0; } @@ -1166,11 +1493,11 @@ div.ingroups a div.header { - background-image:url('nav_h.png'); + background-image: var(--header-gradient-image); background-repeat:repeat-x; - background-color: #F9FAFC; + background-color: var(--header-background-color); margin: 0px; - border-bottom: 1px solid #C4CFE5; + border-bottom: 1px solid var(--header-separator-color); } div.headertitle @@ -1193,11 +1520,6 @@ dl.section { padding-left: 0px; } -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - dl.note { margin-left: -7px; padding-left: 3px; @@ -1205,16 +1527,6 @@ dl.note { 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; @@ -1222,16 +1534,6 @@ dl.warning, dl.attention { 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; @@ -1239,16 +1541,6 @@ dl.pre, dl.post, dl.invariant { 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; @@ -1256,16 +1548,6 @@ dl.deprecated { 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; @@ -1273,16 +1555,6 @@ dl.todo { 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; @@ -1290,16 +1562,6 @@ dl.test { 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; @@ -1307,21 +1569,16 @@ dl.bug { 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; } +#projectrow +{ + height: 56px; +} + #projectlogo { text-align: center; @@ -1337,25 +1594,29 @@ dl.section dd { #projectalign { vertical-align: middle; + padding-left: 0.5em; } #projectname { - font: 300% Tahoma, Arial,sans-serif; + font-size: 200%; + font-family: var(--font-family-title); margin: 0px; padding: 2px 0px; } - + #projectbrief { - font: 120% Tahoma, Arial,sans-serif; + font-size: 90%; + font-family: var(--font-family-title); margin: 0px; padding: 0px; } #projectnumber { - font: 50% Tahoma, Arial,sans-serif; + font-size: 50%; + font-family: 50% var(--font-family-title); margin: 0px; padding: 0px; } @@ -1365,7 +1626,8 @@ dl.section dd { padding: 0px; margin: 0px; width: 100%; - border-bottom: 1px solid #5373B4; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); } .image @@ -1398,17 +1660,12 @@ dl.section dd { font-weight: bold; } -div.zoom -{ - border: 1px solid #90A5CE; -} - dl.citelist { margin-bottom:50px; } dl.citelist dt { - color:#334975; + color:var(--citation-label-color); float:left; font-weight:bold; margin-right:10px; @@ -1424,8 +1681,8 @@ dl.citelist dd { div.toc { padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); border-radius: 7px 7px 7px 7px; float: right; height: auto; @@ -1433,28 +1690,17 @@ div.toc { 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; + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); 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; + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); border-bottom: 0 none; margin: 0; } @@ -1463,7 +1709,7 @@ div.toc ul { list-style: none outside none; border: medium none; padding: 0px; -} +} div.toc li.level1 { margin-left: 0px; @@ -1474,11 +1720,11 @@ div.toc li.level2 { } div.toc li.level3 { - margin-left: 30px; + margin-left: 15px; } div.toc li.level4 { - margin-left: 45px; + margin-left: 15px; } span.emoji { @@ -1487,29 +1733,13 @@ span.emoji { */ } -.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; +span.obfuscator { + display: none; } .inherit_header { font-weight: bold; - color: gray; + color: var(--inherit-header-color); cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; @@ -1541,11 +1771,12 @@ tr.heading h2 { #powerTip { cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; + box-shadow: var(--tooltip-shadow); display: none; font-size: smaller; max-width: 80%; @@ -1556,7 +1787,7 @@ tr.heading h2 { } #powerTip div.ttdoc { - color: grey; + color: var(--tooltip-doc-color); font-style: italic; } @@ -1564,18 +1795,24 @@ tr.heading h2 { font-weight: bold; } +#powerTip a { + color: var(--tooltip-link-color); +} + #powerTip div.ttname { font-weight: bold; } #powerTip div.ttdeci { - color: #006318; + color: var(--tooltip-declaration-color); } #powerTip div { margin: 0px; padding: 0px; - font: 12px/16px Roboto,sans-serif; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; } #powerTip:before, #powerTip:after { @@ -1620,12 +1857,12 @@ tr.heading h2 { } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; + border-top-color: var(--tooltip-background-color); border-width: 10px; margin: 0px -10px; } -#powerTip.n:before { - border-top-color: #808080; +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); border-width: 11px; margin: 0px -11px; } @@ -1648,13 +1885,13 @@ tr.heading h2 { } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; + border-bottom-color: var(--tooltip-background-color); border-width: 10px; margin: 0px -10px; } #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; + border-bottom-color: var(--tooltip-border-color); border-width: 11px; margin: 0px -11px; } @@ -1675,13 +1912,13 @@ tr.heading h2 { left: 100%; } #powerTip.e:after { - border-left-color: #FFFFFF; + border-left-color: var(--tooltip-border-color); border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.e:before { - border-left-color: #808080; + border-left-color: var(--tooltip-border-color); border-width: 11px; top: 50%; margin-top: -11px; @@ -1691,13 +1928,13 @@ tr.heading h2 { right: 100%; } #powerTip.w:after { - border-right-color: #FFFFFF; + border-right-color: var(--tooltip-border-color); border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.w:before { - border-right-color: #808080; + border-right-color: var(--tooltip-border-color); border-width: 11px; top: 50%; margin-top: -11px; @@ -1731,7 +1968,7 @@ table.markdownTable { } table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; + border: 1px solid var(--table-cell-border-color); padding: 3px 7px 2px; } @@ -1739,8 +1976,8 @@ table.markdownTable tr { } th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-size: 110%; padding-bottom: 4px; padding-top: 5px; @@ -1758,32 +1995,9 @@ 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 */ @@ -1791,3 +2005,41 @@ u { text-decoration: underline; } +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen.svg b/doxygen.svg index d42dad5..79a7635 100644 --- a/doxygen.svg +++ b/doxygen.svg @@ -1,4 +1,6 @@ + @@ -17,7 +19,7 @@ - + diff --git a/dynsections.js b/dynsections.js index 3174bd7..b73c828 100644 --- a/dynsections.js +++ b/dynsections.js @@ -47,6 +47,8 @@ function updateStripes() { $('table.directory tr'). removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); } function toggleLevel(level) @@ -118,4 +120,73 @@ function toggleInherit(id) $(img).attr('src',src.substring(0,src.length-10)+'open.png'); } } + +var opened=true; +// in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes +var plusImg = [ "var(--fold-plus-image)", "var(--fold-plus-image-relpath)" ]; +var minusImg = [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ]; + +// toggle all folding blocks +function codefold_toggle_all(relPath) { + if (opened) { + $('#fold_all').css('background-image',plusImg[relPath]); + $('div[id^=foldopen]').hide(); + $('div[id^=foldclosed]').show(); + } else { + $('#fold_all').css('background-image',minusImg[relPath]); + $('div[id^=foldopen]').show(); + $('div[id^=foldclosed]').hide(); + } + opened=!opened; +} + +// toggle single folding block +function codefold_toggle(id) { + $('#foldopen'+id).toggle(); + $('#foldclosed'+id).toggle(); +} +function init_codefold(relPath) { + $('span[class=lineno]').css( + {'padding-right':'4px', + 'margin-right':'2px', + 'display':'inline-block', + 'width':'54px', + 'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%' + }); + // add global toggle to first line + $('span[class=lineno]:first').append(''); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + /* @license-end */ diff --git a/files.html b/files.html index 51859cf..4e0c861 100644 --- a/files.html +++ b/files.html @@ -1,9 +1,9 @@ - + - - + + libx52: File List @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,32 +57,38 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
File List
+
File List
Here is a list of all documented files with brief descriptions:
[detail level 12]
- + - + - + - +
  daemon
 x52dcomm.hFunctions, structures and enumerations for the Saitek X52 MFD & LED daemon communication library
 x52dcomm.hFunctions, structures and enumerations for the Saitek X52 MFD & LED daemon communication library
  libx52
 libx52.hFunctions, structures and enumerations for the Saitek X52 MFD & LED driver library
 libx52.hFunctions, structures and enumerations for the Saitek X52 MFD & LED driver library
  libx52io
 libx52io.hFunctions, structures and enumerations for the Saitek X52 IO driver library
 libx52io.hFunctions, structures and enumerations for the Saitek X52 IO driver library
  libx52util
 libx52util.hUtility functions for the Saitek X52 MFD & LED driver library
 libx52util.hUtility functions for the Saitek X52 MFD & LED driver library
diff --git a/folderclosed.png b/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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^_20000 + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.png b/folderopen.png deleted file mode 100644 index d6c7f676a3b3ef8c2c307d319dff3c6a604eb227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597 zcmV-b0;>IqP)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 diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/functions.html b/functions.html index 778de03..51730b6 100644 --- a/functions.html +++ b/functions.html @@ -1,9 +1,9 @@ - + - - + + libx52: Data Fields @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,30 +57,29 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
diff --git a/functions_vars.html b/functions_vars.html index 2d34519..3265947 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -1,9 +1,9 @@ - + - - + + libx52: Data Fields - Variables @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,30 +57,29 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
diff --git a/globals.html b/globals.html index d705f22..51fad46 100644 --- a/globals.html +++ b/globals.html @@ -1,9 +1,9 @@ - + - - + + libx52: Globals @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,501 +57,190 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
-

- l -

diff --git a/globals_enum.html b/globals_enum.html index 4a933fd..c5d0fe0 100644 --- a/globals_enum.html +++ b/globals_enum.html @@ -1,9 +1,9 @@ - + - - + + libx52: Globals @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ + @@ -57,48 +57,35 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
diff --git a/globals_eval.html b/globals_eval.html index 73f3597..fc0f2a8 100644 --- a/globals_eval.html +++ b/globals_eval.html @@ -1,9 +1,9 @@ - + - - + + libx52: Globals @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ + @@ -57,317 +57,126 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-  +
Here is a list of all documented enum values with links to the documentation:
-

- l -

diff --git a/globals_func.html b/globals_func.html index 196ad2d..641be96 100644 --- a/globals_func.html +++ b/globals_func.html @@ -1,9 +1,9 @@ - + - - + + libx52: Globals @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ + @@ -57,165 +57,78 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-  +
Here is a list of all documented functions with links to the documentation:
-

- l -

diff --git a/globals_type.html b/globals_type.html index f667734..76988b3 100644 --- a/globals_type.html +++ b/globals_type.html @@ -1,9 +1,9 @@ - + - - + + libx52: Globals @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ + @@ -57,27 +57,28 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
diff --git a/group__libx52clock.html b/group__libx52clock.html index 3aed25c..6850c9a 100644 --- a/group__libx52clock.html +++ b/group__libx52clock.html @@ -1,9 +1,9 @@ - + - - + + libx52: Clock control @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ + @@ -57,66 +57,72 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Clock control
+
Clock control
- - - -

+

Enumerations

enum  libx52_clock_id { LIBX52_CLOCK_1 +
enum  libx52_clock_id { LIBX52_CLOCK_1 , LIBX52_CLOCK_2 , LIBX52_CLOCK_3 }
 List of supported clocks on the MFD. More...
 
enum  libx52_clock_format { LIBX52_CLOCK_FORMAT_12HR +
enum  libx52_clock_format { LIBX52_CLOCK_FORMAT_12HR , LIBX52_CLOCK_FORMAT_24HR }
 Supported clock formats. More...
 
enum  libx52_date_format { LIBX52_DATE_FORMAT_DDMMYY +
enum  libx52_date_format { LIBX52_DATE_FORMAT_DDMMYY , LIBX52_DATE_FORMAT_MMDDYY , LIBX52_DATE_FORMAT_YYMMDD }
 Supported date formats. More...
 
- - - + + - - + + - - + + - - + + - - + + - - + +

+

Functions

int libx52_set_clock (libx52_device *x52, time_t time, int local)
 Set the clock. More...
int libx52_set_clock (libx52_device *x52, time_t time, int local)
 Set the clock.
 
int libx52_set_clock_timezone (libx52_device *x52, libx52_clock_id clock, int offset)
 Set the timezone for the secondary and tertiary clocks. More...
int libx52_set_clock_timezone (libx52_device *x52, libx52_clock_id clock, int offset)
 Set the timezone for the secondary and tertiary clocks.
 
int libx52_set_clock_format (libx52_device *x52, libx52_clock_id clock, libx52_clock_format format)
 Set whether the clock is displayed in 12 hour or 24 hour format. More...
int libx52_set_clock_format (libx52_device *x52, libx52_clock_id clock, libx52_clock_format format)
 Set whether the clock is displayed in 12 hour or 24 hour format.
 
int libx52_set_time (libx52_device *x52, uint8_t hour, uint8_t minute)
 Set the hour and minute on clock 1. More...
int libx52_set_time (libx52_device *x52, uint8_t hour, uint8_t minute)
 Set the hour and minute on clock 1.
 
int libx52_set_date (libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy)
 Set the date. More...
int libx52_set_date (libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy)
 Set the date.
 
int libx52_set_date_format (libx52_device *x52, libx52_date_format format)
 Set the date format for the MFD date display. More...
int libx52_set_date_format (libx52_device *x52, libx52_date_format format)
 Set the date format for the MFD date display.
 

Detailed Description

Control the clocks on the MFD

Enumeration Type Documentation

- -

◆ libx52_clock_format

+ +

◆ libx52_clock_format

@@ -129,16 +135,16 @@ Functions

Supported clock formats.

- -
Enumerator
LIBX52_CLOCK_FORMAT_12HR 

12-hour display on the MFD clock

+
Enumerator
LIBX52_CLOCK_FORMAT_12HR 

12-hour display on the MFD clock

LIBX52_CLOCK_FORMAT_24HR 

24-hour display on the MFD clock

+
LIBX52_CLOCK_FORMAT_24HR 

24-hour display on the MFD clock

- -

◆ libx52_clock_id

+ +

◆ libx52_clock_id

@@ -151,18 +157,18 @@ Functions

List of supported clocks on the MFD.

- - -
Enumerator
LIBX52_CLOCK_1 

Primary clock on the MFD, indicated by the number 1

+
Enumerator
LIBX52_CLOCK_1 

Primary clock on the MFD, indicated by the number 1

LIBX52_CLOCK_2 

Secondary clock on the MFD, indicated by the number 2

+
LIBX52_CLOCK_2 

Secondary clock on the MFD, indicated by the number 2

LIBX52_CLOCK_3 

Tertiary clock on the MFD, indicated by the number 3

+
LIBX52_CLOCK_3 

Tertiary clock on the MFD, indicated by the number 3

- -

◆ libx52_date_format

+ +

◆ libx52_date_format

@@ -175,19 +181,19 @@ Functions

Supported date formats.

- - -
Enumerator
LIBX52_DATE_FORMAT_DDMMYY 

Date format DD-MM-YY

+
Enumerator
LIBX52_DATE_FORMAT_DDMMYY 

Date format DD-MM-YY

LIBX52_DATE_FORMAT_MMDDYY 

Date format MM-DD-YY

+
LIBX52_DATE_FORMAT_MMDDYY 

Date format MM-DD-YY

LIBX52_DATE_FORMAT_YYMMDD 

Date format YY-MM-DD

+
LIBX52_DATE_FORMAT_YYMMDD 

Date format YY-MM-DD

Function Documentation

- -

◆ libx52_set_clock()

+ +

◆ libx52_set_clock()

@@ -239,8 +245,8 @@ Functions
- -

◆ libx52_set_clock_format()

+ +

◆ libx52_set_clock_format()

@@ -290,8 +296,8 @@ Functions
- -

◆ libx52_set_clock_timezone()

+ +

◆ libx52_set_clock_timezone()

@@ -325,11 +331,11 @@ Functions

Set the timezone for the secondary and tertiary clocks.

The X52 Pro has a total of 3 clock displays. The secondary and tertiary clocks are controlled as an offset from the primary clock in minutes. However, for convenience, the X52 library calculates this offset internally and only requires you to set the timezone as the number of minutes east of UTC. offset is limited to ± 1440 minutes, and any offset outside this range will result in a return value of LIBX52_ERROR_OUT_OF_RANGE

Example
// Set clock 2 timezone to Pacific Standard Time (UTC-08:00)
- +
// Set clock 3 timezone to Indian Standard Time (UTC+05:30)
- +
int libx52_set_clock_timezone(libx52_device *x52, libx52_clock_id clock, int offset)
Set the timezone for the secondary and tertiary clocks.
-
@ LIBX52_CLOCK_2
Definition: libx52.h:57
+
@ LIBX52_CLOCK_2
Definition libx52.h:57
Parameters
@@ -349,8 +355,8 @@ Functions - -

◆ libx52_set_date()

+ +

◆ libx52_set_date()

@@ -406,8 +412,8 @@ Functions
- -

◆ libx52_set_date_format()

+ +

◆ libx52_set_date_format()

@@ -449,8 +455,8 @@ Functions
- -

◆ libx52_set_time()

+ +

◆ libx52_set_time()

@@ -502,7 +508,7 @@ Functions
diff --git a/group__libx52dev.html b/group__libx52dev.html index d32213d..65c7c4d 100644 --- a/group__libx52dev.html +++ b/group__libx52dev.html @@ -1,9 +1,9 @@ - + - - + + libx52: Device Handling @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,37 +57,43 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Device Handling
+
Device Handling
- - - + + - - + + - - + +

+

Functions

int libx52_connect (libx52_device *dev)
 Connect to the X52 device. More...
int libx52_connect (libx52_device *dev)
 Connect to the X52 device.
 
int libx52_disconnect (libx52_device *dev)
 Disconnect from the X52 device. More...
int libx52_disconnect (libx52_device *dev)
 Disconnect from the X52 device.
 
bool libx52_is_connected (libx52_device *dev)
 Check if joystick is connected. More...
bool libx52_is_connected (libx52_device *dev)
 Check if joystick is connected.
 

Detailed Description

Handle connections to the device.

These functions allow the application to dynamically connect and disconnect from a supported device.

Function Documentation

- -

◆ libx52_connect()

+ +

◆ libx52_connect()

@@ -115,8 +121,8 @@ Functions
- -

◆ libx52_disconnect()

+ +

◆ libx52_disconnect()

@@ -143,8 +149,8 @@ Functions
- -

◆ libx52_is_connected()

+ +

◆ libx52_is_connected()

@@ -179,7 +185,7 @@ Functions
diff --git a/group__libx52init.html b/group__libx52init.html index 6fd4758..c036229 100644 --- a/group__libx52init.html +++ b/group__libx52init.html @@ -1,9 +1,9 @@ - + - - + + libx52: Library Initialization and Deinitialization @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,40 +57,46 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Library Initialization and Deinitialization
+
Library Initialization and Deinitialization
- - - + +

+

Typedefs

typedef struct libx52_device libx52_device
 Device context structure used by libx52. More...
typedef struct libx52_device libx52_device
 Device context structure used by libx52.
 
- - - + + - - + +

+

Functions

int libx52_init (libx52_device **dev)
 Initialize the X52 library. More...
int libx52_init (libx52_device **dev)
 Initialize the X52 library.
 
void libx52_exit (libx52_device *dev)
 Exit the library and free up any resources used. More...
void libx52_exit (libx52_device *dev)
 Exit the library and free up any resources used.
 

Detailed Description

These functions are used at application entry and exit.

Typedef Documentation

- -

◆ libx52_device

+ +

◆ libx52_device

@@ -107,8 +113,8 @@ Functions

Function Documentation

- -

◆ libx52_exit()

+ +

◆ libx52_exit()

@@ -135,8 +141,8 @@ Functions
- -

◆ libx52_init()

+ +

◆ libx52_init()

@@ -154,16 +160,16 @@ Functions

Initialize the X52 library.

This function initializes the libx52 library, sets up any internal data structures to access the joystick, and returns a libx52_device pointer in the output parameter. All calls to libx52 use the returned pointer to control the device.

Example
int rc;
- -
rc = libx52_init(&dev);
-
if (rc != LIBX52_SUCCESS) {
+ +
rc = libx52_init(&dev);
+
if (rc != LIBX52_SUCCESS) {
// Error handling omitted for brevity
}
// Save dev for use later
-
struct libx52_device libx52_device
Device context structure used by libx52.
Definition: libx52.h:46
+
struct libx52_device libx52_device
Device context structure used by libx52.
Definition libx52.h:46
int libx52_init(libx52_device **dev)
Initialize the X52 library.
-
@ LIBX52_SUCCESS
Definition: libx52.h:165
+
@ LIBX52_SUCCESS
Definition libx52.h:165
Since
0.2.1 - This function attempts to connect to the joystick upon initialization. However, if no device is connected, then the library initialization does not fail, but the application must call libx52_connect prior to any calls to libx52_update
Deprecated:
Connection to a supported joystick is no longer a goal of this function. It will continue to attempt to connect to the joystick during initialization so that existing clients don't break, but it is highly recommended that all clients use libx52_connect to explicitly connect to the joystick.
@@ -182,7 +188,7 @@ Functions
diff --git a/group__libx52io.html b/group__libx52io.html index ba34c84..65697ca 100644 --- a/group__libx52io.html +++ b/group__libx52io.html @@ -1,9 +1,9 @@ - + - - + + libx52: IO Library APIs @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,9 +57,16 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
@@ -68,26 +75,25 @@ $(function() { Typedefs | Enumerations | Functions
-
-
IO Library APIs
+
IO Library APIs
-

+

Data Structures

struct  libx52io_report
 X52 HID Report. More...
 
- - - + +

+

Typedefs

typedef struct libx52io_context libx52io_context
 Device context structure used by libx52io. More...
typedef struct libx52io_context libx52io_context
 Device context structure used by libx52io.
 
- - } - } -

+

Enumerations

enum  libx52io_error_code {
+
enum  libx52io_error_code {
  LIBX52IO_SUCCESS , LIBX52IO_ERROR_INIT_FAILURE , LIBX52IO_ERROR_NO_DEVICE @@ -100,7 +106,7 @@ Enumerations
 libx52 IO error codes More...
 
enum  libx52io_axis {
+
enum  libx52io_axis {
  LIBX52IO_AXIS_X , LIBX52IO_AXIS_Y , LIBX52IO_AXIS_RZ @@ -119,7 +125,7 @@ Enumerations
 X52 Axis definitions. More...
 
enum  libx52io_button {
+
enum  libx52io_button {
  LIBX52IO_BTN_TRIGGER , LIBX52IO_BTN_TRIGGER_2 , LIBX52IO_BTN_FIRE @@ -174,62 +180,62 @@ Enumerations
 X52 Button definitions. More...
 
- - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - - - - - - - - - + + + + + + + + +

+

Functions

int libx52io_init (libx52io_context **ctx)
 Initialize the IO library. More...
int libx52io_init (libx52io_context **ctx)
 Initialize the IO library.
 
void libx52io_exit (libx52io_context *ctx)
 Exit the library and free up any resources used. More...
void libx52io_exit (libx52io_context *ctx)
 Exit the library and free up any resources used.
 
int libx52io_open (libx52io_context *ctx)
 Open a connection to a supported joystick. More...
int libx52io_open (libx52io_context *ctx)
 Open a connection to a supported joystick.
 
int libx52io_close (libx52io_context *ctx)
 Close an existing connection to a supported joystick. More...
int libx52io_close (libx52io_context *ctx)
 Close an existing connection to a supported joystick.
 
int libx52io_read_timeout (libx52io_context *ctx, libx52io_report *report, int timeout)
 Read and parse a HID report. More...
int libx52io_read_timeout (libx52io_context *ctx, libx52io_report *report, int timeout)
 Read and parse a HID report.
 
int libx52io_read (libx52io_context *ctx, libx52io_report *report)
 Read and parse a HID report. More...
int libx52io_read (libx52io_context *ctx, libx52io_report *report)
 Read and parse a HID report.
 
int libx52io_get_axis_range (libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max)
 Retrieve the range of an axis. More...
int libx52io_get_axis_range (libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max)
 Retrieve the range of an axis.
 
const char * libx52io_strerror (libx52io_error_code code)
 Get the string representation of an error code. More...
 
const char * libx52io_axis_to_str (libx52io_axis axis)
 Get the string representation of an axis. More...
 
const char * libx52io_button_to_str (libx52io_button button)
 Get the string representation of a button. More...
 
uint16_t libx52io_get_vendor_id (libx52io_context *ctx)
 Get the vendor ID of the connected X52 device. More...
const char * libx52io_strerror (libx52io_error_code code)
 Get the string representation of an error code.
 
const char * libx52io_axis_to_str (libx52io_axis axis)
 Get the string representation of an axis.
 
const char * libx52io_button_to_str (libx52io_button button)
 Get the string representation of a button.
 
uint16_t libx52io_get_vendor_id (libx52io_context *ctx)
 Get the vendor ID of the connected X52 device.
 
uint16_t libx52io_get_product_id (libx52io_context *ctx)
 Get the product ID of the connected X52 device. More...
uint16_t libx52io_get_product_id (libx52io_context *ctx)
 Get the product ID of the connected X52 device.
 
uint16_t libx52io_get_device_version (libx52io_context *ctx)
 Get the device version of the connected X52 device. More...
uint16_t libx52io_get_device_version (libx52io_context *ctx)
 Get the device version of the connected X52 device.
 
const char * libx52io_get_manufacturer_string (libx52io_context *ctx)
 Get the manufacturer string of the connected X52 device. More...
 
const char * libx52io_get_product_string (libx52io_context *ctx)
 Get the product string of the connected X52 device. More...
 
const char * libx52io_get_serial_number_string (libx52io_context *ctx)
 Get the serial number of the connected X52 device. More...
 
const char * libx52io_get_manufacturer_string (libx52io_context *ctx)
 Get the manufacturer string of the connected X52 device.
 
const char * libx52io_get_product_string (libx52io_context *ctx)
 Get the product string of the connected X52 device.
 
const char * libx52io_get_serial_number_string (libx52io_context *ctx)
 Get the serial number of the connected X52 device.
 

Detailed Description

These functions allow an application to connect to a supported X52/X52Pro joystick and read the state of the buttons and axes.

Typedef Documentation

- -

◆ libx52io_context

+ +

◆ libx52io_context

@@ -246,8 +252,8 @@ Functions

Enumeration Type Documentation

- -

◆ libx52io_axis

+ +

◆ libx52io_axis

@@ -260,34 +266,34 @@ Functions

X52 Axis definitions.

- - - - - - - - - - -
Enumerator
LIBX52IO_AXIS_X 

Stick X axis

+
Enumerator
LIBX52IO_AXIS_X 

Stick X axis

LIBX52IO_AXIS_Y 

Stick Y axis

+
LIBX52IO_AXIS_Y 

Stick Y axis

LIBX52IO_AXIS_RZ 

Stick twist axis

+
LIBX52IO_AXIS_RZ 

Stick twist axis

LIBX52IO_AXIS_Z 

Throttle axis

+
LIBX52IO_AXIS_Z 

Throttle axis

LIBX52IO_AXIS_RX 

Throttle Rotary X

+
LIBX52IO_AXIS_RX 

Throttle Rotary X

LIBX52IO_AXIS_RY 

Throttle Rotary Y

+
LIBX52IO_AXIS_RY 

Throttle Rotary Y

LIBX52IO_AXIS_SLIDER 

Throttle Slider

+
LIBX52IO_AXIS_SLIDER 

Throttle Slider

LIBX52IO_AXIS_THUMBX 

Thumbstick X

+
LIBX52IO_AXIS_THUMBX 

Thumbstick X

LIBX52IO_AXIS_THUMBY 

Thumbstick Y

+
LIBX52IO_AXIS_THUMBY 

Thumbstick Y

LIBX52IO_AXIS_HATX 

Hat X

+
LIBX52IO_AXIS_HATX 

Hat X

LIBX52IO_AXIS_HATY 

Hat Y

+
LIBX52IO_AXIS_HATY 

Hat Y

- -

◆ libx52io_button

+ +

◆ libx52io_button

@@ -300,90 +306,90 @@ Functions

X52 Button definitions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Enumerator
LIBX52IO_BTN_TRIGGER 

Primary trigger

+
Enumerator
LIBX52IO_BTN_TRIGGER 

Primary trigger

LIBX52IO_BTN_TRIGGER_2 

Secondary trigger

+
LIBX52IO_BTN_TRIGGER_2 

Secondary trigger

LIBX52IO_BTN_FIRE 

Fire button

+
LIBX52IO_BTN_FIRE 

Fire button

LIBX52IO_BTN_PINKY 

Pinky trigger

+
LIBX52IO_BTN_PINKY 

Pinky trigger

LIBX52IO_BTN_A 

A button, on stick

+
LIBX52IO_BTN_A 

A button, on stick

LIBX52IO_BTN_B 

B button, on stick

+
LIBX52IO_BTN_B 

B button, on stick

LIBX52IO_BTN_C 

C button, on stick

+
LIBX52IO_BTN_C 

C button, on stick

LIBX52IO_BTN_D 

D button, on throttle

+
LIBX52IO_BTN_D 

D button, on throttle

LIBX52IO_BTN_E 

E button, on throttle

+
LIBX52IO_BTN_E 

E button, on throttle

LIBX52IO_BTN_T1_UP 

Toggle 1 up

+
LIBX52IO_BTN_T1_UP 

Toggle 1 up

LIBX52IO_BTN_T1_DN 

Toggle 1 down

+
LIBX52IO_BTN_T1_DN 

Toggle 1 down

LIBX52IO_BTN_T2_UP 

Toggle 2 up

+
LIBX52IO_BTN_T2_UP 

Toggle 2 up

LIBX52IO_BTN_T2_DN 

Toggle 2 down

+
LIBX52IO_BTN_T2_DN 

Toggle 2 down

LIBX52IO_BTN_T3_UP 

Toggle 3 up

+
LIBX52IO_BTN_T3_UP 

Toggle 3 up

LIBX52IO_BTN_T3_DN 

Toggle 3 down

+
LIBX52IO_BTN_T3_DN 

Toggle 3 down

LIBX52IO_BTN_POV_1_N 

POV 1 Up, on stick

+
LIBX52IO_BTN_POV_1_N 

POV 1 Up, on stick

LIBX52IO_BTN_POV_1_E 

POV 1 Right, on stick

+
LIBX52IO_BTN_POV_1_E 

POV 1 Right, on stick

LIBX52IO_BTN_POV_1_S 

POV 1 Down, on stick

+
LIBX52IO_BTN_POV_1_S 

POV 1 Down, on stick

LIBX52IO_BTN_POV_1_W 

POV 1 Left, on stick

+
LIBX52IO_BTN_POV_1_W 

POV 1 Left, on stick

LIBX52IO_BTN_POV_2_N 

POV 2 Up, on throttle

+
LIBX52IO_BTN_POV_2_N 

POV 2 Up, on throttle

LIBX52IO_BTN_POV_2_E 

POV 2 Right, on throttle

+
LIBX52IO_BTN_POV_2_E 

POV 2 Right, on throttle

LIBX52IO_BTN_POV_2_S 

POV 2 Down, on throttle

+
LIBX52IO_BTN_POV_2_S 

POV 2 Down, on throttle

LIBX52IO_BTN_POV_2_W 

POV 2 Left, on throttle

+
LIBX52IO_BTN_POV_2_W 

POV 2 Left, on throttle

LIBX52IO_BTN_CLUTCH 

Clutch button, on throttle

+
LIBX52IO_BTN_CLUTCH 

Clutch button, on throttle

LIBX52IO_BTN_MOUSE_PRIMARY 

Primary mouse button, next to thumbstick

+
LIBX52IO_BTN_MOUSE_PRIMARY 

Primary mouse button, next to thumbstick

LIBX52IO_BTN_MOUSE_SECONDARY 

Secondary mouse button, press scroll wheel on throttle

+
LIBX52IO_BTN_MOUSE_SECONDARY 

Secondary mouse button, press scroll wheel on throttle

LIBX52IO_BTN_MOUSE_SCROLL_UP 

Scroll wheel up, on throttle

+
LIBX52IO_BTN_MOUSE_SCROLL_UP 

Scroll wheel up, on throttle

LIBX52IO_BTN_MOUSE_SCROLL_DN 

Scroll wheel down, on throttle

+
LIBX52IO_BTN_MOUSE_SCROLL_DN 

Scroll wheel down, on throttle

LIBX52IO_BTN_FUNCTION 

Function button

+
LIBX52IO_BTN_FUNCTION 

Function button

LIBX52IO_BTN_START_STOP 

Start/Stop button

+
LIBX52IO_BTN_START_STOP 

Start/Stop button

LIBX52IO_BTN_RESET 

Reset button

+
LIBX52IO_BTN_RESET 

Reset button

LIBX52IO_BTN_PG_UP 

Page Up button, X52 Pro only

+
LIBX52IO_BTN_PG_UP 

Page Up button, X52 Pro only

LIBX52IO_BTN_PG_DN 

Page Down button, X52 Pro only

+
LIBX52IO_BTN_PG_DN 

Page Down button, X52 Pro only

LIBX52IO_BTN_UP 

Up button, X52 Pro only

+
LIBX52IO_BTN_UP 

Up button, X52 Pro only

LIBX52IO_BTN_DN 

Down button, X52 Pro only

+
LIBX52IO_BTN_DN 

Down button, X52 Pro only

LIBX52IO_BTN_SELECT 

Select button, X52 Pro only

+
LIBX52IO_BTN_SELECT 

Select button, X52 Pro only

LIBX52IO_BTN_MODE_1 

Mode 1 - reported as a button

+
LIBX52IO_BTN_MODE_1 

Mode 1 - reported as a button

LIBX52IO_BTN_MODE_2 

Mode 2 - reported as a button

+
LIBX52IO_BTN_MODE_2 

Mode 2 - reported as a button

LIBX52IO_BTN_MODE_3 

Mode 3 - reported as a button

+
LIBX52IO_BTN_MODE_3 

Mode 3 - reported as a button

- -

◆ libx52io_error_code

+ +

◆ libx52io_error_code

@@ -397,33 +403,33 @@ Functions

libx52 IO error codes

Error codes returned by libx52io

- - - - - - -
Enumerator
LIBX52IO_SUCCESS 

No error, indicates success

+
Enumerator
LIBX52IO_SUCCESS 

No error, indicates success

LIBX52IO_ERROR_INIT_FAILURE 

Initialization failure

+
LIBX52IO_ERROR_INIT_FAILURE 

Initialization failure

LIBX52IO_ERROR_NO_DEVICE 

No compatible device found

+
LIBX52IO_ERROR_NO_DEVICE 

No compatible device found

LIBX52IO_ERROR_INVALID 

Invalid arguments for function

+
LIBX52IO_ERROR_INVALID 

Invalid arguments for function

LIBX52IO_ERROR_CONN 

Connection error

+
LIBX52IO_ERROR_CONN 

Connection error

LIBX52IO_ERROR_IO 

Read error from device

+
LIBX52IO_ERROR_IO 

Read error from device

LIBX52IO_ERROR_TIMEOUT 

Timeout during read from device

+
LIBX52IO_ERROR_TIMEOUT 

Timeout during read from device

Function Documentation

- -

◆ libx52io_axis_to_str()

+ +

◆ libx52io_axis_to_str()

- + @@ -443,14 +449,14 @@ Functions - -

◆ libx52io_button_to_str()

+ +

◆ libx52io_button_to_str()

const char* libx52io_axis_to_str const char * libx52io_axis_to_str ( libx52io_axis  axis)
- + @@ -470,8 +476,8 @@ Functions - -

◆ libx52io_close()

+ +

◆ libx52io_close()

@@ -502,8 +508,8 @@ Functions
- -

◆ libx52io_exit()

+ +

◆ libx52io_exit()

@@ -530,8 +536,8 @@ Functions
- -

◆ libx52io_get_axis_range()

+ +

◆ libx52io_get_axis_range()

@@ -588,8 +594,8 @@ Functions
- -

◆ libx52io_get_device_version()

+ +

◆ libx52io_get_device_version()

@@ -615,14 +621,14 @@ Functions
- -

◆ libx52io_get_manufacturer_string()

+ +

◆ libx52io_get_manufacturer_string()

const char* libx52io_button_to_str const char * libx52io_button_to_str ( libx52io_button  button)
- + @@ -643,8 +649,8 @@ Functions - -

◆ libx52io_get_product_id()

+ +

◆ libx52io_get_product_id()

@@ -670,14 +676,14 @@ Functions
- -

◆ libx52io_get_product_string()

+ +

◆ libx52io_get_product_string()

const char* libx52io_get_manufacturer_string const char * libx52io_get_manufacturer_string ( libx52io_context ctx)
- + @@ -698,14 +704,14 @@ Functions - -

◆ libx52io_get_serial_number_string()

+ +

◆ libx52io_get_serial_number_string()

const char* libx52io_get_product_string const char * libx52io_get_product_string ( libx52io_context ctx)
- + @@ -726,8 +732,8 @@ Functions - -

◆ libx52io_get_vendor_id()

+ +

◆ libx52io_get_vendor_id()

@@ -753,8 +759,8 @@ Functions
- -

◆ libx52io_init()

+ +

◆ libx52io_init()

@@ -772,16 +778,16 @@ Functions

Initialize the IO library.

This function initializes the libx52io library, sets up any internal data structures to access the joystick, and returns a libx52io_context pointer in the output parameter. All calls to libx52io use the returned pointer to control the device.

Example
int rc;
- -
rc = libx52io_init(&ctx);
-
if (rc != LIBX52IO_SUCCESS) {
+ +
rc = libx52io_init(&ctx);
+
if (rc != LIBX52IO_SUCCESS) {
// Error handling omitted for brevity
}
// Save ctx for use later
int libx52io_init(libx52io_context **ctx)
Initialize the IO library.
-
struct libx52io_context libx52io_context
Device context structure used by libx52io.
Definition: libx52io.h:51
-
@ LIBX52IO_SUCCESS
Definition: libx52io.h:60
+
struct libx52io_context libx52io_context
Device context structure used by libx52io.
Definition libx52io.h:51
+
@ LIBX52IO_SUCCESS
Definition libx52io.h:60
Parameters
const char* libx52io_get_serial_number_string const char * libx52io_get_serial_number_string ( libx52io_context ctx)
@@ -793,8 +799,8 @@ Functions - -

◆ libx52io_open()

+ +

◆ libx52io_open()

@@ -827,8 +833,8 @@ Functions
- -

◆ libx52io_read()

+ +

◆ libx52io_read()

@@ -872,8 +878,8 @@ Functions
- -

◆ libx52io_read_timeout()

+ +

◆ libx52io_read_timeout()

@@ -925,14 +931,14 @@ Functions
- -

◆ libx52io_strerror()

+ +

◆ libx52io_strerror()

- + @@ -955,7 +961,7 @@ Functions diff --git a/group__libx52mfdled.html b/group__libx52mfdled.html index 8157735..d17a408 100644 --- a/group__libx52mfdled.html +++ b/group__libx52mfdled.html @@ -1,9 +1,9 @@ - + - - + +libx52: MFD & LED control @@ -19,10 +19,9 @@
const char* libx52io_strerror const char * libx52io_strerror ( libx52io_error_code  code)
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,23 +57,29 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
MFD & LED control
+
MFD & LED control
- - } -

+

Enumerations

enum  libx52_led_id {
+
enum  libx52_led_id {
  LIBX52_LED_FIRE = 0x01 , LIBX52_LED_A = 0x02 , LIBX52_LED_B = 0x04 @@ -91,7 +97,7 @@ Enumerations
 Supported LED identifiers. More...
 
enum  libx52_led_state {
+
enum  libx52_led_state {
  LIBX52_LED_STATE_OFF , LIBX52_LED_STATE_ON , LIBX52_LED_STATE_RED @@ -103,29 +109,29 @@ Enumerations
 Supported LED states. More...
 
- - - + + - - + + - - + + - - + + - - + +

+

Functions

int libx52_set_text (libx52_device *x52, uint8_t line, const char *text, uint8_t length)
 Set the text on an MFD line. More...
int libx52_set_text (libx52_device *x52, uint8_t line, const char *text, uint8_t length)
 Set the text on an MFD line.
 
int libx52_set_led_state (libx52_device *x52, libx52_led_id led, libx52_led_state state)
 Set the LED state. More...
int libx52_set_led_state (libx52_device *x52, libx52_led_id led, libx52_led_state state)
 Set the LED state.
 
int libx52_set_brightness (libx52_device *x52, uint8_t mfd, uint16_t brightness)
 Set the MFD or LED brightness. More...
int libx52_set_brightness (libx52_device *x52, uint8_t mfd, uint16_t brightness)
 Set the MFD or LED brightness.
 
int libx52_set_shift (libx52_device *x52, uint8_t state)
 Set the state of the shift indicator. More...
int libx52_set_shift (libx52_device *x52, uint8_t state)
 Set the state of the shift indicator.
 
int libx52_set_blink (libx52_device *x52, uint8_t state)
 Set the blinking state. More...
int libx52_set_blink (libx52_device *x52, uint8_t state)
 Set the blinking state.
 

Detailed Description

Control the MFD text and LED states

Enumeration Type Documentation

- -

◆ libx52_led_id

+ +

◆ libx52_led_id

@@ -138,34 +144,34 @@ Functions

Supported LED identifiers.

- - - - - - - - - - -
Enumerator
LIBX52_LED_FIRE 

Fire indicator LED

+
Enumerator
LIBX52_LED_FIRE 

Fire indicator LED

LIBX52_LED_A 

LED on button A

+
LIBX52_LED_A 

LED on button A

LIBX52_LED_B 

LED on button B

+
LIBX52_LED_B 

LED on button B

LIBX52_LED_D 

LED on button D

+
LIBX52_LED_D 

LED on button D

LIBX52_LED_E 

LED on button E

+
LIBX52_LED_E 

LED on button E

LIBX52_LED_T1 

LED on toggle T1

+
LIBX52_LED_T1 

LED on toggle T1

LIBX52_LED_T2 

LED on toggle T2

+
LIBX52_LED_T2 

LED on toggle T2

LIBX52_LED_T3 

LED on toggle T3

+
LIBX52_LED_T3 

LED on toggle T3

LIBX52_LED_POV 

LED on POV Hat

+
LIBX52_LED_POV 

LED on POV Hat

LIBX52_LED_CLUTCH 

LED on clutch button

+
LIBX52_LED_CLUTCH 

LED on clutch button

LIBX52_LED_THROTTLE 

Throttle LED

+
LIBX52_LED_THROTTLE 

Throttle LED

- -

◆ libx52_led_state

+ +

◆ libx52_led_state

@@ -179,23 +185,23 @@ Functions

Supported LED states.

Not all LEDs support all states

- - - - -
Enumerator
LIBX52_LED_STATE_OFF 

LED is off

+
Enumerator
LIBX52_LED_STATE_OFF 

LED is off

LIBX52_LED_STATE_ON 

LED is on. This is not supported by those LEDs which can display multiple colors

+
LIBX52_LED_STATE_ON 

LED is on. This is not supported by those LEDs which can display multiple colors

LIBX52_LED_STATE_RED 

LED displays red color. This is not supported by single color LEDs

+
LIBX52_LED_STATE_RED 

LED displays red color. This is not supported by single color LEDs

LIBX52_LED_STATE_AMBER 

LED displays amber color. This is not supported by single color LEDs

+
LIBX52_LED_STATE_AMBER 

LED displays amber color. This is not supported by single color LEDs

LIBX52_LED_STATE_GREEN 

LED displays green color. This is not supported by single color LEDs

+
LIBX52_LED_STATE_GREEN 

LED displays green color. This is not supported by single color LEDs

Function Documentation

- -

◆ libx52_set_blink()

+ +

◆ libx52_set_blink()

@@ -237,8 +243,8 @@ Functions
- -

◆ libx52_set_brightness()

+ +

◆ libx52_set_brightness()

@@ -287,8 +293,8 @@ Functions
- -

◆ libx52_set_led_state()

+ +

◆ libx52_set_led_state()

@@ -339,8 +345,8 @@ Functions
- -

◆ libx52_set_shift()

+ +

◆ libx52_set_shift()

@@ -382,8 +388,8 @@ Functions
- -

◆ libx52_set_text()

+ +

◆ libx52_set_text()

@@ -445,7 +451,7 @@ Functions
diff --git a/group__libx52misc.html b/group__libx52misc.html index 1e67dd7..378cea3 100644 --- a/group__libx52misc.html +++ b/group__libx52misc.html @@ -1,9 +1,9 @@ - + - - + + libx52: Miscellaneous @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,23 +57,29 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Miscellaneous
+
Miscellaneous
- - } -

+

Enumerations

enum  libx52_error_code {
+
enum  libx52_error_code {
  LIBX52_SUCCESS = 0 , LIBX52_ERROR_INIT_FAILURE , LIBX52_ERROR_OUT_OF_MEMORY @@ -99,28 +105,28 @@ Enumerations
 LibX52 Error codes. More...
 
enum  libx52_feature { LIBX52_FEATURE_LED +
enum  libx52_feature { LIBX52_FEATURE_LED }
 Feature support for libx52. More...
 
- - - + + - - + + - - + +

+

Functions

int libx52_update (libx52_device *x52)
 Update the X52. More...
int libx52_update (libx52_device *x52)
 Update the X52.
 
int libx52_vendor_command (libx52_device *x52, uint16_t index, uint16_t value)
 Write a raw vendor control packet. More...
int libx52_vendor_command (libx52_device *x52, uint16_t index, uint16_t value)
 Write a raw vendor control packet.
 
int libx52_check_feature (libx52_device *x52, libx52_feature feature)
 Check if the device supports the given feature. More...
int libx52_check_feature (libx52_device *x52, libx52_feature feature)
 Check if the device supports the given feature.
 

Detailed Description

Miscellaneous functionality

Enumeration Type Documentation

- -

◆ libx52_error_code

+ +

◆ libx52_error_code

@@ -134,46 +140,46 @@ Functions

LibX52 Error codes.

Error codes returned by libx52

- - - - - - - - - - - - - - - - -
Enumerator
LIBX52_SUCCESS 

No error, indicates success

+
Enumerator
LIBX52_SUCCESS 

No error, indicates success

LIBX52_ERROR_INIT_FAILURE 

Initialization failure

+
LIBX52_ERROR_INIT_FAILURE 

Initialization failure

LIBX52_ERROR_OUT_OF_MEMORY 

Out of memory

+
LIBX52_ERROR_OUT_OF_MEMORY 

Out of memory

LIBX52_ERROR_INVALID_PARAM 

Invalid parameter(s)

+
LIBX52_ERROR_INVALID_PARAM 

Invalid parameter(s)

LIBX52_ERROR_NOT_SUPPORTED 

Not supported

+
LIBX52_ERROR_NOT_SUPPORTED 

Not supported

LIBX52_ERROR_TRY_AGAIN 

No change necessary, try again

+
LIBX52_ERROR_TRY_AGAIN 

No change necessary, try again

LIBX52_ERROR_OUT_OF_RANGE 

Clock time value or timezone out of range

+
LIBX52_ERROR_OUT_OF_RANGE 

Clock time value or timezone out of range

LIBX52_ERROR_USB_FAILURE 

Error encountered during USB interaction

+
LIBX52_ERROR_USB_FAILURE 

Error encountered during USB interaction

LIBX52_ERROR_IO 

Input/output error

+
LIBX52_ERROR_IO 

Input/output error

LIBX52_ERROR_PERM 

Insufficient permissions

+
LIBX52_ERROR_PERM 

Insufficient permissions

LIBX52_ERROR_NO_DEVICE 

No such device

+
LIBX52_ERROR_NO_DEVICE 

No such device

LIBX52_ERROR_NOT_FOUND 

Entry not found

+
LIBX52_ERROR_NOT_FOUND 

Entry not found

LIBX52_ERROR_BUSY 

Busy

+
LIBX52_ERROR_BUSY 

Busy

LIBX52_ERROR_TIMEOUT 

Timeout

+
LIBX52_ERROR_TIMEOUT 

Timeout

LIBX52_ERROR_OVERFLOW 

Overflow

+
LIBX52_ERROR_OVERFLOW 

Overflow

LIBX52_ERROR_PIPE 

Pipe error

+
LIBX52_ERROR_PIPE 

Pipe error

LIBX52_ERROR_INTERRUPTED 

Operation interrupted

+
LIBX52_ERROR_INTERRUPTED 

Operation interrupted

- -

◆ libx52_feature

+ +

◆ libx52_feature

@@ -187,15 +193,15 @@ Functions

Feature support for libx52.

Each flag is passed to libx52_check_feature to determine if the connected device has the given feature. This list of features is only limited to those which differ between the supported devices.

-
Enumerator
LIBX52_FEATURE_LED 

Individual LED control

+
Enumerator
LIBX52_FEATURE_LED 

Individual LED control

Function Documentation

- -

◆ libx52_check_feature()

+ +

◆ libx52_check_feature()

@@ -233,8 +239,8 @@ Functions
- -

◆ libx52_update()

+ +

◆ libx52_update()

@@ -261,8 +267,8 @@ Functions
- -

◆ libx52_vendor_command()

+ +

◆ libx52_vendor_command()

@@ -311,7 +317,7 @@ Functions
diff --git a/group__libx52str.html b/group__libx52str.html index d9d37c4..39bfdcb 100644 --- a/group__libx52str.html +++ b/group__libx52str.html @@ -1,9 +1,9 @@ - + - - + + libx52: Stringification @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,51 +57,57 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Stringification
+
Stringification
- - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +

+

Functions

const char * libx52_strerror (libx52_error_code error)
 Return a string representation of the error code. More...
 
const char * libx52_clock_id_to_str (libx52_clock_id id)
 Returns a string representation of the clock ID. More...
 
const char * libx52_clock_format_to_str (libx52_clock_format format)
 Returns a string representation of the clock format. More...
 
const char * libx52_date_format_to_str (libx52_date_format format)
 Returns a string representation of the date format. More...
 
const char * libx52_led_id_to_str (libx52_led_id id)
 Returns a string representation of the LED. More...
 
const char * libx52_led_state_to_str (libx52_led_state state)
 Returns a string representation of the LED state. More...
 
const char * libx52_strerror (libx52_error_code error)
 Return a string representation of the error code.
 
const char * libx52_clock_id_to_str (libx52_clock_id id)
 Returns a string representation of the clock ID.
 
const char * libx52_clock_format_to_str (libx52_clock_format format)
 Returns a string representation of the clock format.
 
const char * libx52_date_format_to_str (libx52_date_format format)
 Returns a string representation of the date format.
 
const char * libx52_led_id_to_str (libx52_led_id id)
 Returns a string representation of the LED.
 
const char * libx52_led_state_to_str (libx52_led_state state)
 Returns a string representation of the LED state.
 

Detailed Description

Translation APIs from enumerations to string, primarily for logging.

Function Documentation

- -

◆ libx52_clock_format_to_str()

+ +

◆ libx52_clock_format_to_str()

- + @@ -121,14 +127,14 @@ Functions - -

◆ libx52_clock_id_to_str()

+ +

◆ libx52_clock_id_to_str()

const char* libx52_clock_format_to_str const char * libx52_clock_format_to_str ( libx52_clock_format  format)
- + @@ -148,14 +154,14 @@ Functions - -

◆ libx52_date_format_to_str()

+ +

◆ libx52_date_format_to_str()

const char* libx52_clock_id_to_str const char * libx52_clock_id_to_str ( libx52_clock_id  id)
- + @@ -175,14 +181,14 @@ Functions - -

◆ libx52_led_id_to_str()

+ +

◆ libx52_led_id_to_str()

const char* libx52_date_format_to_str const char * libx52_date_format_to_str ( libx52_date_format  format)
- + @@ -202,14 +208,14 @@ Functions - -

◆ libx52_led_state_to_str()

+ +

◆ libx52_led_state_to_str()

const char* libx52_led_id_to_str const char * libx52_led_id_to_str ( libx52_led_id  id)
- + @@ -229,14 +235,14 @@ Functions - -

◆ libx52_strerror()

+ +

◆ libx52_strerror()

const char* libx52_led_state_to_str const char * libx52_led_state_to_str ( libx52_led_state  state)
- + @@ -259,7 +265,7 @@ Functions diff --git a/group__libx52util.html b/group__libx52util.html index fbe240e..73eb434 100644 --- a/group__libx52util.html +++ b/group__libx52util.html @@ -1,9 +1,9 @@ - + - - + +libx52: Utility Functions @@ -19,10 +19,9 @@
const char* libx52_strerror const char * libx52_strerror ( libx52_error_code  error)
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,30 +57,36 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Utility Functions
+
Utility Functions
- - - + +

+

Functions

int libx52util_convert_utf8_string (const uint8_t *input, uint8_t *output, size_t *len)
 Convert UTF8 string to X52 character map. More...
int libx52util_convert_utf8_string (const uint8_t *input, uint8_t *output, size_t *len)
 Convert UTF8 string to X52 character map.
 

Detailed Description

These functions simplify some of the data handling for MFD & LED control.

Function Documentation

- -

◆ libx52util_convert_utf8_string()

+ +

◆ libx52util_convert_utf8_string()

@@ -128,7 +134,7 @@ Functions
diff --git a/group__x52dcomm.html b/group__x52dcomm.html index c7fb50f..8e6eef7 100644 --- a/group__x52dcomm.html +++ b/group__x52dcomm.html @@ -1,9 +1,9 @@ - + - - + + libx52: Daemon communication @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,50 +57,56 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Daemon communication
+
Daemon communication
- - +

+

Typedefs

-typedef int(* x52d_notify_callback_fn) (int argc, char **argv)
+typedef int(* x52d_notify_callback_fn) (int argc, char **argv)
 Notification callback function type.
 
- - - + + - - + + - - + + - - + + - - + +

+

Functions

int x52d_dial_command (const char *sock_path)
 Open a connection to the daemon command socket. More...
int x52d_dial_command (const char *sock_path)
 Open a connection to the daemon command socket.
 
int x52d_dial_notify (const char *sock_path)
 Open a connection to the daemon notify socket. More...
int x52d_dial_notify (const char *sock_path)
 Open a connection to the daemon notify socket.
 
int x52d_format_command (int argc, const char **argv, char *buffer, size_t buflen)
 Format a series of command strings into a buffer. More...
int x52d_format_command (int argc, const char **argv, char *buffer, size_t buflen)
 Format a series of command strings into a buffer.
 
int x52d_send_command (int sock_fd, char *buffer, size_t bufin, size_t bufout)
 Send a command to the daemon and retrieve the response. More...
int x52d_send_command (int sock_fd, char *buffer, size_t bufin, size_t bufout)
 Send a command to the daemon and retrieve the response.
 
int x52d_recv_notification (int sock_fd, x52d_notify_callback_fn callback)
 Receive a notification from the daemon. More...
int x52d_recv_notification (int sock_fd, x52d_notify_callback_fn callback)
 Receive a notification from the daemon.
 

Detailed Description

These functions are used to communicate with the X52 daemon.

Function Documentation

- -

◆ x52d_dial_command()

+ +

◆ x52d_dial_command()

@@ -136,8 +142,8 @@ Functions
- -

◆ x52d_dial_notify()

+ +

◆ x52d_dial_notify()

@@ -173,8 +179,8 @@ Functions
- -

◆ x52d_format_command()

+ +

◆ x52d_format_command()

@@ -229,8 +235,8 @@ Functions
- -

◆ x52d_recv_notification()

+ +

◆ x52d_recv_notification()

@@ -271,8 +277,8 @@ Functions
- -

◆ x52d_send_command()

+ +

◆ x52d_send_command()

@@ -331,7 +337,7 @@ Functions
diff --git a/index.html b/index.html index 5c996be..f4b2291 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,9 @@ - + - - + + libx52: Saitek X52/X52Pro drivers for Linux/Unix @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
@@ -57,14 +57,20 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
Saitek X52/X52Pro drivers for Linux/Unix
+
+
Saitek X52/X52Pro drivers for Linux/Unix

@@ -105,7 +111,7 @@ Application Programming Interface

diff --git a/jquery.js b/jquery.js index 103c32d..1dffb65 100644 --- a/jquery.js +++ b/jquery.js @@ -1,12 +1,11 @@ -/*! 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 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),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-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|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(p.childNodes),p.childNodes),t[p.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&&(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&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$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[S]=!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&&e.namespaceURI,n=e&&(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:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),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=S,!C.getElementsByName||!C.getElementsByName(S).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){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),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("!=",F)}),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},j=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==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,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]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[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){N(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=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(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)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.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 S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.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(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(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;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={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)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").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 _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.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(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.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?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.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=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.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,S.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)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.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"===S.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"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.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)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.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?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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){S.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});/** +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(y){"use strict";y.ui=y.ui||{};y.ui.version="1.13.2";var n,i=0,h=Array.prototype.hasOwnProperty,a=Array.prototype.slice;y.cleanData=(n=y.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=y._data(i,"events"))&&e.remove&&y(i).triggerHandler("remove");n(t)}),y.widget=function(t,i,e){var s,n,o,h={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=y.Widget),Array.isArray(e)&&(e=y.extend.apply(null,[{}].concat(e))),y.expr.pseudos[r.toLowerCase()]=function(t){return!!y.data(t,r)},y[a]=y[a]||{},s=y[a][t],n=y[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},y.extend(n,s,{version:e.version,_proto:y.extend({},e),_childConstructors:[]}),(o=new i).options=y.widget.extend({},o.options),y.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}h[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=y.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},h,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(y.each(s._childConstructors,function(t,e){var i=e.prototype;y.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),y.widget.bridge(t,n),n},y.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},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;n
").css({overflow:"hidden",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,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),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(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(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),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".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=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),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=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-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")];e<4;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;e
").css({overflow:"hidden"}),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:++e.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;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,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}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0 - + - - + + libx52: /home/runner/work/libx52/libx52/libx52/libx52.h File Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
libx52.h File Reference
+
libx52.h File Reference
@@ -81,32 +87,32 @@ $(function() {

Go to the source code of this file.

- - - + +

+

Typedefs

typedef struct libx52_device libx52_device
 Device context structure used by libx52. More...
typedef struct libx52_device libx52_device
 Device context structure used by libx52.
 
- - - - - } - } - } -

+

Enumerations

enum  libx52_clock_id { LIBX52_CLOCK_1 +
enum  libx52_clock_id { LIBX52_CLOCK_1 , LIBX52_CLOCK_2 , LIBX52_CLOCK_3 }
 List of supported clocks on the MFD. More...
 
enum  libx52_clock_format { LIBX52_CLOCK_FORMAT_12HR +
enum  libx52_clock_format { LIBX52_CLOCK_FORMAT_12HR , LIBX52_CLOCK_FORMAT_24HR }
 Supported clock formats. More...
 
enum  libx52_date_format { LIBX52_DATE_FORMAT_DDMMYY +
enum  libx52_date_format { LIBX52_DATE_FORMAT_DDMMYY , LIBX52_DATE_FORMAT_MMDDYY , LIBX52_DATE_FORMAT_YYMMDD }
 Supported date formats. More...
 
enum  libx52_led_id {
+
enum  libx52_led_id {
  LIBX52_LED_FIRE = 0x01 , LIBX52_LED_A = 0x02 , LIBX52_LED_B = 0x04 @@ -124,7 +130,7 @@ Enumerations
 Supported LED identifiers. More...
 
enum  libx52_led_state {
+
enum  libx52_led_state {
  LIBX52_LED_STATE_OFF , LIBX52_LED_STATE_ON , LIBX52_LED_STATE_RED @@ -135,7 +141,7 @@ Enumerations
 Supported LED states. More...
 
enum  libx52_error_code {
+
enum  libx52_error_code {
  LIBX52_SUCCESS = 0 , LIBX52_ERROR_INIT_FAILURE , LIBX52_ERROR_OUT_OF_MEMORY @@ -161,97 +167,97 @@ Enumerations
 LibX52 Error codes. More...
 
enum  libx52_feature { LIBX52_FEATURE_LED +
enum  libx52_feature { LIBX52_FEATURE_LED }
 Feature support for libx52. More...
 
- - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +

+

Functions

int libx52_init (libx52_device **dev)
 Initialize the X52 library. More...
int libx52_init (libx52_device **dev)
 Initialize the X52 library.
 
void libx52_exit (libx52_device *dev)
 Exit the library and free up any resources used. More...
void libx52_exit (libx52_device *dev)
 Exit the library and free up any resources used.
 
int libx52_connect (libx52_device *dev)
 Connect to the X52 device. More...
int libx52_connect (libx52_device *dev)
 Connect to the X52 device.
 
int libx52_disconnect (libx52_device *dev)
 Disconnect from the X52 device. More...
int libx52_disconnect (libx52_device *dev)
 Disconnect from the X52 device.
 
bool libx52_is_connected (libx52_device *dev)
 Check if joystick is connected. More...
bool libx52_is_connected (libx52_device *dev)
 Check if joystick is connected.
 
int libx52_set_text (libx52_device *x52, uint8_t line, const char *text, uint8_t length)
 Set the text on an MFD line. More...
int libx52_set_text (libx52_device *x52, uint8_t line, const char *text, uint8_t length)
 Set the text on an MFD line.
 
int libx52_set_led_state (libx52_device *x52, libx52_led_id led, libx52_led_state state)
 Set the LED state. More...
int libx52_set_led_state (libx52_device *x52, libx52_led_id led, libx52_led_state state)
 Set the LED state.
 
int libx52_set_clock (libx52_device *x52, time_t time, int local)
 Set the clock. More...
int libx52_set_clock (libx52_device *x52, time_t time, int local)
 Set the clock.
 
int libx52_set_clock_timezone (libx52_device *x52, libx52_clock_id clock, int offset)
 Set the timezone for the secondary and tertiary clocks. More...
int libx52_set_clock_timezone (libx52_device *x52, libx52_clock_id clock, int offset)
 Set the timezone for the secondary and tertiary clocks.
 
int libx52_set_clock_format (libx52_device *x52, libx52_clock_id clock, libx52_clock_format format)
 Set whether the clock is displayed in 12 hour or 24 hour format. More...
int libx52_set_clock_format (libx52_device *x52, libx52_clock_id clock, libx52_clock_format format)
 Set whether the clock is displayed in 12 hour or 24 hour format.
 
int libx52_set_time (libx52_device *x52, uint8_t hour, uint8_t minute)
 Set the hour and minute on clock 1. More...
int libx52_set_time (libx52_device *x52, uint8_t hour, uint8_t minute)
 Set the hour and minute on clock 1.
 
int libx52_set_date (libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy)
 Set the date. More...
int libx52_set_date (libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy)
 Set the date.
 
int libx52_set_date_format (libx52_device *x52, libx52_date_format format)
 Set the date format for the MFD date display. More...
int libx52_set_date_format (libx52_device *x52, libx52_date_format format)
 Set the date format for the MFD date display.
 
int libx52_set_brightness (libx52_device *x52, uint8_t mfd, uint16_t brightness)
 Set the MFD or LED brightness. More...
int libx52_set_brightness (libx52_device *x52, uint8_t mfd, uint16_t brightness)
 Set the MFD or LED brightness.
 
int libx52_set_shift (libx52_device *x52, uint8_t state)
 Set the state of the shift indicator. More...
int libx52_set_shift (libx52_device *x52, uint8_t state)
 Set the state of the shift indicator.
 
int libx52_set_blink (libx52_device *x52, uint8_t state)
 Set the blinking state. More...
int libx52_set_blink (libx52_device *x52, uint8_t state)
 Set the blinking state.
 
int libx52_update (libx52_device *x52)
 Update the X52. More...
int libx52_update (libx52_device *x52)
 Update the X52.
 
int libx52_vendor_command (libx52_device *x52, uint16_t index, uint16_t value)
 Write a raw vendor control packet. More...
int libx52_vendor_command (libx52_device *x52, uint16_t index, uint16_t value)
 Write a raw vendor control packet.
 
int libx52_check_feature (libx52_device *x52, libx52_feature feature)
 Check if the device supports the given feature. More...
int libx52_check_feature (libx52_device *x52, libx52_feature feature)
 Check if the device supports the given feature.
 
const char * libx52_strerror (libx52_error_code error)
 Return a string representation of the error code. More...
 
const char * libx52_clock_id_to_str (libx52_clock_id id)
 Returns a string representation of the clock ID. More...
 
const char * libx52_clock_format_to_str (libx52_clock_format format)
 Returns a string representation of the clock format. More...
 
const char * libx52_date_format_to_str (libx52_date_format format)
 Returns a string representation of the date format. More...
 
const char * libx52_led_id_to_str (libx52_led_id id)
 Returns a string representation of the LED. More...
 
const char * libx52_led_state_to_str (libx52_led_state state)
 Returns a string representation of the LED state. More...
 
const char * libx52_strerror (libx52_error_code error)
 Return a string representation of the error code.
 
const char * libx52_clock_id_to_str (libx52_clock_id id)
 Returns a string representation of the clock ID.
 
const char * libx52_clock_format_to_str (libx52_clock_format format)
 Returns a string representation of the clock format.
 
const char * libx52_date_format_to_str (libx52_date_format format)
 Returns a string representation of the date format.
 
const char * libx52_led_id_to_str (libx52_led_id id)
 Returns a string representation of the LED.
 
const char * libx52_led_state_to_str (libx52_led_state state)
 Returns a string representation of the LED state.
 

Detailed Description

Functions, structures and enumerations for the Saitek X52 MFD & LED driver library.

This file contains the type, enum and function prototypes for the Saitek X52 driver library. These functions allow an application to connect to a supported X52/X52Pro joystick and control the MFD and LEDs.

-
Author
Nirenjan Krishnan (niren.nosp@m.jan@.nosp@m.niren.nosp@m.jan..nosp@m.org)
+
Author
Nirenjan Krishnan (niren.nosp@m.jan@.nosp@m.niren.nosp@m.jan..nosp@m.org)
diff --git a/libx52_8h_source.html b/libx52_8h_source.html index dd1d1a8..c5f304a 100644 --- a/libx52_8h_source.html +++ b/libx52_8h_source.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/libx52/libx52.h Source File @@ -19,10 +19,9 @@
- - + @@ -31,22 +30,28 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ + +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
libx52.h
+
libx52.h
-Go to the documentation of this file.
1 /*
-
2  * Saitek X52 Pro MFD & LED driver
-
3  *
-
4  * Copyright (C) 2012-2020 Nirenjan Krishnan (nirenjan@nirenjan.org)
-
5  *
-
6  * SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
-
7  */
-
8 
-
20 #ifndef LIBX52_H
-
21 #define LIBX52_H
-
22 
-
23 #include <time.h>
-
24 #include <stdint.h>
-
25 #include <stdbool.h>
-
26 
-
27 #ifdef __cplusplus
-
28 extern "C" {
-
29 #endif
-
30 
-
35 struct libx52_device;
-
36 
-
46 typedef struct libx52_device libx52_device;
-
47 
-
52 typedef enum {
- -
55 
- -
58 
- - -
62 
-
67 typedef enum {
- -
70 
- - -
74 
-
79 typedef enum {
- -
82 
- -
85 
- - -
89 
-
94 typedef enum {
- -
97 
-
99  LIBX52_LED_A = 0x02,
-
100 
-
102  LIBX52_LED_B = 0x04,
-
103 
-
105  LIBX52_LED_D = 0x06,
-
106 
-
108  LIBX52_LED_E = 0x08,
-
109 
- -
112 
- -
115 
- -
118 
- -
121 
- -
124 
- -
127 } libx52_led_id;
-
128 
-
136 typedef enum {
- -
139 
- -
145 
- -
148 
- -
151 
- - -
155 
-
163 typedef enum {
- -
166 
- -
169 
- -
172 
- -
175 
- -
178 
- -
181 
- -
184 
- -
187 
- -
190 
- -
193 
- -
196 
- -
199 
- -
202 
- -
205 
- -
208 
- -
211 
- - -
215 
-
225 typedef enum {
- - -
229 
- -
279 
- -
291 
- -
321 
- -
334 
- -
355 
-
394 int libx52_set_text(libx52_device *x52, uint8_t line, const char *text, uint8_t length);
-
395 
- -
420  libx52_led_id led,
-
421  libx52_led_state state);
-
422 
-
459 int libx52_set_clock(libx52_device *x52, time_t time, int local);
-
460 
- -
492  libx52_clock_id clock,
-
493  int offset);
-
494 
- -
516  libx52_clock_id clock,
-
517  libx52_clock_format format);
-
518 
-
534 int libx52_set_time(libx52_device *x52, uint8_t hour, uint8_t minute);
-
535 
-
551 int libx52_set_date(libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy);
-
552 
- -
566 
-
590 int libx52_set_brightness(libx52_device *x52, uint8_t mfd, uint16_t brightness);
-
591 
-
605 int libx52_set_shift(libx52_device *x52, uint8_t state);
-
606 
-
619 int libx52_set_blink(libx52_device *x52, uint8_t state);
-
620 
- -
643 
-
659 int libx52_vendor_command(libx52_device *x52, uint16_t index, uint16_t value);
-
660 
- -
675 
-
694 const char * libx52_strerror(libx52_error_code error);
-
695 
- -
705 
- -
715 
- -
725 
- -
735 
- -
745 
-
748 #ifdef __cplusplus
-
749 }
-
750 #endif
-
751 
-
752 #endif /* !defined LIBX52_H */
+Go to the documentation of this file.
1/*
+
2 * Saitek X52 Pro MFD & LED driver
+
3 *
+
4 * Copyright (C) 2012-2020 Nirenjan Krishnan (nirenjan@nirenjan.org)
+
5 *
+
6 * SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
+
7 */
+
8
+
20#ifndef LIBX52_H
+
21#define LIBX52_H
+
22
+
23#include <time.h>
+
24#include <stdint.h>
+
25#include <stdbool.h>
+
26
+
27#ifdef __cplusplus
+
28extern "C" {
+
29#endif
+
30
+
35struct libx52_device;
+
36
+ +
47
+
+
52typedef enum {
+ +
55
+ +
58
+ + +
+
62
+ +
74
+ +
89
+
+
94typedef enum {
+ +
97
+ +
100
+ +
103
+ +
106
+ +
109
+ +
112
+ +
115
+ +
118
+ +
121
+ +
124
+ + +
+
128
+ +
155
+ +
215
+
+
225typedef enum {
+ + +
+
229
+ +
279
+ +
291
+ +
321
+ +
334
+ +
355
+
394int libx52_set_text(libx52_device *x52, uint8_t line, const char *text, uint8_t length);
+
395
+ +
420 libx52_led_id led,
+
421 libx52_led_state state);
+
422
+
459int libx52_set_clock(libx52_device *x52, time_t time, int local);
+
460
+ +
492 libx52_clock_id clock,
+
493 int offset);
+
494
+ +
516 libx52_clock_id clock,
+
517 libx52_clock_format format);
+
518
+
534int libx52_set_time(libx52_device *x52, uint8_t hour, uint8_t minute);
+
535
+
551int libx52_set_date(libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy);
+
552
+ +
566
+
590int libx52_set_brightness(libx52_device *x52, uint8_t mfd, uint16_t brightness);
+
591
+
605int libx52_set_shift(libx52_device *x52, uint8_t state);
+
606
+
619int libx52_set_blink(libx52_device *x52, uint8_t state);
+
620
+ +
643
+
659int libx52_vendor_command(libx52_device *x52, uint16_t index, uint16_t value);
+
660
+ +
675
+ +
695
+ +
705
+ +
715
+ +
725
+ +
735
+ +
745
+
748#ifdef __cplusplus
+
749}
+
750#endif
+
751
+
752#endif /* !defined LIBX52_H */
int libx52_set_clock_timezone(libx52_device *x52, libx52_clock_id clock, int offset)
Set the timezone for the secondary and tertiary clocks.
-
libx52_clock_id
List of supported clocks on the MFD.
Definition: libx52.h:52
-
libx52_clock_format
Supported clock formats.
Definition: libx52.h:67
-
libx52_date_format
Supported date formats.
Definition: libx52.h:79
+
libx52_clock_id
List of supported clocks on the MFD.
Definition libx52.h:52
+
libx52_clock_format
Supported clock formats.
Definition libx52.h:67
+
libx52_date_format
Supported date formats.
Definition libx52.h:79
int libx52_set_clock(libx52_device *x52, time_t time, int local)
Set the clock.
int libx52_set_time(libx52_device *x52, uint8_t hour, uint8_t minute)
Set the hour and minute on clock 1.
int libx52_set_date(libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy)
Set the date.
int libx52_set_date_format(libx52_device *x52, libx52_date_format format)
Set the date format for the MFD date display.
int libx52_set_clock_format(libx52_device *x52, libx52_clock_id clock, libx52_clock_format format)
Set whether the clock is displayed in 12 hour or 24 hour format.
-
@ LIBX52_CLOCK_3
Definition: libx52.h:60
-
@ LIBX52_CLOCK_1
Definition: libx52.h:54
-
@ LIBX52_CLOCK_2
Definition: libx52.h:57
-
@ LIBX52_CLOCK_FORMAT_24HR
Definition: libx52.h:72
-
@ LIBX52_CLOCK_FORMAT_12HR
Definition: libx52.h:69
-
@ LIBX52_DATE_FORMAT_DDMMYY
Definition: libx52.h:81
-
@ LIBX52_DATE_FORMAT_YYMMDD
Definition: libx52.h:87
-
@ LIBX52_DATE_FORMAT_MMDDYY
Definition: libx52.h:84
+
@ LIBX52_CLOCK_3
Definition libx52.h:60
+
@ LIBX52_CLOCK_1
Definition libx52.h:54
+
@ LIBX52_CLOCK_2
Definition libx52.h:57
+
@ LIBX52_CLOCK_FORMAT_24HR
Definition libx52.h:72
+
@ LIBX52_CLOCK_FORMAT_12HR
Definition libx52.h:69
+
@ LIBX52_DATE_FORMAT_DDMMYY
Definition libx52.h:81
+
@ LIBX52_DATE_FORMAT_YYMMDD
Definition libx52.h:87
+
@ LIBX52_DATE_FORMAT_MMDDYY
Definition libx52.h:84
int libx52_connect(libx52_device *dev)
Connect to the X52 device.
int libx52_disconnect(libx52_device *dev)
Disconnect from the X52 device.
bool libx52_is_connected(libx52_device *dev)
Check if joystick is connected.
void libx52_exit(libx52_device *dev)
Exit the library and free up any resources used.
-
struct libx52_device libx52_device
Device context structure used by libx52.
Definition: libx52.h:46
+
struct libx52_device libx52_device
Device context structure used by libx52.
Definition libx52.h:46
int libx52_init(libx52_device **dev)
Initialize the X52 library.
int libx52_set_led_state(libx52_device *x52, libx52_led_id led, libx52_led_state state)
Set the LED state.
int libx52_set_shift(libx52_device *x52, uint8_t state)
Set the state of the shift indicator.
int libx52_set_text(libx52_device *x52, uint8_t line, const char *text, uint8_t length)
Set the text on an MFD line.
int libx52_set_blink(libx52_device *x52, uint8_t state)
Set the blinking state.
int libx52_set_brightness(libx52_device *x52, uint8_t mfd, uint16_t brightness)
Set the MFD or LED brightness.
-
libx52_led_state
Supported LED states.
Definition: libx52.h:136
-
libx52_led_id
Supported LED identifiers.
Definition: libx52.h:94
-
@ LIBX52_LED_STATE_OFF
Definition: libx52.h:138
-
@ LIBX52_LED_STATE_GREEN
Definition: libx52.h:153
-
@ LIBX52_LED_STATE_ON
Definition: libx52.h:144
-
@ LIBX52_LED_STATE_RED
Definition: libx52.h:147
-
@ LIBX52_LED_STATE_AMBER
Definition: libx52.h:150
-
@ LIBX52_LED_POV
Definition: libx52.h:120
-
@ LIBX52_LED_T3
Definition: libx52.h:117
-
@ LIBX52_LED_D
Definition: libx52.h:105
-
@ LIBX52_LED_T2
Definition: libx52.h:114
-
@ LIBX52_LED_CLUTCH
Definition: libx52.h:123
-
@ LIBX52_LED_A
Definition: libx52.h:99
-
@ LIBX52_LED_B
Definition: libx52.h:102
-
@ LIBX52_LED_E
Definition: libx52.h:108
-
@ LIBX52_LED_T1
Definition: libx52.h:111
-
@ LIBX52_LED_FIRE
Definition: libx52.h:96
-
@ LIBX52_LED_THROTTLE
Definition: libx52.h:126
+
libx52_led_state
Supported LED states.
Definition libx52.h:136
+
libx52_led_id
Supported LED identifiers.
Definition libx52.h:94
+
@ LIBX52_LED_STATE_OFF
Definition libx52.h:138
+
@ LIBX52_LED_STATE_GREEN
Definition libx52.h:153
+
@ LIBX52_LED_STATE_ON
Definition libx52.h:144
+
@ LIBX52_LED_STATE_RED
Definition libx52.h:147
+
@ LIBX52_LED_STATE_AMBER
Definition libx52.h:150
+
@ LIBX52_LED_POV
Definition libx52.h:120
+
@ LIBX52_LED_T3
Definition libx52.h:117
+
@ LIBX52_LED_D
Definition libx52.h:105
+
@ LIBX52_LED_T2
Definition libx52.h:114
+
@ LIBX52_LED_CLUTCH
Definition libx52.h:123
+
@ LIBX52_LED_A
Definition libx52.h:99
+
@ LIBX52_LED_B
Definition libx52.h:102
+
@ LIBX52_LED_E
Definition libx52.h:108
+
@ LIBX52_LED_T1
Definition libx52.h:111
+
@ LIBX52_LED_FIRE
Definition libx52.h:96
+
@ LIBX52_LED_THROTTLE
Definition libx52.h:126
int libx52_check_feature(libx52_device *x52, libx52_feature feature)
Check if the device supports the given feature.
int libx52_update(libx52_device *x52)
Update the X52.
-
libx52_error_code
LibX52 Error codes.
Definition: libx52.h:163
-
libx52_feature
Feature support for libx52.
Definition: libx52.h:225
+
libx52_error_code
LibX52 Error codes.
Definition libx52.h:163
+
libx52_feature
Feature support for libx52.
Definition libx52.h:225
int libx52_vendor_command(libx52_device *x52, uint16_t index, uint16_t value)
Write a raw vendor control packet.
-
@ LIBX52_ERROR_INVALID_PARAM
Definition: libx52.h:174
-
@ LIBX52_ERROR_INTERRUPTED
Definition: libx52.h:213
-
@ LIBX52_ERROR_IO
Definition: libx52.h:189
-
@ LIBX52_ERROR_INIT_FAILURE
Definition: libx52.h:168
-
@ LIBX52_ERROR_NOT_FOUND
Definition: libx52.h:198
-
@ LIBX52_ERROR_TIMEOUT
Definition: libx52.h:204
-
@ LIBX52_ERROR_USB_FAILURE
Definition: libx52.h:186
-
@ LIBX52_SUCCESS
Definition: libx52.h:165
-
@ LIBX52_ERROR_NOT_SUPPORTED
Definition: libx52.h:177
-
@ LIBX52_ERROR_TRY_AGAIN
Definition: libx52.h:180
-
@ LIBX52_ERROR_OUT_OF_RANGE
Definition: libx52.h:183
-
@ LIBX52_ERROR_OVERFLOW
Definition: libx52.h:207
-
@ LIBX52_ERROR_PERM
Definition: libx52.h:192
-
@ LIBX52_ERROR_PIPE
Definition: libx52.h:210
-
@ LIBX52_ERROR_NO_DEVICE
Definition: libx52.h:195
-
@ LIBX52_ERROR_OUT_OF_MEMORY
Definition: libx52.h:171
-
@ LIBX52_ERROR_BUSY
Definition: libx52.h:201
-
@ LIBX52_FEATURE_LED
Definition: libx52.h:227
-
const char * libx52_led_id_to_str(libx52_led_id id)
Returns a string representation of the LED.
-
const char * libx52_led_state_to_str(libx52_led_state state)
Returns a string representation of the LED state.
-
const char * libx52_clock_format_to_str(libx52_clock_format format)
Returns a string representation of the clock format.
-
const char * libx52_strerror(libx52_error_code error)
Return a string representation of the error code.
-
const char * libx52_clock_id_to_str(libx52_clock_id id)
Returns a string representation of the clock ID.
-
const char * libx52_date_format_to_str(libx52_date_format format)
Returns a string representation of the date format.
+
@ LIBX52_ERROR_INVALID_PARAM
Definition libx52.h:174
+
@ LIBX52_ERROR_INTERRUPTED
Definition libx52.h:213
+
@ LIBX52_ERROR_IO
Definition libx52.h:189
+
@ LIBX52_ERROR_INIT_FAILURE
Definition libx52.h:168
+
@ LIBX52_ERROR_NOT_FOUND
Definition libx52.h:198
+
@ LIBX52_ERROR_TIMEOUT
Definition libx52.h:204
+
@ LIBX52_ERROR_USB_FAILURE
Definition libx52.h:186
+
@ LIBX52_SUCCESS
Definition libx52.h:165
+
@ LIBX52_ERROR_NOT_SUPPORTED
Definition libx52.h:177
+
@ LIBX52_ERROR_TRY_AGAIN
Definition libx52.h:180
+
@ LIBX52_ERROR_OUT_OF_RANGE
Definition libx52.h:183
+
@ LIBX52_ERROR_OVERFLOW
Definition libx52.h:207
+
@ LIBX52_ERROR_PERM
Definition libx52.h:192
+
@ LIBX52_ERROR_PIPE
Definition libx52.h:210
+
@ LIBX52_ERROR_NO_DEVICE
Definition libx52.h:195
+
@ LIBX52_ERROR_OUT_OF_MEMORY
Definition libx52.h:171
+
@ LIBX52_ERROR_BUSY
Definition libx52.h:201
+
@ LIBX52_FEATURE_LED
Definition libx52.h:227
+
const char * libx52_led_id_to_str(libx52_led_id id)
Returns a string representation of the LED.
+
const char * libx52_strerror(libx52_error_code error)
Return a string representation of the error code.
+
const char * libx52_led_state_to_str(libx52_led_state state)
Returns a string representation of the LED state.
+
const char * libx52_clock_id_to_str(libx52_clock_id id)
Returns a string representation of the clock ID.
+
const char * libx52_clock_format_to_str(libx52_clock_format format)
Returns a string representation of the clock format.
+
const char * libx52_date_format_to_str(libx52_date_format format)
Returns a string representation of the date format.
diff --git a/libx52_caveats.html b/libx52_caveats.html index c7eab34..a94129d 100644 --- a/libx52_caveats.html +++ b/libx52_caveats.html @@ -1,9 +1,9 @@ - + - - + + libx52: Caveats @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
Caveats
+
+
Caveats

@@ -80,7 +86,7 @@ LED Support

diff --git a/libx52_integration.html b/libx52_integration.html index f204a23..6409964 100644 --- a/libx52_integration.html +++ b/libx52_integration.html @@ -1,9 +1,9 @@ - + - - + + libx52: Integration @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
Integration
+
+
Integration

libx52 performs all its operations with a device context pointer. The application must call libx52_init before performing any operation, and must call libx52_exit prior to terminating.

@@ -72,22 +78,22 @@ $(function() {

Example Initialization/Deinitialization Code

#include <libx52.h>
-
libx52_device* init_libx52(void)
+
libx52_device* init_libx52(void)
{
- +
int rc;
// Initialize the libx52 library
-
rc = libx52_init(&dev);
-
if (rc != LIBX52_SUCCESS) {
-
fputs(libx52_strerror(rc), stderr);
+
rc = libx52_init(&dev);
+
if (rc != LIBX52_SUCCESS) {
+
fputs(libx52_strerror(rc), stderr);
return NULL;
}
// Connect to the supported joystick
-
rc = libx52_connect(dev);
-
if (rc != LIBX52_SUCCESS) {
-
fputs(libx52_strerror(rc), stderr);
+
rc = libx52_connect(dev);
+
if (rc != LIBX52_SUCCESS) {
+
fputs(libx52_strerror(rc), stderr);
// A failure usually just means that there is no joystick connected
// Look at the return codes for more information.
}
@@ -96,36 +102,36 @@ $(function() {
}
// Close the library and any associated devices
- +
int libx52_connect(libx52_device *dev)
Connect to the X52 device.
void libx52_exit(libx52_device *dev)
Exit the library and free up any resources used.
-
struct libx52_device libx52_device
Device context structure used by libx52.
Definition: libx52.h:46
+
struct libx52_device libx52_device
Device context structure used by libx52.
Definition libx52.h:46
int libx52_init(libx52_device **dev)
Initialize the X52 library.
-
@ LIBX52_SUCCESS
Definition: libx52.h:165
-
const char * libx52_strerror(libx52_error_code error)
Return a string representation of the error code.
+
@ LIBX52_SUCCESS
Definition libx52.h:165
+
const char * libx52_strerror(libx52_error_code error)
Return a string representation of the error code.
Functions, structures and enumerations for the Saitek X52 MFD & LED driver library.

Joystick Updates

Most libx52 functions to update the joystick state do not directly write to the connected joystick, but only update internal data structures within the device context. In order to actually update the joystick, the application must call libx52_update. This function writes the updates to the joystick and resets any internal state.

Example

-
libx52_set_text(dev, 0, " Saitek ", 16);
-
libx52_set_text(dev, 1, " X52 Flight ", 16);
-
libx52_set_text(dev, 2, " Control System ", 16);
- +
libx52_set_text(dev, 0, " Saitek ", 16);
+
libx52_set_text(dev, 1, " X52 Flight ", 16);
+
libx52_set_text(dev, 2, " Control System ", 16);
+
int libx52_set_text(libx52_device *x52, uint8_t line, const char *text, uint8_t length)
Set the text on an MFD line.
int libx52_update(libx52_device *x52)
Update the X52.

Error handling

Most libx52 functions return a standard libx52_error_code integer value that indicates the status of the operation. As long as the operation succeeded, the function will return LIBX52_SUCCESS. Other values returned indicate a failure of some sort.

-

libx52_strerror can convert the return code into a descriptive string that may be displayed to users.

+

libx52_strerror can convert the return code into a descriptive string that may be displayed to users.

Internationalization of error strings

-

libx52_strerror automatically handles internationalization. As long as your application sets up the locale correctly, and the error strings have been translated to that locale, the returned strings will correspond to the translated values for your locale.

+

libx52_strerror automatically handles internationalization. As long as your application sets up the locale correctly, and the error strings have been translated to that locale, the returned strings will correspond to the translated values for your locale.

diff --git a/libx52io_8h.html b/libx52io_8h.html index 665e917..457d852 100644 --- a/libx52io_8h.html +++ b/libx52io_8h.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/libx52io/libx52io.h File Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
libx52io.h File Reference
+
libx52io.h File Reference
@@ -82,21 +88,21 @@ $(function() {

Go to the source code of this file.

-

+

Data Structures

struct  libx52io_report
 X52 HID Report. More...
 
- - - + +

+

Typedefs

typedef struct libx52io_context libx52io_context
 Device context structure used by libx52io. More...
typedef struct libx52io_context libx52io_context
 Device context structure used by libx52io.
 
- - } - } -

+

Enumerations

enum  libx52io_error_code {
+
enum  libx52io_error_code {
  LIBX52IO_SUCCESS , LIBX52IO_ERROR_INIT_FAILURE , LIBX52IO_ERROR_NO_DEVICE @@ -109,7 +115,7 @@ Enumerations
 libx52 IO error codes More...
 
enum  libx52io_axis {
+
enum  libx52io_axis {
  LIBX52IO_AXIS_X , LIBX52IO_AXIS_Y , LIBX52IO_AXIS_RZ @@ -128,7 +134,7 @@ Enumerations
 X52 Axis definitions. More...
 
enum  libx52io_button {
+
enum  libx52io_button {
  LIBX52IO_BTN_TRIGGER , LIBX52IO_BTN_TRIGGER_2 , LIBX52IO_BTN_FIRE @@ -183,65 +189,65 @@ Enumerations
 X52 Button definitions. More...
 
- - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - - - - - - - - - + + + + + + + + +

+

Functions

int libx52io_init (libx52io_context **ctx)
 Initialize the IO library. More...
int libx52io_init (libx52io_context **ctx)
 Initialize the IO library.
 
void libx52io_exit (libx52io_context *ctx)
 Exit the library and free up any resources used. More...
void libx52io_exit (libx52io_context *ctx)
 Exit the library and free up any resources used.
 
int libx52io_open (libx52io_context *ctx)
 Open a connection to a supported joystick. More...
int libx52io_open (libx52io_context *ctx)
 Open a connection to a supported joystick.
 
int libx52io_close (libx52io_context *ctx)
 Close an existing connection to a supported joystick. More...
int libx52io_close (libx52io_context *ctx)
 Close an existing connection to a supported joystick.
 
int libx52io_read_timeout (libx52io_context *ctx, libx52io_report *report, int timeout)
 Read and parse a HID report. More...
int libx52io_read_timeout (libx52io_context *ctx, libx52io_report *report, int timeout)
 Read and parse a HID report.
 
int libx52io_read (libx52io_context *ctx, libx52io_report *report)
 Read and parse a HID report. More...
int libx52io_read (libx52io_context *ctx, libx52io_report *report)
 Read and parse a HID report.
 
int libx52io_get_axis_range (libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max)
 Retrieve the range of an axis. More...
int libx52io_get_axis_range (libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max)
 Retrieve the range of an axis.
 
const char * libx52io_strerror (libx52io_error_code code)
 Get the string representation of an error code. More...
 
const char * libx52io_axis_to_str (libx52io_axis axis)
 Get the string representation of an axis. More...
 
const char * libx52io_button_to_str (libx52io_button button)
 Get the string representation of a button. More...
 
uint16_t libx52io_get_vendor_id (libx52io_context *ctx)
 Get the vendor ID of the connected X52 device. More...
const char * libx52io_strerror (libx52io_error_code code)
 Get the string representation of an error code.
 
const char * libx52io_axis_to_str (libx52io_axis axis)
 Get the string representation of an axis.
 
const char * libx52io_button_to_str (libx52io_button button)
 Get the string representation of a button.
 
uint16_t libx52io_get_vendor_id (libx52io_context *ctx)
 Get the vendor ID of the connected X52 device.
 
uint16_t libx52io_get_product_id (libx52io_context *ctx)
 Get the product ID of the connected X52 device. More...
uint16_t libx52io_get_product_id (libx52io_context *ctx)
 Get the product ID of the connected X52 device.
 
uint16_t libx52io_get_device_version (libx52io_context *ctx)
 Get the device version of the connected X52 device. More...
uint16_t libx52io_get_device_version (libx52io_context *ctx)
 Get the device version of the connected X52 device.
 
const char * libx52io_get_manufacturer_string (libx52io_context *ctx)
 Get the manufacturer string of the connected X52 device. More...
 
const char * libx52io_get_product_string (libx52io_context *ctx)
 Get the product string of the connected X52 device. More...
 
const char * libx52io_get_serial_number_string (libx52io_context *ctx)
 Get the serial number of the connected X52 device. More...
 
const char * libx52io_get_manufacturer_string (libx52io_context *ctx)
 Get the manufacturer string of the connected X52 device.
 
const char * libx52io_get_product_string (libx52io_context *ctx)
 Get the product string of the connected X52 device.
 
const char * libx52io_get_serial_number_string (libx52io_context *ctx)
 Get the serial number of the connected X52 device.
 

Detailed Description

Functions, structures and enumerations for the Saitek X52 IO driver library.

This file contains the type, enum and function prototypes for the Saitek X52 IO driver library. These functions allow an application to connect to a supported X52/X52Pro joystick and read the state of the buttons and axes.

-
Author
Nirenjan Krishnan (niren.nosp@m.jan@.nosp@m.niren.nosp@m.jan..nosp@m.org)
+
Author
Nirenjan Krishnan (niren.nosp@m.jan@.nosp@m.niren.nosp@m.jan..nosp@m.org)
diff --git a/libx52io_8h_source.html b/libx52io_8h_source.html index 3ad417c..d481085 100644 --- a/libx52io_8h_source.html +++ b/libx52io_8h_source.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/libx52io/libx52io.h Source File @@ -19,10 +19,9 @@
- - + @@ -31,22 +30,28 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ + +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
libx52io.h
+
libx52io.h
-Go to the documentation of this file.
1 /*
-
2  * Saitek X52 IO driver
-
3  *
-
4  * Copyright (C) 2012-2020 Nirenjan Krishnan (nirenjan@nirenjan.org)
-
5  *
-
6  * SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
-
7  */
-
8 
-
20 #ifndef LIBX52IO_H
-
21 #define LIBX52IO_H
-
22 
-
23 #include <stdint.h>
-
24 #include <stdbool.h>
-
25 
-
26 #ifdef __cplusplus
-
27 extern "C" {
-
28 #endif
-
29 
-
42 struct libx52io_context;
-
43 
-
51 typedef struct libx52io_context libx52io_context;
-
52 
-
58 typedef enum {
- -
61 
- -
64 
- -
67 
- -
70 
- -
73 
- -
76 
- - -
80 
-
84 typedef enum {
- -
87 
- -
90 
- -
93 
- -
96 
- -
99 
- -
102 
- -
105 
- -
108 
- -
111 
- -
114 
- -
117 
-
118  LIBX52IO_AXIS_MAX
-
119 } libx52io_axis;
-
120 
-
124 typedef enum {
- -
127 
- -
130 
- -
133 
- -
136 
- -
139 
- -
142 
- -
145 
- -
148 
- -
151 
- -
154 
- -
157 
- -
160 
- -
163 
- -
166 
- -
169 
- -
172 
- -
175 
- -
178 
- -
181 
- -
184 
- -
187 
- -
190 
- -
193 
- -
196 
- -
199 
- -
202 
- -
205 
- -
208 
- -
211 
- -
214 
- -
217 
- -
220 
- -
223 
- -
226 
- -
229 
- -
232 
- -
235 
- -
238 
- -
241 
-
242  LIBX52IO_BUTTON_MAX
- -
244 
- -
252  int32_t axis[LIBX52IO_AXIS_MAX];
-
253 
-
255  bool button[LIBX52IO_BUTTON_MAX];
-
256 
-
258  uint8_t mode;
-
259 
-
261  uint8_t hat;
-
262 };
-
263 
-
269 typedef struct libx52io_report libx52io_report;
-
270 
- -
297 
- -
309 
- -
326 
- -
340 
- -
361 
- -
379 
-
397 int libx52io_get_axis_range(libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max);
-
398 
- -
407 
- -
417 
- -
427 
- -
436 
- -
445 
- -
454 
- -
467 
- -
480 
- -
493 
-
496 #ifdef __cplusplus
-
497 }
-
498 #endif
-
499 
-
500 #endif // !defined LIBX52IO_H
+Go to the documentation of this file.
1/*
+
2 * Saitek X52 IO driver
+
3 *
+
4 * Copyright (C) 2012-2020 Nirenjan Krishnan (nirenjan@nirenjan.org)
+
5 *
+
6 * SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
+
7 */
+
8
+
20#ifndef LIBX52IO_H
+
21#define LIBX52IO_H
+
22
+
23#include <stdint.h>
+
24#include <stdbool.h>
+
25
+
26#ifdef __cplusplus
+
27extern "C" {
+
28#endif
+
29
+
42struct libx52io_context;
+
43
+ +
52
+ +
80
+ +
120
+ +
244
+
+ +
252 int32_t axis[LIBX52IO_AXIS_MAX];
+
253
+
255 bool button[LIBX52IO_BUTTON_MAX];
+
256
+
258 uint8_t mode;
+
259
+
261 uint8_t hat;
+
262};
+
+
263
+
269typedef struct libx52io_report libx52io_report;
+
270
+ +
297
+ +
309
+ +
326
+ +
340
+ +
361
+ +
379
+
397int libx52io_get_axis_range(libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max);
+
398
+ +
407
+ +
417
+ +
427
+ +
436
+ +
445
+ +
454
+ +
467
+ +
480
+ +
493
+
496#ifdef __cplusplus
+
497}
+
498#endif
+
499
+
500#endif // !defined LIBX52IO_H
uint16_t libx52io_get_product_id(libx52io_context *ctx)
Get the product ID of the connected X52 device.
-
const char * libx52io_get_product_string(libx52io_context *ctx)
Get the product string of the connected X52 device.
-
libx52io_button
X52 Button definitions.
Definition: libx52io.h:124
+
libx52io_button
X52 Button definitions.
Definition libx52io.h:124
int libx52io_init(libx52io_context **ctx)
Initialize the IO library.
-
const char * libx52io_strerror(libx52io_error_code code)
Get the string representation of an error code.
-
const char * libx52io_button_to_str(libx52io_button button)
Get the string representation of a button.
int libx52io_read(libx52io_context *ctx, libx52io_report *report)
Read and parse a HID report.
void libx52io_exit(libx52io_context *ctx)
Exit the library and free up any resources used.
-
const char * libx52io_get_manufacturer_string(libx52io_context *ctx)
Get the manufacturer string of the connected X52 device.
uint16_t libx52io_get_device_version(libx52io_context *ctx)
Get the device version of the connected X52 device.
-
libx52io_axis
X52 Axis definitions.
Definition: libx52io.h:84
+
libx52io_axis
X52 Axis definitions.
Definition libx52io.h:84
uint16_t libx52io_get_vendor_id(libx52io_context *ctx)
Get the vendor ID of the connected X52 device.
+
const char * libx52io_get_serial_number_string(libx52io_context *ctx)
Get the serial number of the connected X52 device.
int libx52io_close(libx52io_context *ctx)
Close an existing connection to a supported joystick.
-
libx52io_error_code
libx52 IO error codes
Definition: libx52io.h:58
-
const char * libx52io_axis_to_str(libx52io_axis axis)
Get the string representation of an axis.
+
libx52io_error_code
libx52 IO error codes
Definition libx52io.h:58
int libx52io_read_timeout(libx52io_context *ctx, libx52io_report *report, int timeout)
Read and parse a HID report.
-
struct libx52io_context libx52io_context
Device context structure used by libx52io.
Definition: libx52io.h:51
+
const char * libx52io_get_product_string(libx52io_context *ctx)
Get the product string of the connected X52 device.
+
struct libx52io_context libx52io_context
Device context structure used by libx52io.
Definition libx52io.h:51
+
const char * libx52io_button_to_str(libx52io_button button)
Get the string representation of a button.
int libx52io_get_axis_range(libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max)
Retrieve the range of an axis.
-
const char * libx52io_get_serial_number_string(libx52io_context *ctx)
Get the serial number of the connected X52 device.
+
const char * libx52io_axis_to_str(libx52io_axis axis)
Get the string representation of an axis.
+
const char * libx52io_get_manufacturer_string(libx52io_context *ctx)
Get the manufacturer string of the connected X52 device.
int libx52io_open(libx52io_context *ctx)
Open a connection to a supported joystick.
-
@ LIBX52IO_BTN_FIRE
Definition: libx52io.h:132
-
@ LIBX52IO_BTN_T1_DN
Definition: libx52io.h:156
-
@ LIBX52IO_BTN_TRIGGER_2
Definition: libx52io.h:129
-
@ LIBX52IO_BTN_POV_1_S
Definition: libx52io.h:177
-
@ LIBX52IO_BTN_MODE_1
Definition: libx52io.h:234
-
@ LIBX52IO_BTN_T3_UP
Definition: libx52io.h:165
-
@ LIBX52IO_BTN_MOUSE_PRIMARY
Definition: libx52io.h:198
-
@ LIBX52IO_BTN_A
Definition: libx52io.h:138
-
@ LIBX52IO_BTN_B
Definition: libx52io.h:141
-
@ LIBX52IO_BTN_PG_UP
Definition: libx52io.h:219
-
@ LIBX52IO_BTN_POV_2_S
Definition: libx52io.h:189
-
@ LIBX52IO_BTN_T2_DN
Definition: libx52io.h:162
-
@ LIBX52IO_BTN_TRIGGER
Definition: libx52io.h:126
-
@ LIBX52IO_BTN_MOUSE_SCROLL_UP
Definition: libx52io.h:204
-
@ LIBX52IO_BTN_POV_2_E
Definition: libx52io.h:186
-
@ LIBX52IO_BTN_MOUSE_SCROLL_DN
Definition: libx52io.h:207
-
@ LIBX52IO_BTN_SELECT
Definition: libx52io.h:231
-
@ LIBX52IO_BTN_E
Definition: libx52io.h:150
-
@ LIBX52IO_BTN_DN
Definition: libx52io.h:228
-
@ LIBX52IO_BTN_POV_1_N
Definition: libx52io.h:171
-
@ LIBX52IO_BTN_POV_2_N
Definition: libx52io.h:183
-
@ LIBX52IO_BTN_PG_DN
Definition: libx52io.h:222
-
@ LIBX52IO_BTN_POV_1_E
Definition: libx52io.h:174
-
@ LIBX52IO_BTN_RESET
Definition: libx52io.h:216
-
@ LIBX52IO_BTN_POV_2_W
Definition: libx52io.h:192
-
@ LIBX52IO_BTN_CLUTCH
Definition: libx52io.h:195
-
@ LIBX52IO_BTN_MODE_2
Definition: libx52io.h:237
-
@ LIBX52IO_BTN_T1_UP
Definition: libx52io.h:153
-
@ LIBX52IO_BTN_MODE_3
Definition: libx52io.h:240
-
@ LIBX52IO_BTN_T3_DN
Definition: libx52io.h:168
-
@ LIBX52IO_BTN_FUNCTION
Definition: libx52io.h:210
-
@ LIBX52IO_BTN_PINKY
Definition: libx52io.h:135
-
@ LIBX52IO_BTN_C
Definition: libx52io.h:144
-
@ LIBX52IO_BTN_POV_1_W
Definition: libx52io.h:180
-
@ LIBX52IO_BTN_START_STOP
Definition: libx52io.h:213
-
@ LIBX52IO_BTN_D
Definition: libx52io.h:147
-
@ LIBX52IO_BTN_MOUSE_SECONDARY
Definition: libx52io.h:201
-
@ LIBX52IO_BTN_UP
Definition: libx52io.h:225
-
@ LIBX52IO_BTN_T2_UP
Definition: libx52io.h:159
-
@ LIBX52IO_AXIS_X
Definition: libx52io.h:86
-
@ LIBX52IO_AXIS_THUMBY
Definition: libx52io.h:110
-
@ LIBX52IO_AXIS_RX
Definition: libx52io.h:98
-
@ LIBX52IO_AXIS_RZ
Definition: libx52io.h:92
-
@ LIBX52IO_AXIS_SLIDER
Definition: libx52io.h:104
-
@ LIBX52IO_AXIS_HATX
Definition: libx52io.h:113
-
@ LIBX52IO_AXIS_Y
Definition: libx52io.h:89
-
@ LIBX52IO_AXIS_THUMBX
Definition: libx52io.h:107
-
@ LIBX52IO_AXIS_Z
Definition: libx52io.h:95
-
@ LIBX52IO_AXIS_RY
Definition: libx52io.h:101
-
@ LIBX52IO_AXIS_HATY
Definition: libx52io.h:116
-
@ LIBX52IO_ERROR_INVALID
Definition: libx52io.h:69
-
@ LIBX52IO_ERROR_INIT_FAILURE
Definition: libx52io.h:63
-
@ LIBX52IO_ERROR_CONN
Definition: libx52io.h:72
-
@ LIBX52IO_ERROR_IO
Definition: libx52io.h:75
-
@ LIBX52IO_ERROR_NO_DEVICE
Definition: libx52io.h:66
-
@ LIBX52IO_SUCCESS
Definition: libx52io.h:60
-
@ LIBX52IO_ERROR_TIMEOUT
Definition: libx52io.h:78
-
X52 HID Report.
Definition: libx52io.h:250
-
uint8_t mode
Definition: libx52io.h:258
-
int32_t axis[LIBX52IO_AXIS_MAX]
Definition: libx52io.h:252
-
uint8_t hat
Definition: libx52io.h:261
-
bool button[LIBX52IO_BUTTON_MAX]
Definition: libx52io.h:255
+
const char * libx52io_strerror(libx52io_error_code code)
Get the string representation of an error code.
+
@ LIBX52IO_BTN_FIRE
Definition libx52io.h:132
+
@ LIBX52IO_BTN_T1_DN
Definition libx52io.h:156
+
@ LIBX52IO_BTN_TRIGGER_2
Definition libx52io.h:129
+
@ LIBX52IO_BTN_POV_1_S
Definition libx52io.h:177
+
@ LIBX52IO_BTN_MODE_1
Definition libx52io.h:234
+
@ LIBX52IO_BTN_T3_UP
Definition libx52io.h:165
+
@ LIBX52IO_BTN_MOUSE_PRIMARY
Definition libx52io.h:198
+
@ LIBX52IO_BTN_A
Definition libx52io.h:138
+
@ LIBX52IO_BTN_B
Definition libx52io.h:141
+
@ LIBX52IO_BTN_PG_UP
Definition libx52io.h:219
+
@ LIBX52IO_BTN_POV_2_S
Definition libx52io.h:189
+
@ LIBX52IO_BTN_T2_DN
Definition libx52io.h:162
+
@ LIBX52IO_BTN_TRIGGER
Definition libx52io.h:126
+
@ LIBX52IO_BTN_MOUSE_SCROLL_UP
Definition libx52io.h:204
+
@ LIBX52IO_BTN_POV_2_E
Definition libx52io.h:186
+
@ LIBX52IO_BTN_MOUSE_SCROLL_DN
Definition libx52io.h:207
+
@ LIBX52IO_BTN_SELECT
Definition libx52io.h:231
+
@ LIBX52IO_BTN_E
Definition libx52io.h:150
+
@ LIBX52IO_BTN_DN
Definition libx52io.h:228
+
@ LIBX52IO_BTN_POV_1_N
Definition libx52io.h:171
+
@ LIBX52IO_BTN_POV_2_N
Definition libx52io.h:183
+
@ LIBX52IO_BTN_PG_DN
Definition libx52io.h:222
+
@ LIBX52IO_BTN_POV_1_E
Definition libx52io.h:174
+
@ LIBX52IO_BTN_RESET
Definition libx52io.h:216
+
@ LIBX52IO_BTN_POV_2_W
Definition libx52io.h:192
+
@ LIBX52IO_BTN_CLUTCH
Definition libx52io.h:195
+
@ LIBX52IO_BTN_MODE_2
Definition libx52io.h:237
+
@ LIBX52IO_BTN_T1_UP
Definition libx52io.h:153
+
@ LIBX52IO_BTN_MODE_3
Definition libx52io.h:240
+
@ LIBX52IO_BTN_T3_DN
Definition libx52io.h:168
+
@ LIBX52IO_BTN_FUNCTION
Definition libx52io.h:210
+
@ LIBX52IO_BTN_PINKY
Definition libx52io.h:135
+
@ LIBX52IO_BTN_C
Definition libx52io.h:144
+
@ LIBX52IO_BTN_POV_1_W
Definition libx52io.h:180
+
@ LIBX52IO_BTN_START_STOP
Definition libx52io.h:213
+
@ LIBX52IO_BTN_D
Definition libx52io.h:147
+
@ LIBX52IO_BTN_MOUSE_SECONDARY
Definition libx52io.h:201
+
@ LIBX52IO_BTN_UP
Definition libx52io.h:225
+
@ LIBX52IO_BTN_T2_UP
Definition libx52io.h:159
+
@ LIBX52IO_AXIS_X
Definition libx52io.h:86
+
@ LIBX52IO_AXIS_THUMBY
Definition libx52io.h:110
+
@ LIBX52IO_AXIS_RX
Definition libx52io.h:98
+
@ LIBX52IO_AXIS_RZ
Definition libx52io.h:92
+
@ LIBX52IO_AXIS_SLIDER
Definition libx52io.h:104
+
@ LIBX52IO_AXIS_HATX
Definition libx52io.h:113
+
@ LIBX52IO_AXIS_Y
Definition libx52io.h:89
+
@ LIBX52IO_AXIS_THUMBX
Definition libx52io.h:107
+
@ LIBX52IO_AXIS_Z
Definition libx52io.h:95
+
@ LIBX52IO_AXIS_RY
Definition libx52io.h:101
+
@ LIBX52IO_AXIS_HATY
Definition libx52io.h:116
+
@ LIBX52IO_ERROR_INVALID
Definition libx52io.h:69
+
@ LIBX52IO_ERROR_INIT_FAILURE
Definition libx52io.h:63
+
@ LIBX52IO_ERROR_CONN
Definition libx52io.h:72
+
@ LIBX52IO_ERROR_IO
Definition libx52io.h:75
+
@ LIBX52IO_ERROR_NO_DEVICE
Definition libx52io.h:66
+
@ LIBX52IO_SUCCESS
Definition libx52io.h:60
+
@ LIBX52IO_ERROR_TIMEOUT
Definition libx52io.h:78
+
X52 HID Report.
Definition libx52io.h:250
+
uint8_t mode
Definition libx52io.h:258
+
int32_t axis[LIBX52IO_AXIS_MAX]
Definition libx52io.h:252
+
uint8_t hat
Definition libx52io.h:261
+
bool button[LIBX52IO_BUTTON_MAX]
Definition libx52io.h:255
diff --git a/libx52util_8h.html b/libx52util_8h.html index ebf1ed2..779bbb4 100644 --- a/libx52util_8h.html +++ b/libx52util_8h.html @@ -1,9 +1,9 @@ - + - - + + libx52: /home/runner/work/libx52/libx52/libx52util/libx52util.h File Reference @@ -19,10 +19,9 @@
- - + @@ -31,21 +30,22 @@
-
libx52 -  0.3.2 +
+
libx52 0.3.2
Saitek X52/X52Pro drivers for Linux/Unix
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+