From 8c1f1c7a2f5fb8155e98991a53c9c346932873a0 Mon Sep 17 00:00:00 2001 From: dlozeve Date: Mon, 1 Mar 2021 20:16:29 +0000 Subject: [PATCH] deploy: 7d6b1ff622245c5d1e3914275ecb7a00b821e950 --- .nojekyll | 0 annotated.html | 84 + bc_s.png | Bin 0 -> 676 bytes bdwn.png | Bin 0 -> 147 bytes classes.html | 92 ++ closed.png | Bin 0 -> 132 bytes dir_68267d1309a1af8e8297ef4c3efbcdba.html | 100 ++ doc.png | Bin 0 -> 746 bytes doxygen.css | 1771 +++++++++++++++++++++ doxygen.png | Bin 0 -> 3779 bytes dynsections.js | 120 ++ files.html | 90 ++ folderclosed.png | Bin 0 -> 616 bytes folderopen.png | Bin 0 -> 597 bytes functions.html | 109 ++ functions_vars.html | 109 ++ globals.html | 127 ++ globals_defs.html | 88 + globals_func.html | 115 ++ graph_legend.html | 138 ++ graph_legend.md5 | 1 + graph_legend.png | Bin 0 -> 20615 bytes index.html | 78 + io_8c.html | 230 +++ io_8c__incl.map | 15 + io_8c__incl.md5 | 1 + io_8c__incl.png | Bin 0 -> 25015 bytes io_8h.html | 200 +++ io_8h__dep__incl.map | 4 + io_8h__dep__incl.md5 | 1 + io_8h__dep__incl.png | Bin 0 -> 2462 bytes io_8h__incl.map | 5 + io_8h__incl.md5 | 1 + io_8h__incl.png | Bin 0 -> 4588 bytes io_8h_source.html | 97 ++ jquery.js | 35 + main_8c.html | 182 +++ main_8c__incl.map | 12 + main_8c__incl.md5 | 1 + main_8c__incl.png | Bin 0 -> 22848 bytes menu.js | 50 + menudata.js | 36 + nav_f.png | Bin 0 -> 153 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes open.png | Bin 0 -> 123 bytes renderer_8c.html | 297 ++++ renderer_8c__incl.map | 7 + renderer_8c__incl.md5 | 1 + renderer_8c__incl.png | Bin 0 -> 11857 bytes renderer_8h.html | 288 ++++ renderer_8h__dep__incl.map | 7 + renderer_8h__dep__incl.md5 | 1 + renderer_8h__dep__incl.png | Bin 0 -> 10119 bytes renderer_8h__incl.map | 4 + renderer_8h__incl.md5 | 1 + renderer_8h__incl.png | Bin 0 -> 3282 bytes renderer_8h_source.html | 130 ++ search/all_0.html | 30 + search/all_0.js | 6 + search/all_1.html | 30 + search/all_1.js | 5 + search/all_2.html | 30 + search/all_2.js | 6 + search/all_3.html | 30 + search/all_3.js | 9 + search/all_4.html | 30 + search/all_4.js | 5 + search/all_5.html | 30 + search/all_5.js | 7 + search/all_6.html | 30 + search/all_6.js | 7 + search/all_7.html | 30 + search/all_7.js | 7 + search/all_8.html | 30 + search/all_8.js | 4 + search/all_9.html | 30 + search/all_9.js | 4 + search/all_a.html | 30 + search/all_a.js | 7 + search/classes_0.html | 30 + search/classes_0.js | 4 + search/classes_1.html | 30 + search/classes_1.js | 4 + search/close.png | Bin 0 -> 273 bytes search/defines_0.html | 30 + search/defines_0.js | 4 + search/defines_1.html | 30 + search/defines_1.js | 4 + search/defines_2.html | 30 + search/defines_2.js | 5 + search/files_0.html | 30 + search/files_0.js | 5 + search/files_1.html | 30 + search/files_1.js | 4 + search/files_2.html | 30 + search/files_2.js | 5 + search/files_3.html | 30 + search/files_3.js | 5 + search/functions_0.html | 30 + search/functions_0.js | 4 + search/functions_1.html | 30 + search/functions_1.js | 5 + search/functions_2.html | 30 + search/functions_2.js | 4 + search/functions_3.html | 30 + search/functions_3.js | 6 + search/functions_4.html | 30 + search/functions_4.js | 4 + search/functions_5.html | 30 + search/functions_5.js | 4 + search/functions_6.html | 30 + search/functions_6.js | 4 + search/mag_sel.png | Bin 0 -> 465 bytes search/nomatches.html | 12 + search/search.css | 271 ++++ search/search.js | 814 ++++++++++ search/search_l.png | Bin 0 -> 567 bytes search/search_m.png | Bin 0 -> 158 bytes search/search_r.png | Bin 0 -> 553 bytes search/searchdata.js | 30 + search/variables_0.html | 30 + search/variables_0.js | 4 + search/variables_1.html | 30 + search/variables_1.js | 5 + search/variables_2.html | 30 + search/variables_2.js | 4 + search/variables_3.html | 30 + search/variables_3.js | 6 + search/variables_4.html | 30 + search/variables_4.js | 4 + search/variables_5.html | 30 + search/variables_5.js | 4 + search/variables_6.html | 30 + search/variables_6.js | 5 + shaders_8c.html | 178 +++ shaders_8c__incl.map | 7 + shaders_8c__incl.md5 | 1 + shaders_8c__incl.png | Bin 0 -> 8899 bytes shaders_8h.html | 174 ++ shaders_8h__dep__incl.map | 5 + shaders_8h__dep__incl.md5 | 1 + shaders_8h__dep__incl.png | Bin 0 -> 4573 bytes shaders_8h_source.html | 93 ++ splitbar.png | Bin 0 -> 314 bytes structrenderer__state.html | 237 +++ structrenderer__state__coll__graph.map | 4 + structrenderer__state__coll__graph.md5 | 1 + structrenderer__state__coll__graph.png | Bin 0 -> 3769 bytes structshader__state.html | 143 ++ sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_b.png | Bin 0 -> 169 bytes tab_h.png | Bin 0 -> 177 bytes tab_s.png | Bin 0 -> 184 bytes tabs.css | 1 + 157 files changed, 7790 insertions(+) create mode 100644 .nojekyll create mode 100644 annotated.html create mode 100644 bc_s.png create mode 100644 bdwn.png create mode 100644 classes.html create mode 100644 closed.png create mode 100644 dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 doc.png create mode 100644 doxygen.css create mode 100644 doxygen.png create mode 100644 dynsections.js create mode 100644 files.html create mode 100644 folderclosed.png create mode 100644 folderopen.png create mode 100644 functions.html create mode 100644 functions_vars.html create mode 100644 globals.html create mode 100644 globals_defs.html create mode 100644 globals_func.html create mode 100644 graph_legend.html create mode 100644 graph_legend.md5 create mode 100644 graph_legend.png create mode 100644 index.html create mode 100644 io_8c.html create mode 100644 io_8c__incl.map create mode 100644 io_8c__incl.md5 create mode 100644 io_8c__incl.png create mode 100644 io_8h.html create mode 100644 io_8h__dep__incl.map create mode 100644 io_8h__dep__incl.md5 create mode 100644 io_8h__dep__incl.png create mode 100644 io_8h__incl.map create mode 100644 io_8h__incl.md5 create mode 100644 io_8h__incl.png create mode 100644 io_8h_source.html create mode 100644 jquery.js create mode 100644 main_8c.html create mode 100644 main_8c__incl.map create mode 100644 main_8c__incl.md5 create mode 100644 main_8c__incl.png create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 nav_f.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 open.png create mode 100644 renderer_8c.html create mode 100644 renderer_8c__incl.map create mode 100644 renderer_8c__incl.md5 create mode 100644 renderer_8c__incl.png create mode 100644 renderer_8h.html create mode 100644 renderer_8h__dep__incl.map create mode 100644 renderer_8h__dep__incl.md5 create mode 100644 renderer_8h__dep__incl.png create mode 100644 renderer_8h__incl.map create mode 100644 renderer_8h__incl.md5 create mode 100644 renderer_8h__incl.png create mode 100644 renderer_8h_source.html create mode 100644 search/all_0.html create mode 100644 search/all_0.js create mode 100644 search/all_1.html create mode 100644 search/all_1.js create mode 100644 search/all_2.html create mode 100644 search/all_2.js create mode 100644 search/all_3.html create mode 100644 search/all_3.js create mode 100644 search/all_4.html create mode 100644 search/all_4.js create mode 100644 search/all_5.html create mode 100644 search/all_5.js create mode 100644 search/all_6.html create mode 100644 search/all_6.js create mode 100644 search/all_7.html create mode 100644 search/all_7.js create mode 100644 search/all_8.html create mode 100644 search/all_8.js create mode 100644 search/all_9.html create mode 100644 search/all_9.js create mode 100644 search/all_a.html create mode 100644 search/all_a.js create mode 100644 search/classes_0.html create mode 100644 search/classes_0.js create mode 100644 search/classes_1.html create mode 100644 search/classes_1.js create mode 100644 search/close.png create mode 100644 search/defines_0.html create mode 100644 search/defines_0.js create mode 100644 search/defines_1.html create mode 100644 search/defines_1.js create mode 100644 search/defines_2.html create mode 100644 search/defines_2.js create mode 100644 search/files_0.html create mode 100644 search/files_0.js create mode 100644 search/files_1.html create mode 100644 search/files_1.js create mode 100644 search/files_2.html create mode 100644 search/files_2.js create mode 100644 search/files_3.html create mode 100644 search/files_3.js create mode 100644 search/functions_0.html create mode 100644 search/functions_0.js create mode 100644 search/functions_1.html create mode 100644 search/functions_1.js create mode 100644 search/functions_2.html create mode 100644 search/functions_2.js create mode 100644 search/functions_3.html create mode 100644 search/functions_3.js create mode 100644 search/functions_4.html create mode 100644 search/functions_4.js create mode 100644 search/functions_5.html create mode 100644 search/functions_5.js create mode 100644 search/functions_6.html create mode 100644 search/functions_6.js create mode 100644 search/mag_sel.png create mode 100644 search/nomatches.html create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/search_l.png create mode 100644 search/search_m.png create mode 100644 search/search_r.png create mode 100644 search/searchdata.js create mode 100644 search/variables_0.html create mode 100644 search/variables_0.js create mode 100644 search/variables_1.html create mode 100644 search/variables_1.js create mode 100644 search/variables_2.html create mode 100644 search/variables_2.js create mode 100644 search/variables_3.html create mode 100644 search/variables_3.js create mode 100644 search/variables_4.html create mode 100644 search/variables_4.js create mode 100644 search/variables_5.html create mode 100644 search/variables_5.js create mode 100644 search/variables_6.html create mode 100644 search/variables_6.js create mode 100644 shaders_8c.html create mode 100644 shaders_8c__incl.map create mode 100644 shaders_8c__incl.md5 create mode 100644 shaders_8c__incl.png create mode 100644 shaders_8h.html create mode 100644 shaders_8h__dep__incl.map create mode 100644 shaders_8h__dep__incl.md5 create mode 100644 shaders_8h__dep__incl.png create mode 100644 shaders_8h_source.html create mode 100644 splitbar.png create mode 100644 structrenderer__state.html create mode 100644 structrenderer__state__coll__graph.map create mode 100644 structrenderer__state__coll__graph.md5 create mode 100644 structrenderer__state__coll__graph.png create mode 100644 structshader__state.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_b.png create mode 100644 tab_h.png create mode 100644 tab_s.png create mode 100644 tabs.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..0c80ae0 --- /dev/null +++ b/annotated.html @@ -0,0 +1,84 @@ + + + + + + + +ShaderTool: Data Structures + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +ShaderTool: Data Structure Index + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structure Index
+
+
+
r | s
+ + + + + + + + + +
  r  
+
  s  
+
renderer_state   shader_state   
+
r | s
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..4ff4b36 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,100 @@ + + + + + + + +ShaderTool: src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + + + + + + + + + + + + + + + +

+Files

file  io.c
 
file  io.h [code]
 
file  main.c
 
file  renderer.c
 
file  renderer.h [code]
 
file  shaders.c
 
file  shaders.h [code]
 
+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..73ecbb2 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.png b/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..ea0a7b3 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,120 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +ShaderTool: File List + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 12]
+ + + + + + + + +
  src
 io.c
 io.h
 main.c
 renderer.c
 renderer.h
 shaders.c
 shaders.h
+
+
+ + + + diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..378d25f --- /dev/null +++ b/functions.html @@ -0,0 +1,109 @@ + + + + + + + +ShaderTool: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 0000000..37de0d7 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,109 @@ + + + + + + + +ShaderTool: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 0000000..8b4f86d --- /dev/null +++ b/globals.html @@ -0,0 +1,127 @@ + + + + + + + +ShaderTool: Globals + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+
+ + + + diff --git a/globals_defs.html b/globals_defs.html new file mode 100644 index 0000000..bdb43b0 --- /dev/null +++ b/globals_defs.html @@ -0,0 +1,88 @@ + + + + + + + +ShaderTool: Globals + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/globals_func.html b/globals_func.html new file mode 100644 index 0000000..28279cf --- /dev/null +++ b/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +ShaderTool: Globals + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/graph_legend.html b/graph_legend.html new file mode 100644 index 0000000..8a05720 --- /dev/null +++ b/graph_legend.html @@ -0,0 +1,138 @@ + + + + + + + +ShaderTool: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/graph_legend.md5 b/graph_legend.md5 new file mode 100644 index 0000000..8fcdccd --- /dev/null +++ b/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/graph_legend.png b/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2cbcfb2d143e382be6ed65635a3d859e53bc36 GIT binary patch literal 20615 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..2a8c266 --- /dev/null +++ b/index.html @@ -0,0 +1,78 @@ + + + + + + + +ShaderTool: Main Page + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ShaderTool Documentation
+
+
+
+ +
+ + diff --git a/io_8c.html b/io_8c.html new file mode 100644 index 0000000..2d4c916 --- /dev/null +++ b/io_8c.html @@ -0,0 +1,230 @@ + + + + + + + +ShaderTool: src/io.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
io.c File Reference
+
+
+
#include <FreeImage.h>
+#include <errno.h>
+#include <libgen.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/inotify.h>
+#include <time.h>
+#include <unistd.h>
+#include "log.h"
+#include "renderer.h"
+#include "shaders.h"
+
+Include dependency graph for io.c:
+
+
+ + + + + + + + + + + + + + + +
+
+ + + +

+Macros

#define BUF_LEN   (10 * (sizeof(struct inotify_event) + 1))
 
+ + + + + + + + + + +

+Functions

char * basename_without_suffix (const char *filename)
 Return the file name without the leading directories and without the extension. More...
 
void capture_screenshot (struct renderer_state *state)
 Capture a screenshot of the current window. More...
 
void process_input (struct renderer_state *state)
 Ensure the window is closed when the user presses the escape key. More...
 
+

Macro Definition Documentation

+ +

◆ BUF_LEN

+ +
+
+ + + + +
#define BUF_LEN   (10 * (sizeof(struct inotify_event) + 1))
+
+ +
+
+

Function Documentation

+ +

◆ basename_without_suffix()

+ +
+
+ + + + + + + + +
char* basename_without_suffix (const char * filename)
+
+ +

Return the file name without the leading directories and without the extension.

+
Parameters
+ + +
filenameThe original filename.
+
+
+
Returns
A newly allocated string containing the output of basename(3) without the extension.
+ +
+
+ +

◆ capture_screenshot()

+ +
+
+ + + + + + + + +
void capture_screenshot (struct renderer_statestate)
+
+ +

Capture a screenshot of the current window.

+

Takes the dimensions of the viewport to save a pixel array of the same dimensions. Uses FreeImage to create an image from the raw pixels and save it to disk.

+
Parameters
+ + +
stateThe renderer state, needed to get the name of the current shader and the frame count.
+
+
+ +
+
+ +

◆ process_input()

+ +
+
+ + + + + + + + +
void process_input (struct renderer_statestate)
+
+ +

Ensure the window is closed when the user presses the escape key.

+
Parameters
+ + +
stateThe current state of the renderer.
+
+
+ +
+
+
+ + + + diff --git a/io_8c__incl.map b/io_8c__incl.map new file mode 100644 index 0000000..bc164f1 --- /dev/null +++ b/io_8c__incl.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/io_8c__incl.md5 b/io_8c__incl.md5 new file mode 100644 index 0000000..023a851 --- /dev/null +++ b/io_8c__incl.md5 @@ -0,0 +1 @@ +e60cb5e80fe7097871c9791ed472d880 \ No newline at end of file diff --git a/io_8c__incl.png b/io_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..74f0a286c483af3b872d891cee4e371b760a7896 GIT binary patch literal 25015 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

<=SJBaX(Q8X?==llbx$Xl0 zZsrt~l50imffS-HJvX=MxUldmpkFH2^95?7kvziSnXIg=k(vWG?z%}z-o<8BzU5hY zc`_OL31@gt=$?+$wX#Zh!%J%WJR|TELuZJ& z_ApLyPrW7Qp!kO!Cc3ihTjCYcD=PZqm9ag#Nh-9aS7+<&ER~PZYk85tumzU{Syfq? z2FC%(=w(Go$z~>lP6zxS2lPv^k`|@BM4F4ElhZTl1O_E>ieulNz3@{(um8upfW&D=yHk+uzujm=9lLkY9= zz6IyJoLL4+bv{~Ta`6OXDgoW!=&V_O5Az-0v#*?iVzDQ>b81}(xaweT#2^_cug+o@ z?hqOWV_v;Nc`^o_!)7X<4OofvPx9pvp1*wQ031ZpI;-f6{M(H4iY;M9F;cG6v#A$uij&>iSq-))mH1wk>zTfojJq7f!c;!^ZC#@Pefo$X%5#~JFRHpCeuRG zUB-0@$B|dAw0ZhWZXMijbX-D*G;WasZLf} zeWlL0ArBNPtElfzdUEo6>8VB=cCq(ty@=Ix^}-ajx!A5TOu811*=%;!4-ys@4o8{X zydw#Eg2Rp7Gb>+fo@zv9WoO?zh;({jqE!?b+%rXQKX+|e!DAx&`7Jn2cd>459T=fB zA{8*xmc*j@N4|VRIJJh6W?VwdK^ezrZ}##iG0g@WN6Ejv*>=NRZB9zchmRjWmMM)` z(92?8zU0%^pR%&F{O)$F#(1?fBWG4Xi~DHe2rYJ@Rbgtl$2fn0A2Br^I`|no1n27W;%Q|Fj8{b~M#W$?g`ZYK?OU>PGuE2v;}zR};FNn4pQ3x_ z&^ov3+Lg%Y`1tRf)z!5lk-Eyy zx|Ig{*!+6v7fB5bmmfcVEG8^mBdsbUV;p(a%xwHj)%8Y#F=nBgT9A{SU6IR~|Le}d zL`Ic`6p0y`==F8$GXYiWoNEO=0qi+}myCk!Y$ILWFr-Qlx4`s_r`6j6@%J$S26O%v z*wOeN%i#uE(a`vc&l$|J4Up);BFTd$5mTb)l#!`vEGXLn)t8bYXm{&YrYpVb6oKAN z*@{u@7sx646Jan-E(@3q>t;>oPa3+SHe*J4^0zvB&*oxqIlg6+NrOrO?jx^;_22gd znY8fpPoXtiJF9MMx=#P$*JoeFGF(`9DDhk2>rG;Pci6XQPfCBkc}-m%!JE-n;(&;! z?*k{p1TrzF#c5ic0y-Tg@~z*hXC3AXP{4J!wY>)2$m>S}WkSqiGNCXo7(pecqVjhf zJaY*=q#|}9cj)>_DJe`-UeZ{!oz1?^&dwP< zqY;yah4(Nj<(^ZAD345(ynE1fKfOij*;a}7`Kf44%>iYODI$0Zq?UXO`+9)CN=Z=z-nP<8?nu0S^C3GsI}h#32ib`J%N54MtxZi=t*sNGWl+f2#AE_T zUrR48DUrF|c2t`rL^okA5Xjxh7lYj)K!L(kk;cX^fJX>i0I?I-e`B4^@|noWfIH;F z6SB+8``lcfr(Fo#G@gJNG=wOaW?{TkA0;x$M_t{}$5~pl+UDd#@cJlR857g~hG)Ssg zXRp4st=nZ)9S^ z0e@3Zq7|%;vi*|g-6cM7+Ed~Z)QKgx6x-{5h#Vo+rAwZDuej0^4k=fYm18|57!kfw`1bsI^N#i=0wjt@Y?v>?SjsI z#WnOBe_+3JBmUzwlGP=x}_k(~|ZCMF}*nU$mec?%VlLFtLpe@To{?qlRV zbI0pdH})l7rwVXc1v+iuBJYsh4%Dn%Tx~pt&}hK93PaR5G_G7+_tp1uI9%b9xTnzj z9UM3{!R_6{l@*`9DbFO=z*6!X#H^$?#Ek5moVjIBpJF~a7xzZbv2}K}Tibrt5vylI zO@vPc*m#Oh&>NkXD~Lz0uNoV7OHz|r6`DA;%eQW&?b)+uZTI$pLh6)?Um+tr<$}T2 zNnf3>rX`|qK7O=3Wt|xF_usESebP$G7jSN8U=M_!r3;cDJeV^dU8)e^21lwBBQevr zLhPTP{8Hg1ZB$=>jl~}-9JrZ#0p*W1U!C6zUuggP*u{Qb!a>_Gfv-OY`A!^~o~SGR z6m}YVG;tmyI`)`X=+B>HeJ8k0?B@%v{r}sHr2M_%=eMr!e!TbB*Pn`}{d!?~>Dd39 zTj8W@mk?Wij=LX;M5_jRRw zW*WlTyzK5B%%exv;lJ$d=xa%{GuEgU2Y*fO`SXqS+DNUC$vR3~ z+h2C};cf386w!G1`H270)&2YX4;;wLLTZYh!?QGdWA>-kJgvi^ua4#Y*2#v!Na3O3 z34+mw>WlMj7Z*Lym;U3kTr=CQ3CLK;$$XOYCc|C0=YGQoBtnDC$l5$TdNGd zd`Z^t#NnRpmpU?Eu_Jp8?@6BBxU}u}z#^dLoc-taTE(it&aST90n4hMz-jeg_S0r7VJUAS=PIic zxoJm8dzyAN>+o(LzTZPWBBbmWyJ^>V@$nu5!Qh}-)2Gul2kJSRIJ%{qLdgM?O24u6 zaiBbPK0}q1+|)!gwy>CF-1QYabxMEt?zJ@Z(cdCo$Sf{4^6>Cr@2VEj2n*?OP~j26 zO{ENC8Ik1bnJ19^h)YYu&0h2WnvkPf!pD!_ZiC8cn5U=aZ@S^fhMYs6=+ll0XJSBgb<$fZQ7GOB7hmiOLp{ctC4!($f`5>%f!z z_>L@Yfk9`)da_nL)HO7+Gc!MplYrZ}ApD5(#Ec4w1r#m@28-DtMgSqC{Kj=IYiV6k zQ+o)6x#<%VjuDi=&li5F?x;3kxsGTtWOQU?$~7B5V;~#u7$jk3+`e97{RmdYS0?V{ zll{ayv_vJiCLI?8KMz@P2T(~LW+>nNe7`pAU@FwY>+nLF;hAsVs3X&L-EYob!bs~^kr40vF@Svbgk~UQXIUdL4ul#cApLkO} zCVNox6W#rgm1%?@&dSUbg@HSA-YK%x%pgeHH}UQ~bncVkIh2b_4}d6UpupO@tiO$n zj8dNPh@6y_?UBxdR%rBSi?Nng2zY!MhnB+-2%a5LHV1O#c$mCXmSt`BIH>8Y3`+%M zjl#J)S)5*~#P6AAX9j;C&1iS^* z2Rmt%)hs0#uYFVOF(NI0w~)pd9Y~@UwJ*L){^fbwRvF|1V32kKV4*^52|IZ9uzHjn zv;jaF%)IdWgNB9%_wf#4ZNfG&*amSo&j;Z_w8%8O#uzbpG-tknS-9iN=lp`o+0fb9 zS=cd+sOL?kSY!2oKbeEhk7t#YnJx~XBLKAW7i8$+(hCbqFNP)}F#5~O%kY#7!K-EH zQGJNY>Z7em6wt~1C!vT>ytdL8x48c{e3+`JwQIWo+EM>o(YIWE$K#CoSy~6yrGA#0lNl&!*{_nOX-A9-N>O z3ScVs@$uz6*tl77gqu&cDRrs1xcI82Wo}1@kzU+6ZS+V}JABv$nNzA}M5$O>uKC-` zkTWP^rsL0?Idjf?_Ld*i4^B~%Vq?daR8O9~+>!T(`|iWPz5F@HF3~q>Y3@rhukugd z`t%nKMC&JFILkL1)tRon!W379IzybIM>bS<_!|MDISy8ON4ogk`3x9!;HI4&NCV|JU|I64(A_=c!w)9^<7@w90a(mX3q=41IkokE1|g*;!fb zkj=%{YN8w+JF5Iv4-ciL!P@Ld(>5pjlO`r6t{NI9H{;~6cve{04sh<1tpV(kp-vGq zGqaU(gMbMpDtctZ-f!lqO&1l2VQXtO5){xHuwWKnL`Q$)E%XGtaaMW%@UzCh+!N#x zJvjwc*|W3v^b(cKAZy@O`f(rD3@0x`kO=egqA*Mm{rEzB0@SG!R09TQ-X75gsBUO) zpWc$B%D5UU@4HmEiTg+{lm+YX|0UIsa8?x*R0H*ghJ|&Fsw^sKcW~wvFl2^va8S_1 zbIl{|&@JP!llS!bs1tfXI#0T+qeEgV*fDFWcbCcs2=JFXhb~>4 z;D4`7gj(j7Dkvz(Och{#8pg7rO#@XEx~~F?a&j6Y2r$7esQxC@nqT;Qdld_91#tZ% z_) + + + + + + +ShaderTool: src/io.h File Reference + + + + + + + + + +

+
+ + + + + + +
+
ShaderTool +  0.1 +
+
Live tool for developing OpenGL shaders interactively
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
io.h File Reference
+
+
+
#include "renderer.h"
+
+Include dependency graph for io.h:
+
+
+ + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + +
+
+

Go to the source code of this file.

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

+Functions

char * basename_without_suffix (const char *filename)
 Return the file name without the leading directories and without the extension. More...
 
void capture_screenshot (struct renderer_state *state)
 Capture a screenshot of the current window. More...
 
void process_input (struct renderer_state *state)
 Ensure the window is closed when the user presses the escape key. More...
 
+

Function Documentation

+ +

◆ basename_without_suffix()

+ +
+
+ + + + + + + + +
char* basename_without_suffix (const char * filename)
+
+ +

Return the file name without the leading directories and without the extension.

+
Parameters
+ + +
filenameThe original filename.
+
+
+
Returns
A newly allocated string containing the output of basename(3) without the extension.
+ +
+
+ +

◆ capture_screenshot()

+ +
+
+ + + + + + + + +
void capture_screenshot (struct renderer_statestate)
+
+ +

Capture a screenshot of the current window.

+

Takes the dimensions of the viewport to save a pixel array of the same dimensions. Uses FreeImage to create an image from the raw pixels and save it to disk.

+
Parameters
+ + +
stateThe renderer state, needed to get the name of the current shader and the frame count.
+
+
+ +
+
+ +

◆ process_input()

+ +
+
+ + + + + + + + +
void process_input (struct renderer_statestate)
+
+ +

Ensure the window is closed when the user presses the escape key.

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

+Macros

#define WINDOW_WIDTH   800
 
#define WINDOW_HEIGHT   800
 
+ + + +

+Functions

int main (int argc, char *argv[])
 
+

Macro Definition Documentation

+ +

◆ WINDOW_HEIGHT

+ +
+
+ + + + +
#define WINDOW_HEIGHT   800
+
+ +
+
+ +

◆ WINDOW_WIDTH

+ +
+
+ + + + +
#define WINDOW_WIDTH   800
+
+ +
+
+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +
+
+
+ + + + diff --git a/main_8c__incl.map b/main_8c__incl.map new file mode 100644 index 0000000..9fc9df1 --- /dev/null +++ b/main_8c__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/main_8c__incl.md5 b/main_8c__incl.md5 new file mode 100644 index 0000000..648e673 --- /dev/null +++ b/main_8c__incl.md5 @@ -0,0 +1 @@ +c703ca2d0b5ddad1d171681f55232837 \ No newline at end of file diff --git a/main_8c__incl.png b/main_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6f72268db1c60f50c21c96355ded85276a177a0d GIT binary patch literal 22848 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'+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+''; + } + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 0000000..d8c3756 --- /dev/null +++ b/menudata.js @@ -0,0 +1,36 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Structure Index",url:"classes.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions",url:"globals_func.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +ShaderTool: src/renderer.c File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    ShaderTool +  0.1 +
    +
    Live tool for developing OpenGL shaders interactively
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    renderer.c File Reference
    +
    +
    +
    #include <GL/glew.h>
    +#include <GLFW/glfw3.h>
    +#include "log.h"
    +#include "renderer.h"
    +
    +Include dependency graph for renderer.c:
    +
    +
    + + + + + + + +
    +
    + + + +

    +Macros

    #define UNUSED(a)   (void)a
     
    + + + + + + + + + + + + + +

    +Functions

    GLFWwindow * initialize_window (int width, int height)
     Initialize GLFW and OpenGL, and create a window. More...
     
    unsigned int initialize_vertices ()
     Initialize the vertex array. More...
     
    unsigned int initialize_framebuffer (unsigned int *framebuffer, unsigned int *texture_color_buffer, unsigned int texture_width, unsigned int texture_height)
     Initialize a framebuffer and the associated texture. More...
     
    void framebuffer_size_callback (GLFWwindow *window, int width, int height)
     Callback to adjust the size of the viewport when the window is resized. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ UNUSED

    + +
    +
    + + + + + + + + +
    #define UNUSED( a)   (void)a
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ framebuffer_size_callback()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void framebuffer_size_callback (GLFWwindow * window,
    int width,
    int height 
    )
    +
    + +

    Callback to adjust the size of the viewport when the window is resized.

    +
    Parameters
    + + + + +
    windowThe current window.
    widthThe new width.
    heightThe new height.
    +
    +
    + +
    +
    + +

    ◆ initialize_framebuffer()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    unsigned int initialize_framebuffer (unsigned int * framebuffer,
    unsigned int * texture_color_buffer,
    unsigned int texture_width,
    unsigned int texture_height 
    )
    +
    + +

    Initialize a framebuffer and the associated texture.

    +
    Parameters
    + + + + + +
    framebufferThe framebuffer ID to be initialized.
    texture_color_bufferThe texture ID to be initialized.
    texture_widthThe width of the desired texture image.
    texture_heightThe height of the desired texture image.
    +
    +
    +
    Returns
    0 on success, 1 on failure.
    + +
    +
    + +

    ◆ initialize_vertices()

    + +
    +
    + + + + + + + +
    unsigned int initialize_vertices ()
    +
    + +

    Initialize the vertex array.

    +

    This functions defines a simple rectangle containing the whole viewport.

    +
    Returns
    The vertex array object ID.
    + +
    +
    + +

    ◆ initialize_window()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GLFWwindow* initialize_window (int width,
    int height 
    )
    +
    + +

    Initialize GLFW and OpenGL, and create a window.

    +
    Parameters
    + + + +
    widthThe width of the window to create.
    heightThe height of the window to create.
    +
    +
    +
    Returns
    A pointer to the newly created GLFW window, or NULL on error.
    + +
    +
    +
    + + + + diff --git a/renderer_8c__incl.map b/renderer_8c__incl.map new file mode 100644 index 0000000..52a2bfe --- /dev/null +++ b/renderer_8c__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/renderer_8c__incl.md5 b/renderer_8c__incl.md5 new file mode 100644 index 0000000..9496cb0 --- /dev/null +++ b/renderer_8c__incl.md5 @@ -0,0 +1 @@ +5184e94e13b9a9496dce15cf1a662567 \ No newline at end of file diff --git a/renderer_8c__incl.png b/renderer_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf94f0a8300b3be8bab850f70ec20c224cfa431 GIT binary patch literal 11857 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πJXRS06<7f&Q@adGkJPahtn4Mrb&i5%7`>E$(~ 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 + + + + + + +ShaderTool: src/renderer.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    ShaderTool +  0.1 +
    +
    Live tool for developing OpenGL shaders interactively
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    renderer.h File Reference
    +
    +
    +
    #include <GLFW/glfw3.h>
    +
    +Include dependency graph for renderer.h:
    +
    +
    + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Data Structures

    struct  shader_state
     
    struct  renderer_state
     
    + + + + + + + + + + + + + +

    +Functions

    GLFWwindow * initialize_window (int width, int height)
     Initialize GLFW and OpenGL, and create a window. More...
     
    unsigned int initialize_vertices ()
     Initialize the vertex array. More...
     
    unsigned int initialize_framebuffer (unsigned int *framebuffer, unsigned int *texture_color_buffer, unsigned int texture_width, unsigned int texture_height)
     Initialize a framebuffer and the associated texture. More...
     
    void framebuffer_size_callback (GLFWwindow *window, int width, int height)
     Callback to adjust the size of the viewport when the window is resized. More...
     
    +

    Function Documentation

    + +

    ◆ framebuffer_size_callback()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void framebuffer_size_callback (GLFWwindow * window,
    int width,
    int height 
    )
    +
    + +

    Callback to adjust the size of the viewport when the window is resized.

    +
    Parameters
    + + + + +
    windowThe current window.
    widthThe new width.
    heightThe new height.
    +
    +
    + +
    +
    + +

    ◆ initialize_framebuffer()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    unsigned int initialize_framebuffer (unsigned int * framebuffer,
    unsigned int * texture_color_buffer,
    unsigned int texture_width,
    unsigned int texture_height 
    )
    +
    + +

    Initialize a framebuffer and the associated texture.

    +
    Parameters
    + + + + + +
    framebufferThe framebuffer ID to be initialized.
    texture_color_bufferThe texture ID to be initialized.
    texture_widthThe width of the desired texture image.
    texture_heightThe height of the desired texture image.
    +
    +
    +
    Returns
    0 on success, 1 on failure.
    + +
    +
    + +

    ◆ initialize_vertices()

    + +
    +
    + + + + + + + +
    unsigned int initialize_vertices ()
    +
    + +

    Initialize the vertex array.

    +

    This functions defines a simple rectangle containing the whole viewport.

    +
    Returns
    The vertex array object ID.
    + +
    +
    + +

    ◆ initialize_window()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GLFWwindow* initialize_window (int width,
    int height 
    )
    +
    + +

    Initialize GLFW and OpenGL, and create a window.

    +
    Parameters
    + + + +
    widthThe width of the window to create.
    heightThe height of the window to create.
    +
    +
    +
    Returns
    A pointer to the newly created GLFW window, or NULL on error.
    + +
    +
    +
    + + + + diff --git a/renderer_8h__dep__incl.map b/renderer_8h__dep__incl.map new file mode 100644 index 0000000..8da87b6 --- /dev/null +++ b/renderer_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/renderer_8h__dep__incl.md5 b/renderer_8h__dep__incl.md5 new file mode 100644 index 0000000..3c092ae --- /dev/null +++ b/renderer_8h__dep__incl.md5 @@ -0,0 +1 @@ +f75e291eda9c12d6edbb432943093129 \ No newline at end of file diff --git a/renderer_8h__dep__incl.png b/renderer_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ddb090eb1c09dbc72a9b584d93b77b03742cdba9 GIT binary patch literal 10119 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 + + + diff --git a/renderer_8h__incl.md5 b/renderer_8h__incl.md5 new file mode 100644 index 0000000..40f04f5 --- /dev/null +++ b/renderer_8h__incl.md5 @@ -0,0 +1 @@ +a6799417ba01b841cfb051f6e11e6490 \ No newline at end of file diff --git a/renderer_8h__incl.png b/renderer_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..50c4bde8ef928ce3fe24111f1f3f46f974db2822 GIT binary patch literal 3282 zcmcIni$7Fb-`_+;;}QqC)013tO&ZLUJ12KBxnIsPa(RZC!5HZ%X_6#OXw1l^gX2yb z4jPhcZj<{hlp#$ha#xyXJ=L||@5Ie>%l@vYh2r7^Wj4sBcr{~IX!)S z&DZz83A*daczX#-MCMYd@w;Dq_SQUQC##y9n(%NR6iR9_2FiKU; zb>fU@Wo2dM9@U5&Ka7->1G^u{;g$zG%a*W>E~PK%^s)B#XZiX5?BOCPktD1je*wEV zm}`uOC(JfQ6aLxW-cBA13dY?DNJ&W{4EXr?Bqt|ZU3=*{A&|VV_=fCveSR%?vm_siPX1y@`nslt`t@xCde|!jRO-lP9I5@`pkQ7v|oMf~aNX zgF8A5R9p>Cj-0G+^gf&2XX)&wC~|%81Bp(jqc-zI~Q!Mllh#RafShx;FN?Shr_Q5T~@&j6+4uS^7OJ_HaFDIaWBh(W)y%%XJ=>cs;lSST%B*tb12!|zy6YEj(*=lS@%NXkN78pjZs9JX}pA| zm%iAyIkErJLJ}S(3^?L)zj+RoT2P`Z=v?ZChtJk@++I1tC-kZpo#RwmMLZO_=Rg!i zn(G|c@YHsF_0y*qJLXRBeWYe&Ioy_7B>bn3|KXYccKHAGva;vXhR!>*E^uN|wY228 zxbU&N7YMdjrGze`Z09?L zuv&W2$3@K~8gr{gXriE?|J6kdS-9e)oLobeg4$J57<4gaXT?oDIxxTsGquA2yHU|~>CFL8EV zDTx1;=2g8v=1hbIi!J!Wu(??~{o%LGEQUL`2woKWEB{3nV+I9Gf7ULd1_w?pbS}LeOl@r%8aS)oWWe zq#>P6OKOL@kC)n?VT6A9iEzW_vNC~qQ#iaSie-gHFI%QcFdp}wI(3SfYrK0a6V<(( zX0Z<#2s8Jx)JfIb2mN;W;mGR5dCXjYPtW?!PVrEPl9CejJSMAeY0?XDsBz4y&OJw4 z+e^o7Y;Cz9H+T1=yu2TDyVDh{MR@!c!U=>YR?p5E8ZK~YO8lyv@q|3LHq-Fz*|Pz0 zt?a(}gk2wau0zQP4vTGSZXTEllfK*?9TXJg?M-WKT;Gm|&%5c%Iu3l!&Zt9tKMK0|pULPI+&6kst zlQ9e@sQtn2=&-0b)$rnlj@11ZFAOM`i`~n)AhQA;HML{u73Jk#Ky)C*GiSQT#^^wI zT3Y57_sd#Z5J)5^Nf>d_*-cZTZ|NJ7^Fs_$6yd*>l*G%;wF5^W=DI#oMy@zII@;UY zdwS-)abwah{F`gt)X#@cKBQ7pPjH090wyMxL|SZ^jkx7?XToPW4GoQr9zn^o{>dit z)upA!AVqNjF)=X^YNL0R%|E1NWq&MX`w>j!CBQ5(vrU;anr3!iwNLX7s2*l-B_<}C zlZ5PN|7vcIcXNAuQSogkefR79d>vXi1|h=FLs)_mb8@74E?rMZFowesoF6#y6#xoN zuloL>p{SYqh{MA}AVAFM-+92?aCbJudg8w_NQHl02#b+^ptRSEx3#skEBZFahzD^^ z7Gl9Fn-$bFHcqv*1x!6}ZT)Rza#Bi01_0~b?Cjd&;^NX$a%NDuojokQTa2GaIpc2o zhd+yp4bPopNo@Ak%lAg}Txvy?k5D5(3-T^#1Iy!8kiWk~DIQWcj0+LkmlEFA^ zwD;%0v$g$vYXfz)NjzZ5@Zf&K)-w=>X=7?1*54Bv^LSmV8|$%5x!V!6G_( zyUM5eH@&Hz9veTuc}L`-!P@ahj~+dcHw7E8%4Q#f?%uoid1ZyQxxeRcYG@b(5-Pk# zNI+mA(rBgu<5B7cd`D+zC$kc1Xy{%(_7sTGN)Oo4!b0w^qd*fejO}rd#d#)i!&6gN zJw1EvVENLlQt#e{pbAv2S^3yPrfccwyLay@y&8b;iZqg~bk{hM(x0b&qCL_jaF8a9 z02UI&qcR^F5)v63OQNMyF4H!zww)sadueYEYl-{$BThz!3buP^X9rjU4+4ARc`f&Z z9;H8$+|62AUTy`vf&1A1rl&_$Tf4z6&;qnt5s1VayR)%bgMsk=r}1U_3jb%~I~q5D zg;?Kwk`O}od=_1n$DRN-F65ZTqid{%g}}vW_>EuT#){oxgojoCYuhN RgP#=0*3!YE%FO@PzW|b=SjPYW literal 0 HcmV?d00001 diff --git a/renderer_8h_source.html b/renderer_8h_source.html new file mode 100644 index 0000000..81c0195 --- /dev/null +++ b/renderer_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +ShaderTool: src/renderer.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    ShaderTool +  0.1 +
    +
    Live tool for developing OpenGL shaders interactively
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    renderer.h
    +
    +
    +Go to the documentation of this file.
    1 #ifndef RENDERER_H
    +
    2 #define RENDERER_H
    +
    3 
    +
    4 #include <GLFW/glfw3.h>
    +
    5 
    +
    9 struct shader_state {
    +
    10  unsigned int program;
    +
    11  const char *filename;
    +
    12  int wd;
    +
    13 };
    +
    14 
    + +
    20  GLFWwindow *window;
    + + +
    23  int inotify_fd;
    +
    24  size_t frame_count;
    + +
    26  double time;
    +
    27  double prev_time;
    +
    28 };
    +
    29 
    +
    30 GLFWwindow *initialize_window(int width, int height);
    +
    31 unsigned int initialize_vertices();
    +
    32 unsigned int initialize_framebuffer(unsigned int *framebuffer,
    +
    33  unsigned int *texture_color_buffer,
    +
    34  unsigned int texture_width,
    +
    35  unsigned int texture_height);
    +
    36 void framebuffer_size_callback(GLFWwindow *window, int width, int height);
    +
    37 
    +
    38 #endif /* RENDERER_H */
    +
    +
    size_t frame_count
    Definition: renderer.h:24
    +
    unsigned int program
    Definition: renderer.h:10
    +
    unsigned int initialize_vertices()
    Initialize the vertex array.
    Definition: renderer.c:58
    +
    const char * filename
    Definition: renderer.h:11
    +
    unsigned int initialize_framebuffer(unsigned int *framebuffer, unsigned int *texture_color_buffer, unsigned int texture_width, unsigned int texture_height)
    Initialize a framebuffer and the associated texture.
    Definition: renderer.c:108
    +
    Definition: renderer.h:19
    +
    struct shader_state buffer_shader
    Definition: renderer.h:22
    +
    GLFWwindow * window
    Definition: renderer.h:20
    +
    Definition: renderer.h:9
    +
    void framebuffer_size_callback(GLFWwindow *window, int width, int height)
    Callback to adjust the size of the viewport when the window is resized.
    Definition: renderer.c:141
    +
    int inotify_fd
    Definition: renderer.h:23
    +
    double prev_time
    Definition: renderer.h:27
    +
    int wd
    Definition: renderer.h:12
    +
    struct shader_state screen_shader
    Definition: renderer.h:21
    +
    size_t prev_frame_count
    Definition: renderer.h:25
    +
    GLFWwindow * initialize_window(int width, int height)
    Initialize GLFW and OpenGL, and create a window.
    Definition: renderer.c:16
    +
    double time
    Definition: renderer.h:26
    + + + + diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 0000000..26dd244 --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..4a57c1f --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['basename_5fwithout_5fsuffix_0',['basename_without_suffix',['../io_8c.html#a04487b3f64fdc93c3ce0037ca16cbff0',1,'basename_without_suffix(const char *filename): io.c'],['../io_8h.html#a04487b3f64fdc93c3ce0037ca16cbff0',1,'basename_without_suffix(const char *filename): io.c']]], + ['buf_5flen_1',['BUF_LEN',['../io_8c.html#a8b5839f71a3b6e7d64b2d5e9967e3dd1',1,'io.c']]], + ['buffer_5fshader_2',['buffer_shader',['../structrenderer__state.html#a39726f9047174897d3cd54bf34f0c918',1,'renderer_state']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 0000000..8eb215b --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..20fa076 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['capture_5fscreenshot_3',['capture_screenshot',['../io_8c.html#a3055c0f3882078342855d3eae628c488',1,'capture_screenshot(struct renderer_state *state): io.c'],['../io_8h.html#a3055c0f3882078342855d3eae628c488',1,'capture_screenshot(struct renderer_state *state): io.c']]], + ['compile_5fshaders_4',['compile_shaders',['../shaders_8c.html#a199bc15d3bf9a2b6948bfbf44e90652c',1,'compile_shaders(unsigned int *shader_program, const char *const fragment_shader_file): shaders.c'],['../shaders_8h.html#a199bc15d3bf9a2b6948bfbf44e90652c',1,'compile_shaders(unsigned int *shader_program, const char *const fragment_shader_file): shaders.c']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 0000000..b26d916 --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..17b4208 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['filename_5',['filename',['../structshader__state.html#a4a39bb26de28029c609c6c2c3dbf92fc',1,'shader_state']]], + ['frame_5fcount_6',['frame_count',['../structrenderer__state.html#ab6592afba4a3b9fcc76eb5853b9fecb3',1,'renderer_state']]], + ['framebuffer_5fsize_5fcallback_7',['framebuffer_size_callback',['../renderer_8c.html#a5180f7bf2b71421af837035824a8c8ac',1,'framebuffer_size_callback(GLFWwindow *window, int width, int height): renderer.c'],['../renderer_8h.html#a5180f7bf2b71421af837035824a8c8ac',1,'framebuffer_size_callback(GLFWwindow *window, int width, int height): renderer.c']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 0000000..b61b96f --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..3513258 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['initialize_5fframebuffer_8',['initialize_framebuffer',['../renderer_8c.html#a5d8bc1fbae1bbe4bd2e70c9b645875ab',1,'initialize_framebuffer(unsigned int *framebuffer, unsigned int *texture_color_buffer, unsigned int texture_width, unsigned int texture_height): renderer.c'],['../renderer_8h.html#a5d8bc1fbae1bbe4bd2e70c9b645875ab',1,'initialize_framebuffer(unsigned int *framebuffer, unsigned int *texture_color_buffer, unsigned int texture_width, unsigned int texture_height): renderer.c']]], + ['initialize_5fvertices_9',['initialize_vertices',['../renderer_8c.html#a934ec25611d153f2e7f357573ade2061',1,'initialize_vertices(): renderer.c'],['../renderer_8h.html#a934ec25611d153f2e7f357573ade2061',1,'initialize_vertices(): renderer.c']]], + ['initialize_5fwindow_10',['initialize_window',['../renderer_8c.html#a906b1457eeeaa2d7a9655343af151f66',1,'initialize_window(int width, int height): renderer.c'],['../renderer_8h.html#a906b1457eeeaa2d7a9655343af151f66',1,'initialize_window(int width, int height): renderer.c']]], + ['inotify_5ffd_11',['inotify_fd',['../structrenderer__state.html#a36edaf5f4fdce89e7dc3a1d47cf96795',1,'renderer_state']]], + ['io_2ec_12',['io.c',['../io_8c.html',1,'']]], + ['io_2eh_13',['io.h',['../io_8h.html',1,'']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 0000000..06de155 --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..2867ced --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['main_14',['main',['../main_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main.c']]], + ['main_2ec_15',['main.c',['../main_8c.html',1,'']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 0000000..2544c4e --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..293fe14 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['prev_5fframe_5fcount_16',['prev_frame_count',['../structrenderer__state.html#a823e5fe4cf25de6572b02c4278f24a47',1,'renderer_state']]], + ['prev_5ftime_17',['prev_time',['../structrenderer__state.html#a774cdc17c1ec071da811f56ffd4e090b',1,'renderer_state']]], + ['process_5finput_18',['process_input',['../io_8c.html#a526d50cc66c2573b2e5b96c7256e9fae',1,'process_input(struct renderer_state *state): io.c'],['../io_8h.html#a526d50cc66c2573b2e5b96c7256e9fae',1,'process_input(struct renderer_state *state): io.c']]], + ['program_19',['program',['../structshader__state.html#a585871ab45d0a6f6b0f5bacbccce0896',1,'shader_state']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 0000000..43f14ea --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..1f83cef --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['read_5ffile_20',['read_file',['../shaders_8c.html#abf2fc422517537eba9784a4cb7ecab69',1,'read_file(const char *const filename): shaders.c'],['../shaders_8h.html#abf2fc422517537eba9784a4cb7ecab69',1,'read_file(const char *const filename): shaders.c']]], + ['renderer_2ec_21',['renderer.c',['../renderer_8c.html',1,'']]], + ['renderer_2eh_22',['renderer.h',['../renderer_8h.html',1,'']]], + ['renderer_5fstate_23',['renderer_state',['../structrenderer__state.html',1,'']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 0000000..af52f82 --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..69c2818 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['screen_5fshader_24',['screen_shader',['../structrenderer__state.html#a20e2c1fbe9446676f4cce1b56f501585',1,'renderer_state']]], + ['shader_5fstate_25',['shader_state',['../structshader__state.html',1,'']]], + ['shaders_2ec_26',['shaders.c',['../shaders_8c.html',1,'']]], + ['shaders_2eh_27',['shaders.h',['../shaders_8h.html',1,'']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 0000000..cf2b5df --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..bf1ef18 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['time_28',['time',['../structrenderer__state.html#ab0eb1b70130c2abfed2e2366390ca20f',1,'renderer_state']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 0000000..690785a --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..fb62e8d --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unused_29',['UNUSED',['../renderer_8c.html#aa2c1c2787f4fc780b0a902fc66d5c3ce',1,'renderer.c']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 0000000..f2f3d3a --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..0f9eaa3 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['wd_30',['wd',['../structshader__state.html#a64eb6436823980d957e5fe2937b2779c',1,'shader_state']]], + ['window_31',['window',['../structrenderer__state.html#a66a324cf71a869d65347455d97f82d33',1,'renderer_state']]], + ['window_5fheight_32',['WINDOW_HEIGHT',['../main_8c.html#a5473cf64fa979b48335079c99532e243',1,'main.c']]], + ['window_5fwidth_33',['WINDOW_WIDTH',['../main_8c.html#a498d9f026138406895e9a34b504ac6a6',1,'main.c']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 0000000..f7e4c14 --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..7e93bcd --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['renderer_5fstate_34',['renderer_state',['../structrenderer__state.html',1,'']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 0000000..c7ff4b3 --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..700e195 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['shader_5fstate_35',['shader_state',['../structshader__state.html',1,'']]] +]; diff --git a/search/close.png b/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/search/defines_0.html b/search/defines_0.html new file mode 100644 index 0000000..2deb369 --- /dev/null +++ b/search/defines_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/defines_0.js b/search/defines_0.js new file mode 100644 index 0000000..82c9707 --- /dev/null +++ b/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buf_5flen_64',['BUF_LEN',['../io_8c.html#a8b5839f71a3b6e7d64b2d5e9967e3dd1',1,'io.c']]] +]; diff --git a/search/defines_1.html b/search/defines_1.html new file mode 100644 index 0000000..e0d0b6d --- /dev/null +++ b/search/defines_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/defines_1.js b/search/defines_1.js new file mode 100644 index 0000000..a914d66 --- /dev/null +++ b/search/defines_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unused_65',['UNUSED',['../renderer_8c.html#aa2c1c2787f4fc780b0a902fc66d5c3ce',1,'renderer.c']]] +]; diff --git a/search/defines_2.html b/search/defines_2.html new file mode 100644 index 0000000..707f942 --- /dev/null +++ b/search/defines_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/defines_2.js b/search/defines_2.js new file mode 100644 index 0000000..fdd9e1d --- /dev/null +++ b/search/defines_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['window_5fheight_66',['WINDOW_HEIGHT',['../main_8c.html#a5473cf64fa979b48335079c99532e243',1,'main.c']]], + ['window_5fwidth_67',['WINDOW_WIDTH',['../main_8c.html#a498d9f026138406895e9a34b504ac6a6',1,'main.c']]] +]; diff --git a/search/files_0.html b/search/files_0.html new file mode 100644 index 0000000..737608e --- /dev/null +++ b/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 0000000..d93cae1 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['io_2ec_36',['io.c',['../io_8c.html',1,'']]], + ['io_2eh_37',['io.h',['../io_8h.html',1,'']]] +]; diff --git a/search/files_1.html b/search/files_1.html new file mode 100644 index 0000000..f27a62d --- /dev/null +++ b/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 0000000..c36062c --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2ec_38',['main.c',['../main_8c.html',1,'']]] +]; diff --git a/search/files_2.html b/search/files_2.html new file mode 100644 index 0000000..a45066e --- /dev/null +++ b/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 0000000..0f2e2e5 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['renderer_2ec_39',['renderer.c',['../renderer_8c.html',1,'']]], + ['renderer_2eh_40',['renderer.h',['../renderer_8h.html',1,'']]] +]; diff --git a/search/files_3.html b/search/files_3.html new file mode 100644 index 0000000..1076bc5 --- /dev/null +++ b/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 0000000..ec05d0d --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['shaders_2ec_41',['shaders.c',['../shaders_8c.html',1,'']]], + ['shaders_2eh_42',['shaders.h',['../shaders_8h.html',1,'']]] +]; diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 0000000..e17c711 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..39ea67e --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['basename_5fwithout_5fsuffix_43',['basename_without_suffix',['../io_8c.html#a04487b3f64fdc93c3ce0037ca16cbff0',1,'basename_without_suffix(const char *filename): io.c'],['../io_8h.html#a04487b3f64fdc93c3ce0037ca16cbff0',1,'basename_without_suffix(const char *filename): io.c']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 0000000..0ddac0a --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..98a1cd3 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['capture_5fscreenshot_44',['capture_screenshot',['../io_8c.html#a3055c0f3882078342855d3eae628c488',1,'capture_screenshot(struct renderer_state *state): io.c'],['../io_8h.html#a3055c0f3882078342855d3eae628c488',1,'capture_screenshot(struct renderer_state *state): io.c']]], + ['compile_5fshaders_45',['compile_shaders',['../shaders_8c.html#a199bc15d3bf9a2b6948bfbf44e90652c',1,'compile_shaders(unsigned int *shader_program, const char *const fragment_shader_file): shaders.c'],['../shaders_8h.html#a199bc15d3bf9a2b6948bfbf44e90652c',1,'compile_shaders(unsigned int *shader_program, const char *const fragment_shader_file): shaders.c']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 0000000..2737c5a --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..ac6b2e0 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['framebuffer_5fsize_5fcallback_46',['framebuffer_size_callback',['../renderer_8c.html#a5180f7bf2b71421af837035824a8c8ac',1,'framebuffer_size_callback(GLFWwindow *window, int width, int height): renderer.c'],['../renderer_8h.html#a5180f7bf2b71421af837035824a8c8ac',1,'framebuffer_size_callback(GLFWwindow *window, int width, int height): renderer.c']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 0000000..6da86e7 --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..de53887 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['initialize_5fframebuffer_47',['initialize_framebuffer',['../renderer_8c.html#a5d8bc1fbae1bbe4bd2e70c9b645875ab',1,'initialize_framebuffer(unsigned int *framebuffer, unsigned int *texture_color_buffer, unsigned int texture_width, unsigned int texture_height): renderer.c'],['../renderer_8h.html#a5d8bc1fbae1bbe4bd2e70c9b645875ab',1,'initialize_framebuffer(unsigned int *framebuffer, unsigned int *texture_color_buffer, unsigned int texture_width, unsigned int texture_height): renderer.c']]], + ['initialize_5fvertices_48',['initialize_vertices',['../renderer_8c.html#a934ec25611d153f2e7f357573ade2061',1,'initialize_vertices(): renderer.c'],['../renderer_8h.html#a934ec25611d153f2e7f357573ade2061',1,'initialize_vertices(): renderer.c']]], + ['initialize_5fwindow_49',['initialize_window',['../renderer_8c.html#a906b1457eeeaa2d7a9655343af151f66',1,'initialize_window(int width, int height): renderer.c'],['../renderer_8h.html#a906b1457eeeaa2d7a9655343af151f66',1,'initialize_window(int width, int height): renderer.c']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 0000000..911304e --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..6cfb2e5 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_50',['main',['../main_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main.c']]] +]; diff --git a/search/functions_5.html b/search/functions_5.html new file mode 100644 index 0000000..61b920d --- /dev/null +++ b/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 0000000..ed35d1e --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['process_5finput_51',['process_input',['../io_8c.html#a526d50cc66c2573b2e5b96c7256e9fae',1,'process_input(struct renderer_state *state): io.c'],['../io_8h.html#a526d50cc66c2573b2e5b96c7256e9fae',1,'process_input(struct renderer_state *state): io.c']]] +]; diff --git a/search/functions_6.html b/search/functions_6.html new file mode 100644 index 0000000..dc70a4a --- /dev/null +++ b/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 0000000..a688ccb --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['read_5ffile_52',['read_file',['../shaders_8c.html#abf2fc422517537eba9784a4cb7ecab69',1,'read_file(const char *const filename): shaders.c'],['../shaders_8h.html#abf2fc422517537eba9784a4cb7ecab69',1,'read_file(const char *const filename): shaders.c']]] +]; diff --git a/search/mag_sel.png b/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB literal 0 HcmV?d00001 diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/search/search_r.png b/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/search/searchdata.js b/search/searchdata.js new file mode 100644 index 0000000..2f0c998 --- /dev/null +++ b/search/searchdata.js @@ -0,0 +1,30 @@ +var indexSectionsWithContent = +{ + 0: "bcfimprstuw", + 1: "rs", + 2: "imrs", + 3: "bcfimpr", + 4: "bfipstw", + 5: "buw" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "defines" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Data Structures", + 2: "Files", + 3: "Functions", + 4: "Variables", + 5: "Macros" +}; + diff --git a/search/variables_0.html b/search/variables_0.html new file mode 100644 index 0000000..bf3eba5 --- /dev/null +++ b/search/variables_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_0.js b/search/variables_0.js new file mode 100644 index 0000000..b80a131 --- /dev/null +++ b/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buffer_5fshader_53',['buffer_shader',['../structrenderer__state.html#a39726f9047174897d3cd54bf34f0c918',1,'renderer_state']]] +]; diff --git a/search/variables_1.html b/search/variables_1.html new file mode 100644 index 0000000..49fe59a --- /dev/null +++ b/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_1.js b/search/variables_1.js new file mode 100644 index 0000000..432c965 --- /dev/null +++ b/search/variables_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['filename_54',['filename',['../structshader__state.html#a4a39bb26de28029c609c6c2c3dbf92fc',1,'shader_state']]], + ['frame_5fcount_55',['frame_count',['../structrenderer__state.html#ab6592afba4a3b9fcc76eb5853b9fecb3',1,'renderer_state']]] +]; diff --git a/search/variables_2.html b/search/variables_2.html new file mode 100644 index 0000000..0c8a18c --- /dev/null +++ b/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_2.js b/search/variables_2.js new file mode 100644 index 0000000..63dda14 --- /dev/null +++ b/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['inotify_5ffd_56',['inotify_fd',['../structrenderer__state.html#a36edaf5f4fdce89e7dc3a1d47cf96795',1,'renderer_state']]] +]; diff --git a/search/variables_3.html b/search/variables_3.html new file mode 100644 index 0000000..19a31fc --- /dev/null +++ b/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_3.js b/search/variables_3.js new file mode 100644 index 0000000..7dfe20e --- /dev/null +++ b/search/variables_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['prev_5fframe_5fcount_57',['prev_frame_count',['../structrenderer__state.html#a823e5fe4cf25de6572b02c4278f24a47',1,'renderer_state']]], + ['prev_5ftime_58',['prev_time',['../structrenderer__state.html#a774cdc17c1ec071da811f56ffd4e090b',1,'renderer_state']]], + ['program_59',['program',['../structshader__state.html#a585871ab45d0a6f6b0f5bacbccce0896',1,'shader_state']]] +]; diff --git a/search/variables_4.html b/search/variables_4.html new file mode 100644 index 0000000..bdc37be --- /dev/null +++ b/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_4.js b/search/variables_4.js new file mode 100644 index 0000000..d6ff02f --- /dev/null +++ b/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['screen_5fshader_60',['screen_shader',['../structrenderer__state.html#a20e2c1fbe9446676f4cce1b56f501585',1,'renderer_state']]] +]; diff --git a/search/variables_5.html b/search/variables_5.html new file mode 100644 index 0000000..6aa2249 --- /dev/null +++ b/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_5.js b/search/variables_5.js new file mode 100644 index 0000000..53c5941 --- /dev/null +++ b/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['time_61',['time',['../structrenderer__state.html#ab0eb1b70130c2abfed2e2366390ca20f',1,'renderer_state']]] +]; diff --git a/search/variables_6.html b/search/variables_6.html new file mode 100644 index 0000000..ce4a906 --- /dev/null +++ b/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_6.js b/search/variables_6.js new file mode 100644 index 0000000..34f3651 --- /dev/null +++ b/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wd_62',['wd',['../structshader__state.html#a64eb6436823980d957e5fe2937b2779c',1,'shader_state']]], + ['window_63',['window',['../structrenderer__state.html#a66a324cf71a869d65347455d97f82d33',1,'renderer_state']]] +]; diff --git a/shaders_8c.html b/shaders_8c.html new file mode 100644 index 0000000..981b8f3 --- /dev/null +++ b/shaders_8c.html @@ -0,0 +1,178 @@ + + + + + + + +ShaderTool: src/shaders.c File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    ShaderTool +  0.1 +
    +
    Live tool for developing OpenGL shaders interactively
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    shaders.c File Reference
    +
    +
    +
    #include <GL/glew.h>
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include "log.h"
    +
    +Include dependency graph for shaders.c:
    +
    +
    + + + + + + + +
    +
    + + + + + + + +

    +Functions

    char * read_file (const char *const filename)
     Reads a file in a heap-allocated buffer. More...
     
    int compile_shaders (unsigned int *shader_program, const char *const fragment_shader_file)
     Compile shaders from source files. More...
     
    +

    Function Documentation

    + +

    ◆ compile_shaders()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int compile_shaders (unsigned int * shader_program,
    const char *const fragment_shader_file 
    )
    +
    + +

    Compile shaders from source files.

    +

    This function reads the source files of the vertex and fragment shaders, compiles them, and links them together in a shader program.

    +
    Parameters
    + + + +
    shader_programPointer to the ID of the shader program where the shaders will be stored.
    fragment_shader_fileFile name of the fragment shader.
    +
    +
    +
    Returns
    0 on success, 1 on error.
    + +
    +
    + +

    ◆ read_file()

    + +
    +
    + + + + + + + + +
    char* read_file (const char *const filename)
    +
    + +

    Reads a file in a heap-allocated buffer.

    +

    This function computes the length of the file, allocate a buffer of the correct size, and reads the file in the buffer. Returns NULL on error.

    +
    Parameters
    + + +
    filenameThe file to read.
    +
    +
    +
    Returns
    A buffer containing the contents of the file, or NULL if there was an error.
    + +
    +
    +
    + + + + diff --git a/shaders_8c__incl.map b/shaders_8c__incl.map new file mode 100644 index 0000000..cf74f87 --- /dev/null +++ b/shaders_8c__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/shaders_8c__incl.md5 b/shaders_8c__incl.md5 new file mode 100644 index 0000000..028b4a5 --- /dev/null +++ b/shaders_8c__incl.md5 @@ -0,0 +1 @@ +6faf6964b15a53afd401a1a849666530 \ No newline at end of file diff --git a/shaders_8c__incl.png b/shaders_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..55a5fab37917ab01652ae0fe0c8124b5703ad97a GIT binary patch literal 8899 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 literal 0 HcmV?d00001 diff --git a/shaders_8h.html b/shaders_8h.html new file mode 100644 index 0000000..9e303d5 --- /dev/null +++ b/shaders_8h.html @@ -0,0 +1,174 @@ + + + + + + + +ShaderTool: src/shaders.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    ShaderTool +  0.1 +
    +
    Live tool for developing OpenGL shaders interactively
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    shaders.h File Reference
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions

    char * read_file (const char *const filename)
     Reads a file in a heap-allocated buffer. More...
     
    int compile_shaders (unsigned int *shader_program, const char *const fragment_shader_file)
     Compile shaders from source files. More...
     
    +

    Function Documentation

    + +

    ◆ compile_shaders()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int compile_shaders (unsigned int * shader_program,
    const char *const fragment_shader_file 
    )
    +
    + +

    Compile shaders from source files.

    +

    This function reads the source files of the vertex and fragment shaders, compiles them, and links them together in a shader program.

    +
    Parameters
    + + + +
    shader_programPointer to the ID of the shader program where the shaders will be stored.
    fragment_shader_fileFile name of the fragment shader.
    +
    +
    +
    Returns
    0 on success, 1 on error.
    + +
    +
    + +

    ◆ read_file()

    + +
    +
    + + + + + + + + +
    char* read_file (const char *const filename)
    +
    + +

    Reads a file in a heap-allocated buffer.

    +

    This function computes the length of the file, allocate a buffer of the correct size, and reads the file in the buffer. Returns NULL on error.

    +
    Parameters
    + + +
    filenameThe file to read.
    +
    +
    +
    Returns
    A buffer containing the contents of the file, or NULL if there was an error.
    + +
    +
    +
    + + + + diff --git a/shaders_8h__dep__incl.map b/shaders_8h__dep__incl.map new file mode 100644 index 0000000..6d814bc --- /dev/null +++ b/shaders_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/shaders_8h__dep__incl.md5 b/shaders_8h__dep__incl.md5 new file mode 100644 index 0000000..b3d1b79 --- /dev/null +++ b/shaders_8h__dep__incl.md5 @@ -0,0 +1 @@ +804ae3cffc420d9cae49a4407d6eeab7 \ No newline at end of file diff --git a/shaders_8h__dep__incl.png b/shaders_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..8243bf2275aaa2d06bbfdc07b93f7e6fe74097c1 GIT binary patch literal 4573 zcmY*d2Q*yG`(B;3N)R<+i3HJm^j#$(8!V#to&=Gs-h;4uC!*IVQ4)QzR_{HC7DVqp zU6lCU@0|bnpYzQ<_s%(Y=FGhF%scP#X z2;|_flbXuN=TN{%ILInToTo+l|3k{N6A+P*Y;0@{)H}PlRHM<)5D0Sk2{l@?7ba$n zHwihJ)Hj#&yQFizn@yc0f^>6p^YM}KDV5O`c*U|?+QNPjXfJFrV);^Gep)X+ad8)y+*aOSW(07#KdnTjOz6MTG!2_bVht6{OTY%B9RE zY%)an^9%aOF1u=7UET8X@}Cu^yf<$Sm%Dy^QMVRiq@bV(2??32b4q{mJ`Vt)vQlt6 z3o!iX2=(k)k7dxs)s^OF5fycHr{C=%9Pz~^C2E&@DSlQTg+EoLy8XFs50XX<`pvRyCLf*aj-;JOT z9z2lG4p{AtPf4LiAO;E%pNx!*^31n(cJkS_cXpT{q2Is1$N3?iKX-I;nsJm!A7Xt> zitd0b0CwPkyuH0aAW7#1z%v~I2k`Ka1hsZ|6N5&lr;7m`ewi6%!k{1!u!I3UQ*(1? zOG|cMR4PHdEmCeZ$bc9h1Z);iprok1*;)z~iPhEBoWA6`z0lB5n(%^(is8;qW%r); zc0~q;Prrj9%G`9odPOB9rrO%zN=hpm*#UoV&KL1OCIaC}z!`Z5zi|mzPgHp;u>nkzrv-y~Z#QfVYp&ReyiK(_Ee3 z#XoHm6JpZRMoLQ7OLkgXT0JrM=NjD{^z}bAHC;8j?Ew86Oe%77fAumrq89ro6AMt4l#i$r`!T$^Ph3=)l_ZbTtlGnZS#;KolDN8%b;p zxNV>M)2GA>H1b;9U<9O=)wsn zCR*+69>|?tdJCgFkorBh@?O@~4?Yca8Fyv3PQXU8#(hp{Vj_1On|A<@xN4?L(qANp(tGi4}(;;QWr zyghdT$bU_5ao*4V7zhTN4QF9Dx}!HpgNloVuvn+3ENuf0%t0`#@5)eWev{NHpYy^N z`9lNMhxh3usUZj&+GBitO7f7*O-;%UE01%Y{OFb6!Xa%RMn6~yqgHz<*s@pkE18oj zQyq~ruu3y=PoD#YcThGs_4kXFBq(w4?`4tKHMuplled@pS*|Uq27Ek%mD!?P>~c4_ z>g$pF_^~ezin7l4e7HPPM1_~`L?hiAv7Og_aF$`)m3Rf6oKIcCTUi-ojdFiQ)Kn!zYFd(%5Wdp=y0k>g#(%OmH!X0g z{J7cMO*FR0_WLDUS_D`rhSt+?eegT0=h?88u&bN6MkY8W#_Y*QY%ydKLI_Hgp5#^t zI4;$#0Kqmfl3)m8bsvYc8?Ldaz7+$Zp}oVyyWP=yF6-1glmvFjQ6K|~i>Cy4D3jvP z&N7ed1-4l4=RfVTYjZ9Ih z(<&SnP?~P+tFJF;gt~NPkF9^mzt_0jmYz1NuHMnn5wN|x3rA>VHCtO%ZJq6byMhz% zfSI|)Pt!gdcIH1jupu|cy)7<%qy7Ba=iKa^myGPsSR4Bn491k_u#af+i;Jw6c9RAC zsLn}#XUfY;?==EZ^htmDWa~>$Y-M+ub`Y#Y7^z8hkKVnz&C*IWOeW=Yd%H?UN8b#4 zd2+I)xo=7dq;r$`%G%oY1Dtty7Pn>J;Ai@spCiAIU9uDyEKI~(kUg;ax5>8`)^Oiz z5gi>l6GCO>>t9puimzTh_3*ewyCE4P7>h9&>y_?ma{3qM&C_^-6nyj##Kpf=Xf*ho zKWrAWpi+U*F?nURS#WathF3yFs}HZvh%%nMzuKPUx_I0MdCa)EJF|Ryz488eKbR67 zT~EKXVSjLNz<4MA&)*v^VYRRmV(;?`o=5A;xW8*#+ohvU;D826iErF)4s&nq$F70P=2bs zUps)D&-ve{f5c&&5~C|UlO$ATE5|s%xk#P)gTJ|#qpOb#PIokQe9|}!DJEuSSeVm( z@5=IU_ud8CJ1k&}0c_J_V;vhCOXao@_OF2#*W?^p_P{DQa4a7NCN(t7vXb2n+KKu# zFkFR!0_FlT9u-gI7ZzJB;)?ue!I~o_aCk+0{EV*ds!w#ADs=JJ1r^(@oZR_vx_x3Q z*Ah%jGJ4aeXjB^Oi;ImA1k3 zJd^0);grammcO%IKYzaM2o+VdBv~*@B75Bp^YdE{A*bRXJ=&?XJ z1bi(n)#U2$&iUVkzvIO;C(_{_}C9(J)6#>MN9xvQhx zOZ472M+xmO$m5lmP!*K0kC*hhA#9~;+mf62tFUM!vVVn|RKsZ2O|&|Uglb`#Us)q; zI^^`ERbF0ATAF!d1Z{=urnBaxvFVD)*VR?muTXyFzYxFEejwM=*vI2--_Zz{|e^YZfp z>*>q3wgUZp6J{JIBN=cHbr$($@`eWoJN2U)8$(JK}J$%$+8n=ReTco*xqv8R8C89cVT-6DwzDw!3%N_V+8w%Wr;YD%951 zg@%M2ddkYlVdLWBVq#(kgk4-*82AiYEre|5<^X1Qmsf9dXNQH6vCOEp6oc`yC{!Zi zBz@i&j>YFC;OaD`K^UtTVfq?+9=z=@<+qQz3vA9`{+)o>j&j z!VhGNy4YAvCnqOe-DE)70Q#lX8x4MP%^&u=o{7w0y%Qjk^Yhn#Z?1qoa5#K+c6QPC zSRJrmMI|IR*HTX}#j#KbqTqY+ZoELvemDb;u+ez~;B9B;e!l-JCML$T$sHix2+jom zs%Poigz(l6#!UGVqdPw<#l^)D2*gz~V0i8=1!+*T&p9RNpQE(_|2Z*9$?BQisVTjg ze81D}yP&0^bjeK#TU%SuhsH+fnfri=5CdjaL#gl8)c}oG9B`g*z=I=wu6iUvM8w2z z7hC)+CV6;x@bK_9H~fibaRIm*FbJlu9=#ibDxhN;gyrwId&&Y}ZPYo=ECU?b`*gb} zmJNXu5fxQZX!g5G>9YYu!`Ymqpy0^lq^|LmCb?_r*RO_rDHx2@E$IQJU7)}zmnf%WM=LyE#(vz62XxM1_tWtLph}A37%*@On z(AIv(4io=TRN(dXwSakxiMICg*4Ebg`qa!!cnTt0!v5`B0s6?XFDfbX^Ck)kIR6mZ zM=w5DHk6ivZ>p=RX!w(U*%g22gkz+bLeCEtfhc+1bkIUeN=OsVDFytqlp^HiEzFld z`uqQlxi9mWmlq)JomTGwBJTQ*t7~v@@aIpD)9uNTYz61nuch2~rva5@!Pw&ar>e5j z85hmZ$2UJeuc)L%gb#OfI}N2^Ss%%Ewy_}uky28g9UU=0&S^%M`6gv0TEc>Nwzo@5 zOX(RH0O1<@ymVYg`VGNQmRx$r@4;*Zb4^V_DJdylUIfA+PJcK{-fwnlYHDt7uDyM^ zEtrIrm6eEy2#_M<70*+Ec)-tJzV)MMBvrVhvvYN#MCSq76Qecj9)ndI?!loUS{j-Z zLGz0Id|Fo47MngAj4dx$VHE*~Erl$}Ls?l_5fM~W5EbD7yk_1agSHDVf+}zAk)))@ zOQ+K!5D_ZqS9w%K1bA?pgPg9H%uh1w|L!XOqXMkrs=wI|q*zueZ9&}7s`AD0iQktr z`A0vJ(O%!&946$Myiiw9M)AGu4_^jE;CYj}T3PL(SV1uBzt + + + + + + +ShaderTool: src/shaders.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    ShaderTool +  0.1 +
    +
    Live tool for developing OpenGL shaders interactively
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    shaders.h
    +
    +
    +Go to the documentation of this file.
    1 #ifndef SHADERS_H
    +
    2 #define SHADERS_H
    +
    3 
    +
    4 char *read_file(const char *const filename);
    +
    5 int compile_shaders(unsigned int *shader_program,
    +
    6  const char *const fragment_shader_file);
    +
    7 
    +
    8 #endif /* SHADERS_H */
    +
    +
    int compile_shaders(unsigned int *shader_program, const char *const fragment_shader_file)
    Compile shaders from source files.
    Definition: shaders.c:64
    +
    const char * filename
    Definition: renderer.h:11
    +
    char * read_file(const char *const filename)
    Reads a file in a heap-allocated buffer.
    Definition: shaders.c:18
    + + + + diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/structrenderer__state.html b/structrenderer__state.html new file mode 100644 index 0000000..631ab13 --- /dev/null +++ b/structrenderer__state.html @@ -0,0 +1,237 @@ + + + + + + + +ShaderTool: renderer_state Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    ShaderTool +  0.1 +
    +
    Live tool for developing OpenGL shaders interactively
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    renderer_state Struct Reference
    +
    +
    + +

    #include <renderer.h>

    +
    +Collaboration diagram for renderer_state:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + +

    +Data Fields

    GLFWwindow * window
     
    struct shader_state screen_shader
     
    struct shader_state buffer_shader
     
    int inotify_fd
     
    size_t frame_count
     
    size_t prev_frame_count
     
    double time
     
    double prev_time
     
    +

    Detailed Description

    +

    Structure representing the state of the renderer and associated shaders.

    +

    Field Documentation

    + +

    ◆ buffer_shader

    + +
    +
    + + + + +
    struct shader_state renderer_state::buffer_shader
    +
    +

    Shader for the framebuffer.

    + +
    +
    + +

    ◆ frame_count

    + +
    +
    + + + + +
    size_t renderer_state::frame_count
    +
    +

    Frame count since the start of the render loop.

    + +
    +
    + +

    ◆ inotify_fd

    + +
    +
    + + + + +
    int renderer_state::inotify_fd
    +
    +

    inotify file descriptor.

    + +
    +
    + +

    ◆ prev_frame_count

    + +
    +
    + + + + +
    size_t renderer_state::prev_frame_count
    +
    +

    Frame count at the last log.

    + +
    +
    + +

    ◆ prev_time

    + +
    +
    + + + + +
    double renderer_state::prev_time
    +
    +

    Time in seconds at the last log.

    + +
    +
    + +

    ◆ screen_shader

    + +
    +
    + + + + +
    struct shader_state renderer_state::screen_shader
    +
    +

    Shader for the main screen.

    + +
    +
    + +

    ◆ time

    + +
    +
    + + + + +
    double renderer_state::time
    +
    +

    Time in seconds since the start of the render loop.

    + +
    +
    + +

    ◆ window

    + +
    +
    + + + + +
    GLFWwindow* renderer_state::window
    +
    +

    GLFW window where the shaders are rendered.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structrenderer__state__coll__graph.map b/structrenderer__state__coll__graph.map new file mode 100644 index 0000000..9ae437e --- /dev/null +++ b/structrenderer__state__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/structrenderer__state__coll__graph.md5 b/structrenderer__state__coll__graph.md5 new file mode 100644 index 0000000..7abe547 --- /dev/null +++ b/structrenderer__state__coll__graph.md5 @@ -0,0 +1 @@ +367dd857d67387d6272323bfdc6fab23 \ No newline at end of file diff --git a/structrenderer__state__coll__graph.png b/structrenderer__state__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..61e61a4af88fe8fe77cc8719121c3a41e8bd2a8a GIT binary patch literal 3769 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 + + + + + + +ShaderTool: shader_state Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    ShaderTool +  0.1 +
    +
    Live tool for developing OpenGL shaders interactively
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    shader_state Struct Reference
    +
    +
    + +

    #include <renderer.h>

    + + + + + + + + +

    +Data Fields

    unsigned int program
     
    const char * filename
     
    int wd
     
    +

    Detailed Description

    +

    Structure representing the state of a shader.

    +

    Field Documentation

    + +

    ◆ filename

    + +
    +
    + + + + +
    const char* shader_state::filename
    +
    +

    Shader file name.

    + +
    +
    + +

    ◆ program

    + +
    +
    + + + + +
    unsigned int shader_state::program
    +
    +

    Shader program ID.

    + +
    +
    + +

    ◆ wd

    + +
    +
    + + + + +
    int shader_state::wd
    +
    +

    inotify watch descriptor.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}