From ed41804a7f945a6b320ae7e299d5cb0e39fd81da Mon Sep 17 00:00:00 2001 From: Michael Fogleman Date: Sat, 11 Jan 2014 23:05:35 -0500 Subject: [PATCH 01/28] alpha stuff --- src/item.c | 9 ++++++++- src/item.h | 2 ++ src/main.c | 38 ++++++++++++++++++++++++++++++++------ textures/texture.png | Bin 35751 -> 35757 bytes 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/item.c b/src/item.c index 907c4c30b..4efc40908 100644 --- a/src/item.c +++ b/src/item.c @@ -56,7 +56,8 @@ const int items[] = { COLOR_28, COLOR_29, COLOR_30, - COLOR_31 + COLOR_31, + WATER }; const int item_count = sizeof(items) / sizeof(int); @@ -127,6 +128,7 @@ const int blocks[256][6] = { {205, 205, 205, 205, 205, 205}, // 61 {206, 206, 206, 206, 206, 206}, // 62 {207, 207, 207, 207, 207, 207}, // 63 + {255, 255, 255, 255, 255, 255}, // 64 }; const int plants[256] = { @@ -182,12 +184,17 @@ int is_transparent(int w) { case EMPTY: case GLASS: case LEAVES: + case WATER: return 1; default: return 0; } } +int is_alpha(int w) { + return w == WATER; +} + int is_destructable(int w) { switch (w) { case EMPTY: diff --git a/src/item.h b/src/item.h index ed801cf15..0d9226e28 100644 --- a/src/item.h +++ b/src/item.h @@ -57,6 +57,7 @@ #define COLOR_29 61 #define COLOR_30 62 #define COLOR_31 63 +#define WATER 64 extern const int items[]; extern const int item_count; @@ -66,6 +67,7 @@ extern const int plants[256]; int is_plant(int w); int is_obstacle(int w); int is_transparent(int w); +int is_alpha(int w); int is_destructable(int w); #endif diff --git a/src/main.c b/src/main.c index 038cad029..d6738f92f 100644 --- a/src/main.c +++ b/src/main.c @@ -39,11 +39,13 @@ typedef struct { int p; int q; int faces; + int alpha_faces; int sign_faces; int dirty; int miny; int maxy; GLuint buffer; + GLuint alpha_buffer; GLuint sign_buffer; } Chunk; @@ -823,6 +825,7 @@ void gen_chunk_buffer(Chunk *chunk) { // second pass - count exposed faces int faces = 0; + int alpha_faces = 0; MAP_FOR_EACH(map, e) { if (e->w <= 0) { continue; @@ -840,12 +843,19 @@ void gen_chunk_buffer(Chunk *chunk) { if (is_plant(e->w)) { total = total ? 4 : 0; } - faces += total; + if (is_alpha(e->w)) { + alpha_faces += total; + } + else { + faces += total; + } } END_MAP_FOR_EACH; // third pass - generate geometry GLfloat *data = malloc_faces(9, faces); + GLfloat *alpha_data = malloc_faces(9, alpha_faces); int offset = 0; + int alpha_offset = 0; MAP_FOR_EACH(map, e) { if (e->w <= 0) { continue; @@ -873,6 +883,7 @@ void gen_chunk_buffer(Chunk *chunk) { make_plant( data + offset, e->x, e->y, e->z, 0.5, e->w, rotation); + offset += total * 54; } else { int index = 0; @@ -886,17 +897,29 @@ void gen_chunk_buffer(Chunk *chunk) { } float ao[6][4]; occlusion(neighbors, ao); - make_cube( - data + offset, ao, - f1, f2, f3, f4, f5, f6, - e->x, e->y, e->z, 0.5, e->w); + if (is_alpha(e->w)) { + make_cube( + alpha_data + alpha_offset, ao, + f1, f2, f3, f4, f5, f6, + e->x, e->y, e->z, 0.5, e->w); + alpha_offset += total * 54; + } + else { + make_cube( + data + offset, ao, + f1, f2, f3, f4, f5, f6, + e->x, e->y, e->z, 0.5, e->w); + offset += total * 54; + } } - offset += total * 54; } END_MAP_FOR_EACH; del_buffer(chunk->buffer); + del_buffer(chunk->alpha_buffer); chunk->buffer = gen_faces(9, faces, data); + chunk->alpha_buffer = gen_faces(9, alpha_faces, alpha_data); chunk->faces = faces; + chunk->alpha_faces = alpha_faces; gen_sign_buffer(chunk); @@ -912,9 +935,11 @@ void create_chunk(Chunk *chunk, int p, int q) { chunk->p = p; chunk->q = q; chunk->faces = 0; + chunk->alpha_faces = 0; chunk->sign_faces = 0; chunk->dirty = 1; chunk->buffer = 0; + chunk->alpha_buffer = 0; chunk->sign_buffer = 0; Map *map = &chunk->map; SignList *signs = &chunk->signs; @@ -950,6 +975,7 @@ void delete_chunks() { map_free(&chunk->map); sign_list_free(&chunk->signs); del_buffer(chunk->buffer); + del_buffer(chunk->alpha_buffer); del_buffer(chunk->sign_buffer); Chunk *other = chunks + (--count); memcpy(chunk, other, sizeof(Chunk)); diff --git a/textures/texture.png b/textures/texture.png index 20d033bdc65c4d752e3dc9ee65422eebf06ae40d..c2b6c34d0710d2b3932369fc9f891dafd380489c 100644 GIT binary patch delta 31669 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%0DG^00I(^4tDke=P{mBIZV13~!r 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 Y*_gHzxjr9#xXN$j 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 delta 31663 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 Date: Tue, 16 Feb 2021 19:39:14 -0500 Subject: [PATCH 02/28] merge deps --- deps/glfw/examples/particles | Bin 0 -> 161296 bytes deps/glfw/src/glfw3Config.cmake | 29 +++++++++ deps/glfw/src/glfw3ConfigVersion.cmake | 51 ++++++++++++++++ deps/glfw/src/glfw_config.h | 81 +++++++++++++++++++++++++ deps/glfw/tests/cursor | Bin 0 -> 136536 bytes deps/glfw/tests/empty | Bin 0 -> 142080 bytes deps/glfw/tests/monitors | Bin 0 -> 136552 bytes deps/glfw/tests/msaa | Bin 0 -> 136584 bytes 8 files changed, 161 insertions(+) create mode 100755 deps/glfw/examples/particles create mode 100644 deps/glfw/src/glfw3Config.cmake create mode 100644 deps/glfw/src/glfw3ConfigVersion.cmake create mode 100644 deps/glfw/src/glfw_config.h create mode 100755 deps/glfw/tests/cursor create mode 100755 deps/glfw/tests/empty create mode 100755 deps/glfw/tests/monitors create mode 100755 deps/glfw/tests/msaa diff --git a/deps/glfw/examples/particles b/deps/glfw/examples/particles new file mode 100755 index 0000000000000000000000000000000000000000..70d3fd1dc7c5af901fac25c884c2ad107498e547 GIT binary patch literal 161296 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 requested version, +# but only if the requested major version is the same as the current one. +# The variable CVF_VERSION must be set before calling configure_file(). + + +set(PACKAGE_VERSION "3.1.2") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + + if("3.1.2" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") + else() + set(CVF_VERSION_MAJOR "3.1.2") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() + + +# if the installed project requested no architecture check, don't perform the check +if("FALSE") + return() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") + math(EXPR installedBits "8 * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/deps/glfw/src/glfw_config.h b/deps/glfw/src/glfw_config.h new file mode 100644 index 000000000..dd3ef5448 --- /dev/null +++ b/deps/glfw/src/glfw_config.h @@ -0,0 +1,81 @@ +//======================================================================== +// GLFW 3.1 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2010 Camilla Berglund +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// As glfw_config.h.in, this file is used by CMake to produce the +// glfw_config.h configuration header file. If you are adding a feature +// requiring conditional compilation, this is where to add the macro. +//======================================================================== +// As glfw_config.h, this file defines compile-time option macros for a +// specific platform and development environment. If you are using the +// GLFW CMake files, modify glfw_config.h.in instead of this file. If you +// are using your own build system, make this file define the appropriate +// macros in whatever way is suitable. +//======================================================================== + +// Define this to 1 if building GLFW for X11 +#define _GLFW_X11 +// Define this to 1 if building GLFW for Win32 +/* #undef _GLFW_WIN32 */ +// Define this to 1 if building GLFW for Cocoa +/* #undef _GLFW_COCOA */ +// Define this to 1 if building GLFW for Wayland +/* #undef _GLFW_WAYLAND */ +// Define this to 1 if building GLFW for Mir +/* #undef _GLFW_MIR */ + +// Define this to 1 if building GLFW for EGL +/* #undef _GLFW_EGL */ +// Define this to 1 if building GLFW for GLX +#define _GLFW_GLX +// Define this to 1 if building GLFW for WGL +/* #undef _GLFW_WGL */ +// Define this to 1 if building GLFW for NSGL +/* #undef _GLFW_NSGL */ + +// Define this to 1 if building as a shared library / dynamic library / DLL +/* #undef _GLFW_BUILD_DLL */ + +// Define this to 1 to force use of high-performance GPU on hybrid systems +/* #undef _GLFW_USE_HYBRID_HPG */ + +// Define this to 1 if the XInput X11 extension is available +#define _GLFW_HAS_XINPUT +// Define this to 1 if the Xxf86vm X11 extension is available +#define _GLFW_HAS_XF86VM + +// Define this to 1 if glfwInit should change the current directory +/* #undef _GLFW_USE_CHDIR */ +// Define this to 1 if glfwCreateWindow should populate the menu bar +/* #undef _GLFW_USE_MENUBAR */ +// Define this to 1 if windows should use full resolution on Retina displays +/* #undef _GLFW_USE_RETINA */ + +// Define this to 1 if using OpenGL as the client library +#define _GLFW_USE_OPENGL +// Define this to 1 if using OpenGL ES 1.1 as the client library +/* #undef _GLFW_USE_GLESV1 */ +// Define this to 1 if using OpenGL ES 2.0 as the client library +/* #undef _GLFW_USE_GLESV2 */ + diff --git a/deps/glfw/tests/cursor b/deps/glfw/tests/cursor new file mode 100755 index 0000000000000000000000000000000000000000..0d55e90f9ab3064f54f2001ebb265f48c34e37b5 GIT binary patch literal 136536 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

TGnE}A3+=ksR*xIpSkJN4Y!qh1I(Q~K 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 };& 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 E0};CY>Hq)$ literal 0 HcmV?d00001 From 9f4388d3a32187f15e6f6e830403fb73ed755572 Mon Sep 17 00:00:00 2001 From: DavidLandes Date: Thu, 18 Feb 2021 20:31:20 -0500 Subject: [PATCH 03/28] Create UserStories file and add stories 001-003 --- UserStories | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 UserStories diff --git a/UserStories b/UserStories new file mode 100644 index 000000000..a46a6d825 --- /dev/null +++ b/UserStories @@ -0,0 +1,3 @@ +US001 - As a player of Craft, the mouse control should be less sensitive to movement so the game is more user friendly. +US002 - As a player of Craft, certain blocks should be affected by gravity to make the game have a more realistic environment. +US003 - As a player of Craft, the cloud's shading should reflect the time of day in the game to create a more realistic environment. From b8a60cf91a0f1a5d54a841dc94c93ce0b5ef4f3b Mon Sep 17 00:00:00 2001 From: Nathan Johns <47930805+NathanJohns307@users.noreply.github.com> Date: Thu, 18 Feb 2021 20:37:32 -0500 Subject: [PATCH 04/28] Update UserStories --- UserStories | 2 ++ 1 file changed, 2 insertions(+) diff --git a/UserStories b/UserStories index a46a6d825..e6b977545 100644 --- a/UserStories +++ b/UserStories @@ -1,3 +1,5 @@ US001 - As a player of Craft, the mouse control should be less sensitive to movement so the game is more user friendly. US002 - As a player of Craft, certain blocks should be affected by gravity to make the game have a more realistic environment. US003 - As a player of Craft, the cloud's shading should reflect the time of day in the game to create a more realistic environment. +US004 - As a player of Craft, I want randomly spawning buildings or structures to create a more diverse playing environment. +US005 - As a player of Craft, I want randomly generated lava pools to create a more diverse playing environment. From dfc774d038b402decce68b5ab663f8b9061a1ff2 Mon Sep 17 00:00:00 2001 From: Nathan Johns <47930805+NathanJohns307@users.noreply.github.com> Date: Thu, 18 Feb 2021 20:59:33 -0500 Subject: [PATCH 05/28] Update UserStories --- UserStories | 1 + 1 file changed, 1 insertion(+) diff --git a/UserStories b/UserStories index e6b977545..f4f30b49b 100644 --- a/UserStories +++ b/UserStories @@ -3,3 +3,4 @@ US002 - As a player of Craft, certain blocks should be affected by gravity to ma US003 - As a player of Craft, the cloud's shading should reflect the time of day in the game to create a more realistic environment. US004 - As a player of Craft, I want randomly spawning buildings or structures to create a more diverse playing environment. US005 - As a player of Craft, I want randomly generated lava pools to create a more diverse playing environment. +US006 - As a player of Craft, I want periodic weather (rain) so that the environment is more dynamic and realistic. From 66b19079e7cee595832c53edc40bab44ad0e2533 Mon Sep 17 00:00:00 2001 From: DavidLandes Date: Thu, 18 Feb 2021 21:05:45 -0500 Subject: [PATCH 06/28] Create backlog & add Tasks 001-004 --- Backlog | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Backlog diff --git a/Backlog b/Backlog new file mode 100644 index 000000000..3b6f2c204 --- /dev/null +++ b/Backlog @@ -0,0 +1,4 @@ +US001 Task001 - Modify mouse input to move the player's view less. The mouse should be less sensitive. Points 3 +US002 Task002 - Sand blocks should fall to the ground if there is no block underneath. Points 5 +US002 Task003 - Gravel blocks should fall to the ground if there is no block underneath. Points 5 +US003 Task004 - Cloud color should change to a dark grey at night, and stay white during daytime. Points 2 From b8d428166522dbf637dd345779c1eb90b903bd99 Mon Sep 17 00:00:00 2001 From: Nathan Johns <47930805+NathanJohns307@users.noreply.github.com> Date: Thu, 18 Feb 2021 21:24:25 -0500 Subject: [PATCH 07/28] Update Backlog --- Backlog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Backlog b/Backlog index 3b6f2c204..de634b4a9 100644 --- a/Backlog +++ b/Backlog @@ -2,3 +2,10 @@ US001 Task001 - Modify mouse input to move the player's view less. The mouse sho US002 Task002 - Sand blocks should fall to the ground if there is no block underneath. Points 5 US002 Task003 - Gravel blocks should fall to the ground if there is no block underneath. Points 5 US003 Task004 - Cloud color should change to a dark grey at night, and stay white during daytime. Points 2 +US004 Task005 - Design the layout and structure of the buildings to be spawned. Points 5 +US004 Task006 - Create generation function and spawn conditions for buildings. Points 5 +US005 Task007 - Create lava block model. Points 3 +US005 Task008 - Create generation function and spawn conditions for lava pools. Points 5 +US006 Task009 - Create rain drop block model. Points 3 +US006 Task010 - Create spawn conditions for rain drop blocks. Points 3 +US006 Task011 - Rain drop blocks should have no collision and be effected by gravity. Points 3 From 64d3bc35fbde9ca7f65ac7d8657c4404b07bf85e Mon Sep 17 00:00:00 2001 From: DavidLandes Date: Tue, 23 Feb 2021 20:14:46 -0500 Subject: [PATCH 08/28] Add documentation support with doxygen. --- Doxyfile | 2579 +++++++++++++++++ html/annotated.html | 89 + html/bc_s.png | Bin 0 -> 676 bytes html/bdwn.png | Bin 0 -> 147 bytes html/classbuilder_1_1Client-members.html | 89 + html/classbuilder_1_1Client.html | 122 + html/classbuilder_1_1Client__coll__graph.dot | 9 + ...classbuilder_1_1Client__inherit__graph.dot | 9 + html/classes.html | 105 + html/classserver_1_1Handler-members.html | 99 + html/classserver_1_1Handler.html | 152 + html/classserver_1_1Handler__coll__graph.dot | 9 + ...classserver_1_1Handler__inherit__graph.dot | 9 + html/classserver_1_1Model-members.html | 124 + html/classserver_1_1Model.html | 227 ++ html/classserver_1_1Model__coll__graph.dot | 9 + html/classserver_1_1Model__inherit__graph.dot | 9 + html/classserver_1_1RateLimiter-members.html | 89 + html/classserver_1_1RateLimiter.html | 122 + ...lassserver_1_1RateLimiter__coll__graph.dot | 9 + ...sserver_1_1RateLimiter__inherit__graph.dot | 9 + html/classserver_1_1Server-members.html | 85 + html/classserver_1_1Server.html | 106 + html/classserver_1_1Server__coll__graph.dot | 11 + .../classserver_1_1Server__inherit__graph.dot | 11 + html/classworld_1_1World-members.html | 89 + html/classworld_1_1World.html | 122 + html/classworld_1_1World__coll__graph.dot | 9 + html/classworld_1_1World__inherit__graph.dot | 9 + html/closed.png | Bin 0 -> 132 bytes html/doc.png | Bin 0 -> 746 bytes html/doxygen.css | 1771 +++++++++++ html/doxygen.png | Bin 0 -> 3779 bytes html/dynsections.js | 120 + html/folderclosed.png | Bin 0 -> 616 bytes html/folderopen.png | Bin 0 -> 597 bytes html/graph_legend.dot | 23 + html/graph_legend.html | 136 + html/hierarchy.html | 93 + html/index.html | 76 + html/inherit_graph_0.dot | 16 + html/inherit_graph_1.dot | 10 + html/inherit_graph_2.dot | 12 + html/inherits.html | 86 + html/jquery.js | 35 + html/md_LICENSE.html | 81 + html/md_README.html | 208 ++ html/menu.js | 50 + html/menudata.js | 29 + html/nav_f.png | Bin 0 -> 153 bytes html/nav_g.png | Bin 0 -> 95 bytes html/nav_h.png | Bin 0 -> 98 bytes html/open.png | Bin 0 -> 123 bytes html/pages.html | 82 + html/search/all_0.html | 30 + html/search/all_0.js | 5 + html/search/all_1.html | 30 + html/search/all_1.js | 4 + html/search/all_2.html | 30 + html/search/all_2.js | 4 + html/search/all_3.html | 30 + html/search/all_3.js | 4 + html/search/all_4.html | 30 + html/search/all_4.js | 4 + html/search/all_5.html | 30 + html/search/all_5.js | 4 + html/search/all_6.html | 30 + html/search/all_6.js | 4 + html/search/classes_0.html | 30 + html/search/classes_0.js | 4 + html/search/classes_1.html | 30 + html/search/classes_1.js | 4 + html/search/classes_2.html | 30 + html/search/classes_2.js | 4 + html/search/classes_3.html | 30 + html/search/classes_3.js | 4 + html/search/classes_4.html | 30 + html/search/classes_4.js | 4 + html/search/classes_5.html | 30 + html/search/classes_5.js | 4 + html/search/close.png | Bin 0 -> 273 bytes html/search/mag_sel.png | Bin 0 -> 465 bytes html/search/nomatches.html | 12 + html/search/pages_0.html | 30 + html/search/pages_0.js | 4 + html/search/pages_1.html | 30 + html/search/pages_1.js | 4 + html/search/search.css | 271 ++ html/search/search.js | 814 ++++++ html/search/search_l.png | Bin 0 -> 567 bytes html/search/search_m.png | Bin 0 -> 158 bytes html/search/search_r.png | Bin 0 -> 553 bytes html/search/searchdata.js | 21 + html/splitbar.png | Bin 0 -> 314 bytes html/sync_off.png | Bin 0 -> 853 bytes html/sync_on.png | Bin 0 -> 845 bytes html/tab_a.png | Bin 0 -> 142 bytes html/tab_b.png | Bin 0 -> 169 bytes html/tab_h.png | Bin 0 -> 177 bytes html/tab_s.png | Bin 0 -> 184 bytes html/tabs.css | 1 + 101 files changed, 8769 insertions(+) create mode 100644 Doxyfile create mode 100644 html/annotated.html create mode 100644 html/bc_s.png create mode 100644 html/bdwn.png create mode 100644 html/classbuilder_1_1Client-members.html create mode 100644 html/classbuilder_1_1Client.html create mode 100644 html/classbuilder_1_1Client__coll__graph.dot create mode 100644 html/classbuilder_1_1Client__inherit__graph.dot create mode 100644 html/classes.html create mode 100644 html/classserver_1_1Handler-members.html create mode 100644 html/classserver_1_1Handler.html create mode 100644 html/classserver_1_1Handler__coll__graph.dot create mode 100644 html/classserver_1_1Handler__inherit__graph.dot create mode 100644 html/classserver_1_1Model-members.html create mode 100644 html/classserver_1_1Model.html create mode 100644 html/classserver_1_1Model__coll__graph.dot create mode 100644 html/classserver_1_1Model__inherit__graph.dot create mode 100644 html/classserver_1_1RateLimiter-members.html create mode 100644 html/classserver_1_1RateLimiter.html create mode 100644 html/classserver_1_1RateLimiter__coll__graph.dot create mode 100644 html/classserver_1_1RateLimiter__inherit__graph.dot create mode 100644 html/classserver_1_1Server-members.html create mode 100644 html/classserver_1_1Server.html create mode 100644 html/classserver_1_1Server__coll__graph.dot create mode 100644 html/classserver_1_1Server__inherit__graph.dot create mode 100644 html/classworld_1_1World-members.html create mode 100644 html/classworld_1_1World.html create mode 100644 html/classworld_1_1World__coll__graph.dot create mode 100644 html/classworld_1_1World__inherit__graph.dot create mode 100644 html/closed.png create mode 100644 html/doc.png create mode 100644 html/doxygen.css create mode 100644 html/doxygen.png create mode 100644 html/dynsections.js create mode 100644 html/folderclosed.png create mode 100644 html/folderopen.png create mode 100644 html/graph_legend.dot create mode 100644 html/graph_legend.html create mode 100644 html/hierarchy.html create mode 100644 html/index.html create mode 100644 html/inherit_graph_0.dot create mode 100644 html/inherit_graph_1.dot create mode 100644 html/inherit_graph_2.dot create mode 100644 html/inherits.html create mode 100644 html/jquery.js create mode 100644 html/md_LICENSE.html create mode 100644 html/md_README.html create mode 100644 html/menu.js create mode 100644 html/menudata.js create mode 100644 html/nav_f.png create mode 100644 html/nav_g.png create mode 100644 html/nav_h.png create mode 100644 html/open.png create mode 100644 html/pages.html create mode 100644 html/search/all_0.html create mode 100644 html/search/all_0.js create mode 100644 html/search/all_1.html create mode 100644 html/search/all_1.js create mode 100644 html/search/all_2.html create mode 100644 html/search/all_2.js create mode 100644 html/search/all_3.html create mode 100644 html/search/all_3.js create mode 100644 html/search/all_4.html create mode 100644 html/search/all_4.js create mode 100644 html/search/all_5.html create mode 100644 html/search/all_5.js create mode 100644 html/search/all_6.html create mode 100644 html/search/all_6.js create mode 100644 html/search/classes_0.html create mode 100644 html/search/classes_0.js create mode 100644 html/search/classes_1.html create mode 100644 html/search/classes_1.js create mode 100644 html/search/classes_2.html create mode 100644 html/search/classes_2.js create mode 100644 html/search/classes_3.html create mode 100644 html/search/classes_3.js create mode 100644 html/search/classes_4.html create mode 100644 html/search/classes_4.js create mode 100644 html/search/classes_5.html create mode 100644 html/search/classes_5.js create mode 100644 html/search/close.png create mode 100644 html/search/mag_sel.png create mode 100644 html/search/nomatches.html create mode 100644 html/search/pages_0.html create mode 100644 html/search/pages_0.js create mode 100644 html/search/pages_1.html create mode 100644 html/search/pages_1.js create mode 100644 html/search/search.css create mode 100644 html/search/search.js create mode 100644 html/search/search_l.png create mode 100644 html/search/search_m.png create mode 100644 html/search/search_r.png create mode 100644 html/search/searchdata.js create mode 100644 html/splitbar.png create mode 100644 html/sync_off.png create mode 100644 html/sync_on.png create mode 100644 html/tab_a.png create mode 100644 html/tab_b.png create mode 100644 html/tab_h.png create mode 100644 html/tab_s.png create mode 100644 html/tabs.css diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 000000000..95929b43f --- /dev/null +++ b/Doxyfile @@ -0,0 +1,2579 @@ +# Doxyfile 1.8.17 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "My Project" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is +# Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# (including Cygwin) ands Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen +# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f, *.for, *.tcl, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.doc \ + *.txt \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files +# were built. This is equivalent to specifying the "-p" option to a clang tool, +# such as clang-check. These options will then be passed to the parser. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: https://developer.apple.com/xcode/), introduced with OSX +# 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /

+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + +
 Nbuilder
 CClient
 Nserver
 CHandler
 CModel
 CRateLimiter
 CServer
 Nworld
 CWorld
+
+
+ +
+ + diff --git a/html/bc_s.png b/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/html/bdwn.png b/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
builder.Client Member List
+
+
+ +

This is the complete list of members for builder.Client, including all inherited members.

+ + + + + + + +
__init__(self, host, port) (defined in builder.Client)builder.Client
authenticate(self) (defined in builder.Client)builder.Client
bitmap(self, sx, sy, sz, d1, d2, data, lookup) (defined in builder.Client)builder.Client
conn (defined in builder.Client)builder.Client
set_block(self, x, y, z, w) (defined in builder.Client)builder.Client
set_blocks(self, blocks, w) (defined in builder.Client)builder.Client
+ + + + diff --git a/html/classbuilder_1_1Client.html b/html/classbuilder_1_1Client.html new file mode 100644 index 000000000..af81c5c5d --- /dev/null +++ b/html/classbuilder_1_1Client.html @@ -0,0 +1,122 @@ + + + + + + + +My Project: builder.Client Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
builder.Client Class Reference
+
+
+
+Inheritance diagram for builder.Client:
+
+
Inheritance graph
+
[legend]
+
+Collaboration diagram for builder.Client:
+
+
Collaboration graph
+
[legend]
+ + + + + + + + + + + + +

+Public Member Functions

+def __init__ (self, host, port)
 
+def authenticate (self)
 
+def set_block (self, x, y, z, w)
 
+def set_blocks (self, blocks, w)
 
+def bitmap (self, sx, sy, sz, d1, d2, data, lookup)
 
+ + + +

+Public Attributes

conn
 
+
The documentation for this class was generated from the following file:
    +
  • builder.py
  • +
+
+ + + + diff --git a/html/classbuilder_1_1Client__coll__graph.dot b/html/classbuilder_1_1Client__coll__graph.dot new file mode 100644 index 000000000..622f77e43 --- /dev/null +++ b/html/classbuilder_1_1Client__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "builder.Client" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="builder.Client",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="object",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classbuilder_1_1Client__inherit__graph.dot b/html/classbuilder_1_1Client__inherit__graph.dot new file mode 100644 index 000000000..622f77e43 --- /dev/null +++ b/html/classbuilder_1_1Client__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "builder.Client" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="builder.Client",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="object",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classes.html b/html/classes.html new file mode 100644 index 000000000..ac1c130de --- /dev/null +++ b/html/classes.html @@ -0,0 +1,105 @@ + + + + + + + +My Project: Class Index + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
c | h | m | r | s | w
+ + + + + + + + + + + + + + + + + + + + +
  c  
+
  m  
+
  s  
+
Client (builder)   Model (server)   Server (server)   
  h  
+
  r  
+
  w  
+
Handler (server)   RateLimiter (server)   World (world)   
+
c | h | m | r | s | w
+
+ + + + diff --git a/html/classserver_1_1Handler-members.html b/html/classserver_1_1Handler-members.html new file mode 100644 index 000000000..190a2f4df --- /dev/null +++ b/html/classserver_1_1Handler-members.html @@ -0,0 +1,99 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
server.Handler Member List
+
+
+ +

This is the complete list of members for server.Handler, including all inherited members.

+ + + + + + + + + + + + + + + + + +
client_id (defined in server.Handler)server.Handler
finish(self) (defined in server.Handler)server.Handler
handle(self) (defined in server.Handler)server.Handler
limiter (defined in server.Handler)server.Handler
nick (defined in server.Handler)server.Handler
position_limiter (defined in server.Handler)server.Handler
queue (defined in server.Handler)server.Handler
run(self) (defined in server.Handler)server.Handler
running (defined in server.Handler)server.Handler
send(self, *args) (defined in server.Handler)server.Handler
send_raw(self, data) (defined in server.Handler)server.Handler
setup(self) (defined in server.Handler)server.Handler
start(self) (defined in server.Handler)server.Handler
stop(self) (defined in server.Handler)server.Handler
user_id (defined in server.Handler)server.Handler
version (defined in server.Handler)server.Handler
+ + + + diff --git a/html/classserver_1_1Handler.html b/html/classserver_1_1Handler.html new file mode 100644 index 000000000..17e257d2e --- /dev/null +++ b/html/classserver_1_1Handler.html @@ -0,0 +1,152 @@ + + + + + + + +My Project: server.Handler Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
server.Handler Class Reference
+
+
+
+Inheritance diagram for server.Handler:
+
+
Inheritance graph
+
[legend]
+
+Collaboration diagram for server.Handler:
+
+
Collaboration graph
+
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

+def setup (self)
 
+def handle (self)
 
+def finish (self)
 
+def stop (self)
 
+def start (self)
 
+def run (self)
 
+def send_raw (self, data)
 
+def send (self, *args)
 
+ + + + + + + + + + + + + + + + + +

+Public Attributes

position_limiter
 
limiter
 
version
 
client_id
 
user_id
 
nick
 
queue
 
running
 
+
The documentation for this class was generated from the following file:
    +
  • server.py
  • +
+
+ + + + diff --git a/html/classserver_1_1Handler__coll__graph.dot b/html/classserver_1_1Handler__coll__graph.dot new file mode 100644 index 000000000..5fe38b826 --- /dev/null +++ b/html/classserver_1_1Handler__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "server.Handler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="server.Handler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="SocketServer::BaseRequest\lHandler",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classserver_1_1Handler__inherit__graph.dot b/html/classserver_1_1Handler__inherit__graph.dot new file mode 100644 index 000000000..5fe38b826 --- /dev/null +++ b/html/classserver_1_1Handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "server.Handler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="server.Handler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="SocketServer::BaseRequest\lHandler",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classserver_1_1Model-members.html b/html/classserver_1_1Model-members.html new file mode 100644 index 000000000..86d21e9e9 --- /dev/null +++ b/html/classserver_1_1Model-members.html @@ -0,0 +1,124 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
server.Model Member List
+
+
+ +

This is the complete list of members for server.Model, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
__init__(self, seed) (defined in server.Model)server.Model
clients (defined in server.Model)server.Model
commands (defined in server.Model)server.Model
commit(self) (defined in server.Model)server.Model
connection (defined in server.Model)server.Model
create_tables(self) (defined in server.Model)server.Model
dequeue(self) (defined in server.Model)server.Model
enqueue(self, func, *args, **kwargs) (defined in server.Model)server.Model
execute(self, *args, **kwargs) (defined in server.Model)server.Model
get_block(self, x, y, z) (defined in server.Model)server.Model
get_default_block(self, x, y, z) (defined in server.Model)server.Model
last_commit (defined in server.Model)server.Model
next_client_id(self) (defined in server.Model)server.Model
on_authenticate(self, client, username, access_token) (defined in server.Model)server.Model
on_block(self, client, x, y, z, w) (defined in server.Model)server.Model
on_chunk(self, client, p, q, key=0) (defined in server.Model)server.Model
on_connect(self, client) (defined in server.Model)server.Model
on_data(self, client, data) (defined in server.Model)server.Model
on_disconnect(self, client) (defined in server.Model)server.Model
on_goto(self, client, nick=None) (defined in server.Model)server.Model
on_help(self, client, topic=None) (defined in server.Model)server.Model
on_list(self, client) (defined in server.Model)server.Model
on_position(self, client, x, y, z, rx, ry) (defined in server.Model)server.Model
on_pq(self, client, p, q) (defined in server.Model)server.Model
on_sign(self, client, x, y, z, face, *args) (defined in server.Model)server.Model
on_spawn(self, client) (defined in server.Model)server.Model
on_talk(self, client, *args) (defined in server.Model)server.Model
on_version(self, client, version) (defined in server.Model)server.Model
patterns (defined in server.Model)server.Model
queue (defined in server.Model)server.Model
run(self) (defined in server.Model)server.Model
send_block(self, client, p, q, x, y, z, w) (defined in server.Model)server.Model
send_disconnect(self, client) (defined in server.Model)server.Model
send_nick(self, client) (defined in server.Model)server.Model
send_nicks(self, client) (defined in server.Model)server.Model
send_position(self, client) (defined in server.Model)server.Model
send_positions(self, client) (defined in server.Model)server.Model
send_sign(self, client, p, q, x, y, z, face, text) (defined in server.Model)server.Model
send_talk(self, text) (defined in server.Model)server.Model
start(self) (defined in server.Model)server.Model
world (defined in server.Model)server.Model
+ + + + diff --git a/html/classserver_1_1Model.html b/html/classserver_1_1Model.html new file mode 100644 index 000000000..8c5b1927a --- /dev/null +++ b/html/classserver_1_1Model.html @@ -0,0 +1,227 @@ + + + + + + + +My Project: server.Model Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
server.Model Class Reference
+
+
+
+Inheritance diagram for server.Model:
+
+
Inheritance graph
+
[legend]
+
+Collaboration diagram for server.Model:
+
+
Collaboration graph
+
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+def __init__ (self, seed)
 
+def start (self)
 
+def run (self)
 
+def enqueue (self, func, *args, **kwargs)
 
+def dequeue (self)
 
+def execute (self, *args, **kwargs)
 
+def commit (self)
 
+def create_tables (self)
 
+def get_default_block (self, x, y, z)
 
+def get_block (self, x, y, z)
 
+def next_client_id (self)
 
+def on_connect (self, client)
 
+def on_data (self, client, data)
 
+def on_disconnect (self, client)
 
+def on_version (self, client, version)
 
+def on_authenticate (self, client, username, access_token)
 
+def on_chunk (self, client, p, q, key=0)
 
+def on_block (self, client, x, y, z, w)
 
+def on_sign (self, client, x, y, z, face, *args)
 
+def on_position (self, client, x, y, z, rx, ry)
 
+def on_talk (self, client, *args)
 
+def on_spawn (self, client)
 
+def on_goto (self, client, nick=None)
 
+def on_pq (self, client, p, q)
 
+def on_help (self, client, topic=None)
 
+def on_list (self, client)
 
+def send_positions (self, client)
 
+def send_position (self, client)
 
+def send_nicks (self, client)
 
+def send_nick (self, client)
 
+def send_disconnect (self, client)
 
+def send_block (self, client, p, q, x, y, z, w)
 
+def send_sign (self, client, p, q, x, y, z, face, text)
 
+def send_talk (self, text)
 
+ + + + + + + + + + + + + + + +

+Public Attributes

world
 
clients
 
queue
 
commands
 
patterns
 
connection
 
last_commit
 
+
The documentation for this class was generated from the following file:
    +
  • server.py
  • +
+
+ + + + diff --git a/html/classserver_1_1Model__coll__graph.dot b/html/classserver_1_1Model__coll__graph.dot new file mode 100644 index 000000000..9b847f2e4 --- /dev/null +++ b/html/classserver_1_1Model__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "server.Model" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="server.Model",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="object",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classserver_1_1Model__inherit__graph.dot b/html/classserver_1_1Model__inherit__graph.dot new file mode 100644 index 000000000..9b847f2e4 --- /dev/null +++ b/html/classserver_1_1Model__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "server.Model" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="server.Model",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="object",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classserver_1_1RateLimiter-members.html b/html/classserver_1_1RateLimiter-members.html new file mode 100644 index 000000000..97abe98ed --- /dev/null +++ b/html/classserver_1_1RateLimiter-members.html @@ -0,0 +1,89 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
server.RateLimiter Member List
+
+
+ +

This is the complete list of members for server.RateLimiter, including all inherited members.

+ + + + + + + +
__init__(self, rate, per) (defined in server.RateLimiter)server.RateLimiter
allowance (defined in server.RateLimiter)server.RateLimiter
last_check (defined in server.RateLimiter)server.RateLimiter
per (defined in server.RateLimiter)server.RateLimiter
rate (defined in server.RateLimiter)server.RateLimiter
tick(self) (defined in server.RateLimiter)server.RateLimiter
+ + + + diff --git a/html/classserver_1_1RateLimiter.html b/html/classserver_1_1RateLimiter.html new file mode 100644 index 000000000..74b4706da --- /dev/null +++ b/html/classserver_1_1RateLimiter.html @@ -0,0 +1,122 @@ + + + + + + + +My Project: server.RateLimiter Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
server.RateLimiter Class Reference
+
+
+
+Inheritance diagram for server.RateLimiter:
+
+
Inheritance graph
+
[legend]
+
+Collaboration diagram for server.RateLimiter:
+
+
Collaboration graph
+
[legend]
+ + + + + + +

+Public Member Functions

+def __init__ (self, rate, per)
 
+def tick (self)
 
+ + + + + + + + + +

+Public Attributes

rate
 
per
 
allowance
 
last_check
 
+
The documentation for this class was generated from the following file:
    +
  • server.py
  • +
+
+ + + + diff --git a/html/classserver_1_1RateLimiter__coll__graph.dot b/html/classserver_1_1RateLimiter__coll__graph.dot new file mode 100644 index 000000000..16f8ac429 --- /dev/null +++ b/html/classserver_1_1RateLimiter__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "server.RateLimiter" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="server.RateLimiter",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="object",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classserver_1_1RateLimiter__inherit__graph.dot b/html/classserver_1_1RateLimiter__inherit__graph.dot new file mode 100644 index 000000000..16f8ac429 --- /dev/null +++ b/html/classserver_1_1RateLimiter__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "server.RateLimiter" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="server.RateLimiter",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="object",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classserver_1_1Server-members.html b/html/classserver_1_1Server-members.html new file mode 100644 index 000000000..1303a7510 --- /dev/null +++ b/html/classserver_1_1Server-members.html @@ -0,0 +1,85 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
server.Server Member List
+
+
+ +

This is the complete list of members for server.Server, including all inherited members.

+ + + +
allow_reuse_address (defined in server.Server)server.Serverstatic
daemon_threads (defined in server.Server)server.Serverstatic
+ + + + diff --git a/html/classserver_1_1Server.html b/html/classserver_1_1Server.html new file mode 100644 index 000000000..6d2e50cbc --- /dev/null +++ b/html/classserver_1_1Server.html @@ -0,0 +1,106 @@ + + + + + + + +My Project: server.Server Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
server.Server Class Reference
+
+
+
+Inheritance diagram for server.Server:
+
+
Inheritance graph
+
[legend]
+
+Collaboration diagram for server.Server:
+
+
Collaboration graph
+
[legend]
+ + + + + + +

+Static Public Attributes

+bool allow_reuse_address = True
 
+bool daemon_threads = True
 
+
The documentation for this class was generated from the following file:
    +
  • server.py
  • +
+
+ + + + diff --git a/html/classserver_1_1Server__coll__graph.dot b/html/classserver_1_1Server__coll__graph.dot new file mode 100644 index 000000000..8e546c4f2 --- /dev/null +++ b/html/classserver_1_1Server__coll__graph.dot @@ -0,0 +1,11 @@ +digraph "server.Server" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="server.Server",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="SocketServer::ThreadingMixIn",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="SocketServer::TCPServer",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classserver_1_1Server__inherit__graph.dot b/html/classserver_1_1Server__inherit__graph.dot new file mode 100644 index 000000000..8e546c4f2 --- /dev/null +++ b/html/classserver_1_1Server__inherit__graph.dot @@ -0,0 +1,11 @@ +digraph "server.Server" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="server.Server",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="SocketServer::ThreadingMixIn",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="SocketServer::TCPServer",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classworld_1_1World-members.html b/html/classworld_1_1World-members.html new file mode 100644 index 000000000..031933493 --- /dev/null +++ b/html/classworld_1_1World-members.html @@ -0,0 +1,89 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
world.World Member List
+
+
+ +

This is the complete list of members for world.World, including all inherited members.

+ + + + + + + +
__init__(self, seed=None, cache_size=64) (defined in world.World)world.World
cache (defined in world.World)world.World
cache_size (defined in world.World)world.World
create_chunk(self, p, q) (defined in world.World)world.World
get_chunk(self, p, q) (defined in world.World)world.World
seed (defined in world.World)world.World
+ + + + diff --git a/html/classworld_1_1World.html b/html/classworld_1_1World.html new file mode 100644 index 000000000..26ace4ede --- /dev/null +++ b/html/classworld_1_1World.html @@ -0,0 +1,122 @@ + + + + + + + +My Project: world.World Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
world.World Class Reference
+
+
+
+Inheritance diagram for world.World:
+
+
Inheritance graph
+
[legend]
+
+Collaboration diagram for world.World:
+
+
Collaboration graph
+
[legend]
+ + + + + + + + +

+Public Member Functions

+def __init__ (self, seed=None, cache_size=64)
 
+def create_chunk (self, p, q)
 
+def get_chunk (self, p, q)
 
+ + + + + + + +

+Public Attributes

seed
 
cache
 
cache_size
 
+
The documentation for this class was generated from the following file:
    +
  • world.py
  • +
+
+ + + + diff --git a/html/classworld_1_1World__coll__graph.dot b/html/classworld_1_1World__coll__graph.dot new file mode 100644 index 000000000..f99d99c59 --- /dev/null +++ b/html/classworld_1_1World__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "world.World" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="world.World",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="object",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/classworld_1_1World__inherit__graph.dot b/html/classworld_1_1World__inherit__graph.dot new file mode 100644 index 000000000..f99d99c59 --- /dev/null +++ b/html/classworld_1_1World__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "world.World" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="world.World",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="object",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/html/closed.png b/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/html/doc.png b/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/html/doxygen.css b/html/doxygen.css new file mode 100644 index 000000000..73ecbb2cb --- /dev/null +++ b/html/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/html/doxygen.png b/html/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/html/dynsections.js b/html/dynsections.js new file mode 100644 index 000000000..ea0a7b39a --- /dev/null +++ b/html/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 (la9#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/html/graph_legend.dot b/html/graph_legend.dot new file mode 100644 index 000000000..4d6ac8c61 --- /dev/null +++ b/html/graph_legend.dot @@ -0,0 +1,23 @@ +digraph "Graph Legend" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node9 [shape="box",label="Inherited",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",fillcolor="grey75",style="filled" fontcolor="black"]; + Node10 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [shape="box",label="PublicBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node11 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [shape="box",label="Truncated",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="red"]; + Node13 -> Node9 [dir="back",color="darkgreen",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [shape="box",label="ProtectedBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node14 -> Node9 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [shape="box",label="PrivateBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node15 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [shape="box",label="Undocumented",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="grey75"]; + Node16 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [shape="box",label="Templ< int >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node17 -> Node16 [dir="back",color="orange",fontsize="10",style="dashed",label="< int >",fontname="Helvetica"]; + Node17 [shape="box",label="Templ< T >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node18 -> Node9 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label="m_usedClass",fontname="Helvetica"]; + Node18 [shape="box",label="Used",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; +} diff --git a/html/graph_legend.html b/html/graph_legend.html new file mode 100644 index 000000000..7042904ac --- /dev/null +++ b/html/graph_legend.html @@ -0,0 +1,136 @@ + + + + + + + +My Project: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
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/html/hierarchy.html b/html/hierarchy.html new file mode 100644 index 000000000..956d3e358 --- /dev/null +++ b/html/hierarchy.html @@ -0,0 +1,93 @@ + + + + + + + +My Project: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

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

Copyright (C) 2013 Michael Fogleman

+

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+
+
+ + + + diff --git a/html/md_README.html b/html/md_README.html new file mode 100644 index 000000000..be06a5a85 --- /dev/null +++ b/html/md_README.html @@ -0,0 +1,208 @@ + + + + + + + +My Project: Craft + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Craft
+
+
+

Minecraft clone for Windows, Mac OS X and Linux. Just a few thousand lines of C using modern OpenGL (shaders). Online multiplayer support is included using a Python-based server.

+

http://www.michaelfogleman.com/craft/

+

+

+Features

+
    +
  • Simple but nice looking terrain generation using perlin / simplex noise.
  • +
  • More than 10 types of blocks and more can be added easily.
  • +
  • Supports plants (grass, flowers, trees, etc.) and transparency (glass).
  • +
  • Simple clouds in the sky (they don't move).
  • +
  • Day / night cycles and a textured sky dome.
  • +
  • World changes persisted in a sqlite3 database.
  • +
  • Multiplayer support!
  • +
+

+Download

+

Mac and Windows binaries are available on the website.

+

http://www.michaelfogleman.com/craft/

+

See below to run from source.

+

+Install Dependencies

+

+Mac OS X

+

Download and install CMake if you don't already have it. You may use Homebrew to simplify the installation:

brew install cmake
+

+Linux (Ubuntu)

+
sudo apt-get install cmake libglew-dev xorg-dev
+sudo apt-get build-dep glfw
+

+Windows

+

Download and install CMake and MinGW. Add C:\MinGW\bin to your PATH.

+

Download and install cURL so that CURL/lib and CURL/include are in your Program Files directory.

+

Use the following commands in place of the ones described in the next section.

cmake -G "MinGW Makefiles"
+mingw32-make
+

+Compile and Run

+

Once you have the dependencies (see above), run the following commands in your terminal.

git clone https://github.com/fogleman/Craft.git
+cd Craft
+cmake .
+make
+./craft
+

+Multiplayer

+

Register for an account!

+

https://craft.michaelfogleman.com/

+

+Client

+

You can connect to a server with command line arguments...

./craft michaelfogleman.com
+

Or, with the "/online" command in the game itself.

/online michaelfogleman.com
+

+Server

+

You can run your own server or connect to mine. The server is written in Python but requires a compiled DLL so it can perform the terrain generation just like the client.

gcc -std=c99 -O3 -shared -o world -I src -I deps/noise deps/noise/noise.c src/world.c
+python server.py [HOST [PORT]]
+

+Controls

+
    +
  • WASD to move forward, left, backward, right.
  • +
  • Space to jump.
  • +
  • Left Click to destroy a block.
  • +
  • Right Click or Cmd + Left Click to create a block.
  • +
  • 1-9 to select the block type to create.
  • +
  • E to cycle through the block types.
  • +
  • Tab to toggle between walking and flying.
  • +
  • ZXCVBN to move in exact directions along the XYZ axes.
  • +
  • Left shift to zoom.
  • +
  • F to show the scene in orthographic mode.
  • +
  • O to observe players in the main view.
  • +
  • P to observe players in the picture-in-picture view.
  • +
  • Arrow keys emulate mouse movement.
  • +
  • Enter emulates mouse click.
  • +
+

+Chat Commands

+
/goto [NAME]
+

Teleport to another user. If NAME is unspecified, a random user is chosen.

/list
+

Display a list of connected users.

/login NAME
+

Switch to another registered username. The login server will be re-contacted. The username is case-sensitive.

/logout
+

Unauthenticate and become a guest user. Automatic logins will not occur again until the /login command is re-issued.

/offline [FILE]
+

Switch to offline mode. FILE specifies the save file to use and defaults to "craft".

/online HOST [PORT]
+

Connect to the specified server.

/pq P Q
+

Teleport to the specified chunk.

/spawn
+

Teleport back to the spawn point.

+

+Screenshot

+

+

+Implementation Details

+

+Terrain Generation

+

The terrain is generated using Simplex noise - a deterministic noise function seeded based on position. So the world will always be generated the same way in a given location.

+

The world is split up into 32x32 block chunks in the XZ plane (Y is up). This allows the world to be “infinite” (floating point precision is currently a problem at large X or Z values) and also makes it easier to manage the data. Only visible chunks need to be queried from the database.

+

+Rendering

+

Only exposed faces are rendered. This is an important optimization as the vast majority of blocks are either completely hidden or are only exposing one or two faces. Each chunk records a one-block width overlap for each neighboring chunk so it knows which blocks along its perimeter are exposed.

+

Only visible chunks are rendered. A naive frustum-culling approach is used to test if a chunk is in the camera’s view. If it is not, it is not rendered. This results in a pretty decent performance improvement as well.

+

Chunk buffers are completely regenerated when a block is changed in that chunk, instead of trying to update the VBO.

+

Text is rendered using a bitmap atlas. Each character is rendered onto two triangles forming a 2D rectangle.

+

“Modern” OpenGL is used - no deprecated, fixed-function pipeline functions are used. Vertex buffer objects are used for position, normal and texture coordinates. Vertex and fragment shaders are used for rendering. Matrix manipulation functions are in matrix.c for translation, rotation, perspective, orthographic, etc. matrices. The 3D models are made up of very simple primitives - mostly cubes and rectangles. These models are generated in code in cube.c.

+

Transparency in glass blocks and plants (plants don’t take up the full rectangular shape of their triangle primitives) is implemented by discarding magenta-colored pixels in the fragment shader.

+

+Database

+

User changes to the world are stored in a sqlite database. Only the delta is stored, so the default world is generated and then the user changes are applied on top when loading.

+

The main database table is named “block” and has columns p, q, x, y, z, w. (p, q) identifies the chunk, (x, y, z) identifies the block position and (w) identifies the block type. 0 represents an empty block (air).

+

In game, the chunks store their blocks in a hash map. An (x, y, z) key maps to a (w) value.

+

The y-position of blocks are limited to 0 <= y < 256. The upper limit is mainly an artificial limitation to prevent users from building unnecessarily tall structures. Users are not allowed to destroy blocks at y = 0 to avoid falling underneath the world.

+

+Multiplayer

+

Multiplayer mode is implemented using plain-old sockets. A simple, ASCII, line-based protocol is used. Each line is made up of a command code and zero or more comma-separated arguments. The client requests chunks from the server with a simple command: C,p,q,key. “C” means “Chunk” and (p, q) identifies the chunk. The key is used for caching - the server will only send block updates that have been performed since the client last asked for that chunk. Block updates (in realtime or as part of a chunk request) are sent to the client in the format: B,p,q,x,y,z,w. After sending all of the blocks for a requested chunk, the server will send an updated cache key in the format: K,p,q,key. The client will store this key and use it the next time it needs to ask for that chunk. Player positions are sent in the format: P,pid,x,y,z,rx,ry. The pid is the player ID and the rx and ry values indicate the player’s rotation in two different axes. The client interpolates player positions from the past two position updates for smoother animation. The client sends its position to the server at most every 0.1 seconds (less if not moving).

+

Client-side caching to the sqlite database can be performance intensive when connecting to a server for the first time. For this reason, sqlite writes are performed on a background thread. All writes occur in a transaction for performance. The transaction is committed every 5 seconds as opposed to some logical amount of work completed. A ring / circular buffer is used as a queue for what data is to be written to the database.

+

In multiplayer mode, players can observe one another in the main view or in a picture-in-picture view. Implementation of the PnP was surprisingly simple - just change the viewport and render the scene again from the other player’s point of view.

+

+Collision Testing

+

Hit testing (what block the user is pointing at) is implemented by scanning a ray from the player’s position outward, following their sight vector. This is not a precise method, so the step rate can be made smaller to be more accurate.

+

Collision testing simply adjusts the player’s position to remain a certain distance away from any adjacent blocks that are obstacles. (Clouds and plants are not marked as obstacles, so you pass right through them.)

+

+Sky Dome

+

A textured sky dome is used for the sky. The X-coordinate of the texture represents time of day. The Y-values map from the bottom of the sky sphere to the top of the sky sphere. The player is always in the center of the sphere. The fragment shaders for the blocks also sample the sky texture to determine the appropriate fog color to blend with based on the block’s position relative to the backing sky.

+

+Ambient Occlusion

+

Ambient occlusion is implemented as described on this page:

+

http://0fps.wordpress.com/2013/07/03/ambient-occlusion-for-minecraft-like-worlds/

+

+Dependencies

+
    +
  • GLEW is used for managing OpenGL extensions across platforms.
  • +
  • GLFW is used for cross-platform window management.
  • +
  • CURL is used for HTTPS / SSL POST for the authentication process.
  • +
  • lodepng is used for loading PNG textures.
  • +
  • sqlite3 is used for saving the blocks added / removed by the user.
  • +
  • tinycthread is used for cross-platform threading.
  • +
+
+
+ + + + diff --git a/html/menu.js b/html/menu.js new file mode 100644 index 000000000..433c15b8f --- /dev/null +++ b/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/html/menudata.js b/html/menudata.js new file mode 100644 index 000000000..e8f2d51c0 --- /dev/null +++ b/html/menudata.js @@ -0,0 +1,29 @@ +/* +@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:"Related Pages",url:"pages.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}]}]} diff --git a/html/nav_f.png b/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/html/nav_g.png b/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +My Project: Related Pages + + + + + + + + + +
    +
    + + + + + + +
    +
    My Project +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + + +
     LICENSE
     Craft
    +
    +
    + + + + diff --git a/html/search/all_0.html b/html/search/all_0.html new file mode 100644 index 000000000..26dd244fd --- /dev/null +++ b/html/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_0.js b/html/search/all_0.js new file mode 100644 index 000000000..549099ef9 --- /dev/null +++ b/html/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['client_0',['Client',['../classbuilder_1_1Client.html',1,'builder']]], + ['craft_1',['Craft',['../md_README.html',1,'']]] +]; diff --git a/html/search/all_1.html b/html/search/all_1.html new file mode 100644 index 000000000..8eb215b90 --- /dev/null +++ b/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_1.js b/html/search/all_1.js new file mode 100644 index 000000000..9b9dc466d --- /dev/null +++ b/html/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handler_2',['Handler',['../classserver_1_1Handler.html',1,'server']]] +]; diff --git a/html/search/all_2.html b/html/search/all_2.html new file mode 100644 index 000000000..b26d91650 --- /dev/null +++ b/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_2.js b/html/search/all_2.js new file mode 100644 index 000000000..4908ab22e --- /dev/null +++ b/html/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['license_3',['LICENSE',['../md_LICENSE.html',1,'']]] +]; diff --git a/html/search/all_3.html b/html/search/all_3.html new file mode 100644 index 000000000..b61b96f83 --- /dev/null +++ b/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_3.js b/html/search/all_3.js new file mode 100644 index 000000000..22b95fddb --- /dev/null +++ b/html/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_4',['Model',['../classserver_1_1Model.html',1,'server']]] +]; diff --git a/html/search/all_4.html b/html/search/all_4.html new file mode 100644 index 000000000..06de1550e --- /dev/null +++ b/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_4.js b/html/search/all_4.js new file mode 100644 index 000000000..6c6a96b33 --- /dev/null +++ b/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ratelimiter_5',['RateLimiter',['../classserver_1_1RateLimiter.html',1,'server']]] +]; diff --git a/html/search/all_5.html b/html/search/all_5.html new file mode 100644 index 000000000..2544c4e5b --- /dev/null +++ b/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_5.js b/html/search/all_5.js new file mode 100644 index 000000000..385590538 --- /dev/null +++ b/html/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['server_6',['Server',['../classserver_1_1Server.html',1,'server']]] +]; diff --git a/html/search/all_6.html b/html/search/all_6.html new file mode 100644 index 000000000..43f14eab3 --- /dev/null +++ b/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_6.js b/html/search/all_6.js new file mode 100644 index 000000000..b6edfc1b2 --- /dev/null +++ b/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['world_7',['World',['../classworld_1_1World.html',1,'world']]] +]; diff --git a/html/search/classes_0.html b/html/search/classes_0.html new file mode 100644 index 000000000..f7e4c14e1 --- /dev/null +++ b/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_0.js b/html/search/classes_0.js new file mode 100644 index 000000000..06502aa4a --- /dev/null +++ b/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_8',['Client',['../classbuilder_1_1Client.html',1,'builder']]] +]; diff --git a/html/search/classes_1.html b/html/search/classes_1.html new file mode 100644 index 000000000..c7ff4b311 --- /dev/null +++ b/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_1.js b/html/search/classes_1.js new file mode 100644 index 000000000..866a72a35 --- /dev/null +++ b/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handler_9',['Handler',['../classserver_1_1Handler.html',1,'server']]] +]; diff --git a/html/search/classes_2.html b/html/search/classes_2.html new file mode 100644 index 000000000..0d1e8a0cd --- /dev/null +++ b/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_2.js b/html/search/classes_2.js new file mode 100644 index 000000000..e6b29a3c2 --- /dev/null +++ b/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_10',['Model',['../classserver_1_1Model.html',1,'server']]] +]; diff --git a/html/search/classes_3.html b/html/search/classes_3.html new file mode 100644 index 000000000..21025456b --- /dev/null +++ b/html/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_3.js b/html/search/classes_3.js new file mode 100644 index 000000000..07247c42d --- /dev/null +++ b/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ratelimiter_11',['RateLimiter',['../classserver_1_1RateLimiter.html',1,'server']]] +]; diff --git a/html/search/classes_4.html b/html/search/classes_4.html new file mode 100644 index 000000000..095ab5952 --- /dev/null +++ b/html/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_4.js b/html/search/classes_4.js new file mode 100644 index 000000000..7f21fc0b9 --- /dev/null +++ b/html/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['server_12',['Server',['../classserver_1_1Server.html',1,'server']]] +]; diff --git a/html/search/classes_5.html b/html/search/classes_5.html new file mode 100644 index 000000000..fc9cdc996 --- /dev/null +++ b/html/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_5.js b/html/search/classes_5.js new file mode 100644 index 000000000..6473e8276 --- /dev/null +++ b/html/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['world_13',['World',['../classworld_1_1World.html',1,'world']]] +]; diff --git a/html/search/close.png b/html/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/html/search/mag_sel.png b/html/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/html/search/nomatches.html b/html/search/nomatches.html new file mode 100644 index 000000000..437732089 --- /dev/null +++ b/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/html/search/pages_0.html b/html/search/pages_0.html new file mode 100644 index 000000000..9a6a29ad3 --- /dev/null +++ b/html/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/pages_0.js b/html/search/pages_0.js new file mode 100644 index 000000000..c3d0b094d --- /dev/null +++ b/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['craft_14',['Craft',['../md_README.html',1,'']]] +]; diff --git a/html/search/pages_1.html b/html/search/pages_1.html new file mode 100644 index 000000000..132ee038e --- /dev/null +++ b/html/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/pages_1.js b/html/search/pages_1.js new file mode 100644 index 000000000..f0cf884ba --- /dev/null +++ b/html/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['license_15',['LICENSE',['../md_LICENSE.html',1,'']]] +]; diff --git a/html/search/search.css b/html/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/html/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/html/search/search.js b/html/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/html/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/html/search/search_r.png b/html/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/html/search/searchdata.js b/html/search/searchdata.js new file mode 100644 index 000000000..896490494 --- /dev/null +++ b/html/search/searchdata.js @@ -0,0 +1,21 @@ +var indexSectionsWithContent = +{ + 0: "chlmrsw", + 1: "chmrsw", + 2: "cl" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Pages" +}; + diff --git a/html/splitbar.png b/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/html/sync_off.png b/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/html/sync_on.png b/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/html/tab_a.png b/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/html/tab_b.png b/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/html/tabs.css b/html/tabs.css new file mode 100644 index 000000000..7d45d36c1 --- /dev/null +++ b/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} From 49942a09714894f228ba8860e8f4cd817206c8fb Mon Sep 17 00:00:00 2001 From: NathanJohns307 Date: Sun, 7 Mar 2021 10:10:57 -0800 Subject: [PATCH 09/28] Added lava/rain textures and mapped them to blocks placeable by player --- src/item.c | 7 +++++-- src/item.h | 2 ++ textures/texture.png | Bin 35757 -> 31757 bytes 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/item.c b/src/item.c index 4efc40908..eaf130e4b 100644 --- a/src/item.c +++ b/src/item.c @@ -25,6 +25,8 @@ const int items[] = { SUN_FLOWER, WHITE_FLOWER, BLUE_FLOWER, + LAVA, + RAIN, COLOR_00, COLOR_01, COLOR_02, @@ -88,8 +90,8 @@ const int blocks[256][6] = { {0, 0, 0, 0, 0, 0}, // 21 {0, 0, 0, 0, 0, 0}, // 22 {0, 0, 0, 0, 0, 0}, // 23 - {0, 0, 0, 0, 0, 0}, // 24 - {0, 0, 0, 0, 0, 0}, // 25 + {240, 240, 240, 240, 240, 240}, // 24 lava + {17, 17, 18, 19, 17, 17}, // 25 rain {0, 0, 0, 0, 0, 0}, // 26 {0, 0, 0, 0, 0, 0}, // 27 {0, 0, 0, 0, 0, 0}, // 28 @@ -185,6 +187,7 @@ int is_transparent(int w) { case GLASS: case LEAVES: case WATER: + case RAIN: return 1; default: return 0; diff --git a/src/item.h b/src/item.h index 0d9226e28..2a84ce901 100644 --- a/src/item.h +++ b/src/item.h @@ -25,6 +25,8 @@ #define SUN_FLOWER 21 #define WHITE_FLOWER 22 #define BLUE_FLOWER 23 +#define LAVA 24 +#define RAIN 25 #define COLOR_00 32 #define COLOR_01 33 #define COLOR_02 34 diff --git a/textures/texture.png b/textures/texture.png index c2b6c34d0710d2b3932369fc9f891dafd380489c..dddb0669b70acf58c31a768030d01880d23ed80d 100644 GIT binary patch literal 31757 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 V{yC%CL!9r8q@th!YLGJv|33~)XA}Sc literal 35757 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 YKd#OB0j7>I@c;k-07*qoM6N<$f+(0q<^TWy From ebdae2101fbb0c26245d11ae09b26383a400ae56 Mon Sep 17 00:00:00 2001 From: Brad Date: Sun, 7 Mar 2021 22:06:42 -0500 Subject: [PATCH 10/28] Variable mouse sensitivity --- .vscode/settings.json | 6 ++++++ src/main.c | 13 +++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..01b798c58 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "files.associations": { + "cube.h": "c" + }, + "cmake.configureOnOpen": true +} \ No newline at end of file diff --git a/src/main.c b/src/main.c index c079478a9..13d4c2412 100644 --- a/src/main.c +++ b/src/main.c @@ -33,6 +33,8 @@ #define MODE_OFFLINE 0 #define MODE_ONLINE 1 +#define MOUSE_SENSITIVITY 0.001; + typedef struct { Map map; SignList signs; @@ -91,6 +93,7 @@ typedef struct { typedef struct { GLFWwindow *window; + float sensitivity; Chunk chunks[MAX_CHUNKS]; int chunk_count; int create_radius; @@ -1959,13 +1962,12 @@ void handle_mouse_input() { if (exclusive && (px || py)) { double mx, my; glfwGetCursorPos(g->window, &mx, &my); - float m = 0.0025; - s->rx += (mx - px) * m; + s->rx += (mx - px) * g->sensitivity; if (INVERT_MOUSE) { - s->ry += (my - py) * m; + s->ry += (my - py) * g->sensitivity; } else { - s->ry -= (my - py) * m; + s->ry -= (my - py) * g->sensitivity; } if (s->rx < 0) { s->rx += RADIANS(360); @@ -2000,6 +2002,8 @@ void handle_movement(double dt) { if (glfwGetKey(g->window, GLFW_KEY_RIGHT)) s->rx += m; if (glfwGetKey(g->window, GLFW_KEY_UP)) s->ry += m; if (glfwGetKey(g->window, GLFW_KEY_DOWN)) s->ry -= m; + if (glfwGetKey(g->window, GLFW_KEY_M)) g->sensitivity *= 1.1; + if (glfwGetKey(g->window, GLFW_KEY_N)) g->sensitivity *= 0.9; } float vx, vy, vz; get_motion_vector(g->flying, sz, sx, s->rx, s->ry, &vx, &vy, &vz); @@ -2306,6 +2310,7 @@ int main(int argc, char **argv) { Player *me = g->players; State *s = &g->players->state; + g->sensitivity = MOUSE_SENSITIVITY; me->id = 0; me->name[0] = '\0'; me->buffer = 0; From b0d2c1385e79f9ea4bbb23d7b691b83e0c69b757 Mon Sep 17 00:00:00 2001 From: Brad Date: Thu, 11 Mar 2021 20:28:41 -0500 Subject: [PATCH 11/28] Added user stories and updated backlog --- Backlog | 12 +++++++++--- UserStories | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Backlog b/Backlog index de634b4a9..4c61b6752 100644 --- a/Backlog +++ b/Backlog @@ -1,11 +1,17 @@ -US001 Task001 - Modify mouse input to move the player's view less. The mouse should be less sensitive. Points 3 +-- US001 Task001 - Modify mouse input to move the player's view less. The mouse should be less sensitive. Points 3 US002 Task002 - Sand blocks should fall to the ground if there is no block underneath. Points 5 US002 Task003 - Gravel blocks should fall to the ground if there is no block underneath. Points 5 US003 Task004 - Cloud color should change to a dark grey at night, and stay white during daytime. Points 2 US004 Task005 - Design the layout and structure of the buildings to be spawned. Points 5 US004 Task006 - Create generation function and spawn conditions for buildings. Points 5 -US005 Task007 - Create lava block model. Points 3 +-- US005 Task007 - Create lava block model. Points 3 US005 Task008 - Create generation function and spawn conditions for lava pools. Points 5 -US006 Task009 - Create rain drop block model. Points 3 +-- US006 Task009 - Create rain drop block model. Points 3 US006 Task010 - Create spawn conditions for rain drop blocks. Points 3 US006 Task011 - Rain drop blocks should have no collision and be effected by gravity. Points 3 +US007 Task012 - Water blocks should not be transparent. Points 2 +US007 Task013 - Water and lava blocks should slow player movement when the player is inside them. Points 3 +US007 Task014 - Lava blocks should have no collision. Points 1 +US008 Task015 - Add button handling for sprint, doubling movement speed. Points 3 +US009 Task016 - Add the ability to double jump while not flying. Points 3 +US010 Task017 - Add bodies of water to terrain generation. Points 5 diff --git a/UserStories b/UserStories index f4f30b49b..a934707f9 100644 --- a/UserStories +++ b/UserStories @@ -4,3 +4,7 @@ US003 - As a player of Craft, the cloud's shading should reflect the time of day US004 - As a player of Craft, I want randomly spawning buildings or structures to create a more diverse playing environment. US005 - As a player of Craft, I want randomly generated lava pools to create a more diverse playing environment. US006 - As a player of Craft, I want periodic weather (rain) so that the environment is more dynamic and realistic. +US007 - As a player of Craft, I want fluid blocks to slow player movement. +US008 - As a player of Craft, I want to be able to sprint. +US009 - As a player of Craft, I want to be able to double jump +US010 - As a player of Craft, I want bodies of water to be generated in the map. From 15aeb64c3ffe08ad7e3c090c45e06ee241a2d6f3 Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 18 Mar 2021 20:39:05 -0400 Subject: [PATCH 12/28] commit generated doxy files --- CMakeDoxyfile.in | 280 ++++++++++++++++ CMakeDoxygenDefaults.cmake | 672 +++++++++++++++++++++++++++++++++++++ 2 files changed, 952 insertions(+) create mode 100644 CMakeDoxyfile.in create mode 100644 CMakeDoxygenDefaults.cmake diff --git a/CMakeDoxyfile.in b/CMakeDoxyfile.in new file mode 100644 index 000000000..848a3c819 --- /dev/null +++ b/CMakeDoxyfile.in @@ -0,0 +1,280 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ +PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ +PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ +PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ +PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ +CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ +ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ +OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ +OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ +BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ +REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ +ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ +ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ +INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ +FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ +STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ +STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ +JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ +JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ +QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ +MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ +INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ +SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ +TAB_SIZE = @DOXYGEN_TAB_SIZE@ +ALIASES = @DOXYGEN_ALIASES@ +TCL_SUBST = @DOXYGEN_TCL_SUBST@ +OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ +OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ +OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ +OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ +OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ +EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ +MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ +TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ +AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ +BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ +CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ +SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ +IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ +DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ +GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ +SUBGROUPING = @DOXYGEN_SUBGROUPING@ +INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ +INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ +TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ +LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ +EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ +EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ +EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ +EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ +EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ +EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ +EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ +EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ +HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ +HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ +HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ +HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ +INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ +CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ +HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ +HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ +SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ +SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ +FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ +INLINE_INFO = @DOXYGEN_INLINE_INFO@ +SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ +SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ +SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ +SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ +SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ +STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ +GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ +GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ +GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ +GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ +ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ +MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ +SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ +SHOW_FILES = @DOXYGEN_SHOW_FILES@ +SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ +FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ +LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ +CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ +QUIET = @DOXYGEN_QUIET@ +WARNINGS = @DOXYGEN_WARNINGS@ +WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ +WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ +WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ +WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ +WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ +WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ +INPUT = @DOXYGEN_INPUT@ +INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ +FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ +RECURSIVE = @DOXYGEN_RECURSIVE@ +EXCLUDE = @DOXYGEN_EXCLUDE@ +EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ +EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ +EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ +EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ +EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ +EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ +IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ +INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ +FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ +FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ +FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ +USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ +SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ +INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ +STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ +REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ +REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ +REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ +SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ +USE_HTAGS = @DOXYGEN_USE_HTAGS@ +VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ +CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ +CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ +CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ +ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ +COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ +IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ +GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ +HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ +HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ +HTML_HEADER = @DOXYGEN_HTML_HEADER@ +HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ +HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ +HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ +HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ +HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ +HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ +HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ +HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ +HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ +HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ +HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ +GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ +DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ +DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ +DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ +DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ +GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ +CHM_FILE = @DOXYGEN_CHM_FILE@ +HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ +GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ +CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ +BINARY_TOC = @DOXYGEN_BINARY_TOC@ +TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ +GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ +QCH_FILE = @DOXYGEN_QCH_FILE@ +QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ +QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ +QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ +QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ +QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ +QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ +GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ +ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ +DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ +GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ +ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ +TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ +EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ +FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ +FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ +FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ +USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ +MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ +MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ +MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ +MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ +SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ +SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ +SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ +EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ +EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ +GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ +LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ +LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ +MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ +LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ +COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ +PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ +EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ +LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ +LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ +LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ +LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ +PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ +USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ +LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ +LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ +LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ +LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ +LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ +LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ +GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ +RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ +COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ +RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ +RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ +RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ +RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ +GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ +MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ +MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ +MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ +MAN_LINKS = @DOXYGEN_MAN_LINKS@ +GENERATE_XML = @DOXYGEN_GENERATE_XML@ +XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ +XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ +XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ +GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ +DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ +DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ +GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ +GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ +PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ +PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ +PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ +ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ +MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ +EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ +SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ +INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ +INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ +PREDEFINED = @DOXYGEN_PREDEFINED@ +EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ +SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ +TAGFILES = @DOXYGEN_TAGFILES@ +GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ +ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ +EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ +EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ +CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ +DIA_PATH = @DOXYGEN_DIA_PATH@ +HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ +HAVE_DOT = @DOXYGEN_HAVE_DOT@ +DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ +DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ +DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ +DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ +CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ +COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ +GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ +UML_LOOK = @DOXYGEN_UML_LOOK@ +UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ +TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ +INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ +INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ +CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ +CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ +GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ +DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ +DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ +INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ +DOT_PATH = @DOXYGEN_DOT_PATH@ +DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ +MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ +DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ +PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ +PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ +PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ +DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ +MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ +DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ +DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ +GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ +DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/CMakeDoxygenDefaults.cmake b/CMakeDoxygenDefaults.cmake new file mode 100644 index 000000000..db28798f1 --- /dev/null +++ b/CMakeDoxygenDefaults.cmake @@ -0,0 +1,672 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) + set(DOXYGEN_DOXYFILE_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_PROJECT_NAME) + set(DOXYGEN_PROJECT_NAME "My Project") +endif() +if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) + set(DOXYGEN_CREATE_SUBDIRS NO) +endif() +if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) + set(DOXYGEN_ALLOW_UNICODE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) + set(DOXYGEN_OUTPUT_LANGUAGE English) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) + set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) +endif() +if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) + set(DOXYGEN_BRIEF_MEMBER_DESC YES) +endif() +if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) + set(DOXYGEN_REPEAT_BRIEF YES) +endif() +if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) + set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" + "The $name widget" + "The $name file" + is + provides + specifies + contains + represents + a + an + the) +endif() +if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) + set(DOXYGEN_ALWAYS_DETAILED_SEC NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) + set(DOXYGEN_INLINE_INHERITED_MEMB NO) +endif() +if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) + set(DOXYGEN_FULL_PATH_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_SHORT_NAMES) + set(DOXYGEN_SHORT_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) + set(DOXYGEN_JAVADOC_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) + set(DOXYGEN_JAVADOC_BANNER NO) +endif() +if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) + set(DOXYGEN_QT_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) + set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_INHERIT_DOCS) + set(DOXYGEN_INHERIT_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) + set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) +endif() +if(NOT DEFINED DOXYGEN_TAB_SIZE) + set(DOXYGEN_TAB_SIZE 4) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) + set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) + set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) + set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) + set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) + set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) +endif() +if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) + set(DOXYGEN_MARKDOWN_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) + set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) +endif() +if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) + set(DOXYGEN_AUTOLINK_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) + set(DOXYGEN_BUILTIN_STL_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) + set(DOXYGEN_CPP_CLI_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_SIP_SUPPORT) + set(DOXYGEN_SIP_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) + set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) + set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) +endif() +if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) + set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_SUBGROUPING) + set(DOXYGEN_SUBGROUPING YES) +endif() +if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) + set(DOXYGEN_INLINE_GROUPED_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) + set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) +endif() +if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) + set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) +endif() +if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) + set(DOXYGEN_LOOKUP_CACHE_SIZE 0) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ALL) + set(DOXYGEN_EXTRACT_ALL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) + set(DOXYGEN_EXTRACT_PRIVATE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) + set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) + set(DOXYGEN_EXTRACT_PACKAGE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) + set(DOXYGEN_EXTRACT_STATIC NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) + set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) + set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) + set(DOXYGEN_EXTRACT_ANON_NSPACES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) + set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) + set(DOXYGEN_HIDE_UNDOC_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) + set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) + set(DOXYGEN_HIDE_IN_BODY_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) + set(DOXYGEN_INTERNAL_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) + set(DOXYGEN_CASE_SENSE_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) + set(DOXYGEN_HIDE_SCOPE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) + set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) +endif() +if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) + set(DOXYGEN_SHOW_INCLUDE_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) + set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) +endif() +if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) + set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INFO) + set(DOXYGEN_INLINE_INFO YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) + set(DOXYGEN_SORT_MEMBER_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) + set(DOXYGEN_SORT_BRIEF_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) + set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) + set(DOXYGEN_SORT_GROUP_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) + set(DOXYGEN_SORT_BY_SCOPE_NAME NO) +endif() +if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) + set(DOXYGEN_STRICT_PROTO_MATCHING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) + set(DOXYGEN_GENERATE_TODOLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) + set(DOXYGEN_GENERATE_TESTLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) + set(DOXYGEN_GENERATE_BUGLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) + set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) +endif() +if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) + set(DOXYGEN_MAX_INITIALIZER_LINES 30) +endif() +if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) + set(DOXYGEN_SHOW_USED_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_FILES) + set(DOXYGEN_SHOW_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) + set(DOXYGEN_SHOW_NAMESPACES YES) +endif() +if(NOT DEFINED DOXYGEN_QUIET) + set(DOXYGEN_QUIET NO) +endif() +if(NOT DEFINED DOXYGEN_WARNINGS) + set(DOXYGEN_WARNINGS YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) + set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) + set(DOXYGEN_WARN_IF_DOC_ERROR YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) + set(DOXYGEN_WARN_NO_PARAMDOC NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) + set(DOXYGEN_WARN_AS_ERROR NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_FORMAT) + set(DOXYGEN_WARN_FORMAT "$file:$line: $text") +endif() +if(NOT DEFINED DOXYGEN_INPUT_ENCODING) + set(DOXYGEN_INPUT_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_FILE_PATTERNS) + set(DOXYGEN_FILE_PATTERNS *.c + *.cc + *.cxx + *.cpp + *.c++ + *.java + *.ii + *.ixx + *.ipp + *.i++ + *.inl + *.idl + *.ddl + *.odl + *.h + *.hh + *.hxx + *.hpp + *.h++ + *.cs + *.d + *.php + *.php4 + *.php5 + *.phtml + *.inc + *.m + *.markdown + *.md + *.mm + *.dox + *.doc + *.txt + *.py + *.pyw + *.f90 + *.f95 + *.f03 + *.f08 + *.f + *.for + *.tcl + *.vhd + *.vhdl + *.ucf + *.qsf + *.ice) +endif() +if(NOT DEFINED DOXYGEN_RECURSIVE) + set(DOXYGEN_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) + set(DOXYGEN_EXCLUDE_SYMLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) + set(DOXYGEN_EXAMPLE_PATTERNS *) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) + set(DOXYGEN_EXAMPLE_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) + set(DOXYGEN_FILTER_SOURCE_FILES NO) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) + set(DOXYGEN_SOURCE_BROWSER NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SOURCES) + set(DOXYGEN_INLINE_SOURCES NO) +endif() +if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) + set(DOXYGEN_STRIP_CODE_COMMENTS YES) +endif() +if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) + set(DOXYGEN_REFERENCED_BY_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) + set(DOXYGEN_REFERENCES_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) + set(DOXYGEN_REFERENCES_LINK_SOURCE YES) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) + set(DOXYGEN_SOURCE_TOOLTIPS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_HTAGS) + set(DOXYGEN_USE_HTAGS NO) +endif() +if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) + set(DOXYGEN_VERBATIM_HEADERS YES) +endif() +if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) + set(DOXYGEN_CLANG_ASSISTED_PARSING NO) +endif() +if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) + set(DOXYGEN_ALPHABETICAL_INDEX YES) +endif() +if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) + set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTML) + set(DOXYGEN_GENERATE_HTML YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_OUTPUT) + set(DOXYGEN_HTML_OUTPUT html) +endif() +if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) + set(DOXYGEN_HTML_FILE_EXTENSION .html) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) + set(DOXYGEN_HTML_COLORSTYLE_HUE 220) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) + set(DOXYGEN_HTML_COLORSTYLE_SAT 100) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) + set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) +endif() +if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) + set(DOXYGEN_HTML_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) + set(DOXYGEN_HTML_DYNAMIC_MENUS YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) + set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) + set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) + set(DOXYGEN_GENERATE_DOCSET NO) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) + set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") +endif() +if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) + set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) + set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) + set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) + set(DOXYGEN_GENERATE_HTMLHELP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_CHI) + set(DOXYGEN_GENERATE_CHI NO) +endif() +if(NOT DEFINED DOXYGEN_BINARY_TOC) + set(DOXYGEN_BINARY_TOC NO) +endif() +if(NOT DEFINED DOXYGEN_TOC_EXPAND) + set(DOXYGEN_TOC_EXPAND NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_QHP) + set(DOXYGEN_GENERATE_QHP NO) +endif() +if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) + set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) + set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) + set(DOXYGEN_GENERATE_ECLIPSEHELP NO) +endif() +if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) + set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DISABLE_INDEX) + set(DOXYGEN_DISABLE_INDEX NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) + set(DOXYGEN_GENERATE_TREEVIEW NO) +endif() +if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) + set(DOXYGEN_ENUM_VALUES_PER_LINE 4) +endif() +if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) + set(DOXYGEN_TREEVIEW_WIDTH 250) +endif() +if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) + set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) + set(DOXYGEN_FORMULA_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) + set(DOXYGEN_FORMULA_TRANSPARENT YES) +endif() +if(NOT DEFINED DOXYGEN_USE_MATHJAX) + set(DOXYGEN_USE_MATHJAX NO) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) + set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) + set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) +endif() +if(NOT DEFINED DOXYGEN_SEARCHENGINE) + set(DOXYGEN_SEARCHENGINE YES) +endif() +if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) + set(DOXYGEN_SERVER_BASED_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) + set(DOXYGEN_EXTERNAL_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) + set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LATEX) + set(DOXYGEN_GENERATE_LATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) + set(DOXYGEN_LATEX_OUTPUT latex) +endif() +if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) + set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) +endif() +if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) + set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_LATEX) + set(DOXYGEN_COMPACT_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PAPER_TYPE) + set(DOXYGEN_PAPER_TYPE a4) +endif() +if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) + set(DOXYGEN_PDF_HYPERLINKS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_PDFLATEX) + set(DOXYGEN_USE_PDFLATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) + set(DOXYGEN_LATEX_BATCHMODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) + set(DOXYGEN_LATEX_HIDE_INDICES NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) + set(DOXYGEN_LATEX_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) + set(DOXYGEN_LATEX_BIB_STYLE plain) +endif() +if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) + set(DOXYGEN_LATEX_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_RTF) + set(DOXYGEN_GENERATE_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_OUTPUT) + set(DOXYGEN_RTF_OUTPUT rtf) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_RTF) + set(DOXYGEN_COMPACT_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) + set(DOXYGEN_RTF_HYPERLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) + set(DOXYGEN_RTF_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_MAN) + set(DOXYGEN_GENERATE_MAN NO) +endif() +if(NOT DEFINED DOXYGEN_MAN_OUTPUT) + set(DOXYGEN_MAN_OUTPUT man) +endif() +if(NOT DEFINED DOXYGEN_MAN_EXTENSION) + set(DOXYGEN_MAN_EXTENSION .3) +endif() +if(NOT DEFINED DOXYGEN_MAN_LINKS) + set(DOXYGEN_MAN_LINKS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_XML) + set(DOXYGEN_GENERATE_XML NO) +endif() +if(NOT DEFINED DOXYGEN_XML_OUTPUT) + set(DOXYGEN_XML_OUTPUT xml) +endif() +if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) + set(DOXYGEN_XML_PROGRAMLISTING YES) +endif() +if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) + set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) + set(DOXYGEN_GENERATE_DOCBOOK NO) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) + set(DOXYGEN_DOCBOOK_OUTPUT docbook) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) + set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) + set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) + set(DOXYGEN_GENERATE_PERLMOD NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) + set(DOXYGEN_PERLMOD_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) + set(DOXYGEN_PERLMOD_PRETTY YES) +endif() +if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) + set(DOXYGEN_ENABLE_PREPROCESSING YES) +endif() +if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) + set(DOXYGEN_MACRO_EXPANSION NO) +endif() +if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) + set(DOXYGEN_EXPAND_ONLY_PREDEF NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) + set(DOXYGEN_SEARCH_INCLUDES YES) +endif() +if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) + set(DOXYGEN_SKIP_FUNCTION_MACROS YES) +endif() +if(NOT DEFINED DOXYGEN_ALLEXTERNALS) + set(DOXYGEN_ALLEXTERNALS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) + set(DOXYGEN_EXTERNAL_GROUPS YES) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) + set(DOXYGEN_EXTERNAL_PAGES YES) +endif() +if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) + set(DOXYGEN_CLASS_DIAGRAMS YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) + set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) +endif() +if(NOT DEFINED DOXYGEN_HAVE_DOT) + set(DOXYGEN_HAVE_DOT YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) + set(DOXYGEN_DOT_NUM_THREADS 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTNAME) + set(DOXYGEN_DOT_FONTNAME Helvetica) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) + set(DOXYGEN_DOT_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_CLASS_GRAPH) + set(DOXYGEN_CLASS_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) + set(DOXYGEN_COLLABORATION_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) + set(DOXYGEN_GROUP_GRAPHS YES) +endif() +if(NOT DEFINED DOXYGEN_UML_LOOK) + set(DOXYGEN_UML_LOOK NO) +endif() +if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) + set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) +endif() +if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) + set(DOXYGEN_TEMPLATE_RELATIONS NO) +endif() +if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) + set(DOXYGEN_INCLUDE_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) + set(DOXYGEN_INCLUDED_BY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_CALL_GRAPH) + set(DOXYGEN_CALL_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_CALLER_GRAPH) + set(DOXYGEN_CALLER_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) + set(DOXYGEN_GRAPHICAL_HIERARCHY YES) +endif() +if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) + set(DOXYGEN_DIRECTORY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) + set(DOXYGEN_DOT_IMAGE_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) + set(DOXYGEN_INTERACTIVE_SVG NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) + set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) +endif() +if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) + set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) + set(DOXYGEN_DOT_TRANSPARENT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) + set(DOXYGEN_DOT_MULTI_TARGETS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) + set(DOXYGEN_GENERATE_LEGEND YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_CLEANUP) + set(DOXYGEN_DOT_CLEANUP YES) +endif() From 6fcc0c87328b773f40a30a47233d693ee8498ce4 Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 18 Mar 2021 20:40:05 -0400 Subject: [PATCH 13/28] make water blocks visible & not obstacles --- src/item.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/item.c b/src/item.c index eaf130e4b..b26bf4a95 100644 --- a/src/item.c +++ b/src/item.c @@ -168,6 +168,7 @@ int is_obstacle(int w) { switch (w) { case EMPTY: case CLOUD: + case WATER: return 0; default: return 1; @@ -195,7 +196,7 @@ int is_transparent(int w) { } int is_alpha(int w) { - return w == WATER; + return 0; } int is_destructable(int w) { From 32a679996927e572615daab08a15b29793da9585 Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 18 Mar 2021 22:14:23 -0400 Subject: [PATCH 14/28] Add is slowing property to items --- src/item.c | 13 +++++++++++++ src/item.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/item.c b/src/item.c index eaf130e4b..14d1a68bb 100644 --- a/src/item.c +++ b/src/item.c @@ -207,3 +207,16 @@ int is_destructable(int w) { return 1; } } + +int is_slowing(int w) { + // The player must be able to pass through the item for it to slow them. + if (is_obstacle(w)) return 0; + + switch (w) { + case WATER: + case LAVA: + return 1; + default: + return 0; + } +} diff --git a/src/item.h b/src/item.h index 2a84ce901..9ea2f4070 100644 --- a/src/item.h +++ b/src/item.h @@ -71,5 +71,6 @@ int is_obstacle(int w); int is_transparent(int w); int is_alpha(int w); int is_destructable(int w); +int is_slowing(int w); #endif From 89e68bee1f9897e6a64afd71f056dfa085acc149 Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 18 Mar 2021 22:17:05 -0400 Subject: [PATCH 15/28] Slow player speed when intersecting slowing blocks --- src/main.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index 13d4c2412..1da98f4a3 100644 --- a/src/main.c +++ b/src/main.c @@ -111,6 +111,7 @@ typedef struct { int observe1; int observe2; int flying; + int slowed; int item_index; int scale; int ortho; @@ -1985,6 +1986,54 @@ void handle_mouse_input() { } } +// Returns 1 if player intersects a MapEntry x where is_slowing(x)==1, +// otherwise return 0. +int is_movement_slowed(Player* player) { + int height = 2; + float *x = &player->state.x; + float *y = &player->state.y; + float *z = &player->state.z; + + int result = 0; + int p = chunked(*x); + int q = chunked(*z); + Chunk *chunk = find_chunk(p, q); + if (!chunk) { + return result; + } + Map *map = &chunk->map; + int nx = roundf(*x); + int ny = roundf(*y); + int nz = roundf(*z); + float px = *x - nx; + float py = *y - ny; + float pz = *z - nz; + float pad = 0.25; + for (int dy = 0; dy < height; dy++) { + // Check if player is intersecting with an item that is slowing. + if ( px < -pad && is_slowing(map_get(map, nx - 1, ny - dy, nz)) + || px > pad && is_slowing(map_get(map, nx + 1, ny - dy, nz)) + || py < -pad && is_slowing(map_get(map, nx, ny - dy - 1, nz)) + || py > pad && is_slowing(map_get(map, nx, ny - dy + 1, nz)) + || pz < -pad && is_slowing(map_get(map, nx, ny - dy, nz - 1)) + || pz > pad && is_slowing(map_get(map, nx, ny - dy, nz + 1)) + ) { + result = 1; + } + } + return result; +} + +// Calculates the current movement speed of the player. +// Returns the movement speed of the player. +float handle_player_speed() { + g->slowed = is_movement_slowed(&g->players); + + // Only slow movement if the player is not flying. + float speed = g->flying ? 20 : (g->slowed ? 1 : 5); + return speed; +} + void handle_movement(double dt) { static float dy = 0; State *s = &g->players->state; @@ -2017,7 +2066,7 @@ void handle_movement(double dt) { } } } - float speed = g->flying ? 20 : 5; + float speed = handle_player_speed(); int estimate = roundf(sqrtf( powf(vx * speed, 2) + powf(vy * speed + ABS(dy) * 2, 2) + @@ -2137,6 +2186,7 @@ void reset_model() { g->observe1 = 0; g->observe2 = 0; g->flying = 0; + g->slowed = 0; g->item_index = 0; memset(g->typing_buffer, 0, sizeof(char) * MAX_TEXT_LENGTH); g->typing = 0; From e0f6aa557778fe0dbe4f84112d25eaaca02da4d6 Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 25 Mar 2021 20:07:18 -0400 Subject: [PATCH 16/28] Add new tasks --- Backlog | 4 ++++ UserStories | 3 +++ 2 files changed, 7 insertions(+) diff --git a/Backlog b/Backlog index 4c61b6752..4c980b0c4 100644 --- a/Backlog +++ b/Backlog @@ -15,3 +15,7 @@ US007 Task014 - Lava blocks should have no collision. Points 1 US008 Task015 - Add button handling for sprint, doubling movement speed. Points 3 US009 Task016 - Add the ability to double jump while not flying. Points 3 US010 Task017 - Add bodies of water to terrain generation. Points 5 +US011 Task018 - Give players a health value. points 2 +US011 Task019 - Subtract from the player's health value while in lava or if the player falls from 5 blocks or higher. points 5 +US011 Task020 - Add to the player's health periodically if it is not full. points 4 +US012 Task021 - Hold the space key to float to the top of a water body. points 3 \ No newline at end of file diff --git a/UserStories b/UserStories index a934707f9..5e6305e82 100644 --- a/UserStories +++ b/UserStories @@ -8,3 +8,6 @@ US007 - As a player of Craft, I want fluid blocks to slow player movement. US008 - As a player of Craft, I want to be able to sprint. US009 - As a player of Craft, I want to be able to double jump US010 - As a player of Craft, I want bodies of water to be generated in the map. +US011 - As a player of Craft, I want the player to have limited, regenerating health, to make a more realistic environment. +US012 - As a player of Craft, I want to be able to swim wherever there are water blocks, to make the game more realistic. + From a4030ec76bcae100f5f54e9b7deac815fbfd9647 Mon Sep 17 00:00:00 2001 From: NathanJohns307 Date: Fri, 26 Mar 2021 02:53:47 -0700 Subject: [PATCH 17/28] rain drop blocks now spawn one block below clouds --- src/world.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/world.c b/src/world.c index 8ca739821..63d7d5a95 100644 --- a/src/world.c +++ b/src/world.c @@ -71,6 +71,13 @@ void create_world(int p, int q, world_func func, void *arg) { func(x, y, z, 16 * flag, arg); } } + for (int y = 64; y < 72; y++) { + if (simplex3( + x * 0.01, y * 0.1, z * 0.01, 8, 0.5, 2) > 0.75) + { + func(x, y-1, z, 25 * flag, arg); + } + } } } } From 324fd5e6b1f8fe41f16381ebaedb0053876168d3 Mon Sep 17 00:00:00 2001 From: NathanJohns307 Date: Fri, 26 Mar 2021 02:59:52 -0700 Subject: [PATCH 18/28] rain and lava now have no collision --- src/item.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/item.c b/src/item.c index eaf130e4b..e0eb0c339 100644 --- a/src/item.c +++ b/src/item.c @@ -168,6 +168,8 @@ int is_obstacle(int w) { switch (w) { case EMPTY: case CLOUD: + case LAVA: + case RAIN: return 0; default: return 1; From 6d3eecccf7a6282ff4fe58390f3ed6facf8ab881 Mon Sep 17 00:00:00 2001 From: David Landes Date: Fri, 26 Mar 2021 08:15:36 -0400 Subject: [PATCH 19/28] update assigned and completed tasks. --- Backlog | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Backlog b/Backlog index 4c980b0c4..b8cd88e25 100644 --- a/Backlog +++ b/Backlog @@ -1,21 +1,21 @@ --- US001 Task001 - Modify mouse input to move the player's view less. The mouse should be less sensitive. Points 3 +--COMPLETE-- US001 Task001 - Modify mouse input to move the player's view less. The mouse should be less sensitive. Points 3 US002 Task002 - Sand blocks should fall to the ground if there is no block underneath. Points 5 US002 Task003 - Gravel blocks should fall to the ground if there is no block underneath. Points 5 -US003 Task004 - Cloud color should change to a dark grey at night, and stay white during daytime. Points 2 +--COMPLETE-- US003 Task004 - Cloud color should change to a dark grey at night, and stay white during daytime. Points 2 US004 Task005 - Design the layout and structure of the buildings to be spawned. Points 5 US004 Task006 - Create generation function and spawn conditions for buildings. Points 5 --- US005 Task007 - Create lava block model. Points 3 -US005 Task008 - Create generation function and spawn conditions for lava pools. Points 5 --- US006 Task009 - Create rain drop block model. Points 3 -US006 Task010 - Create spawn conditions for rain drop blocks. Points 3 +--COMPLETE-- US005 Task007 - Create lava block model. Points 3 +--ASSIGNED-- US005 Task008 - Create generation function and spawn conditions for lava pools. Points 5 +--COMPLETE-- US006 Task009 - Create rain drop block model. Points 3 +--COMPLETE-- US006 Task010 - Create spawn conditions for rain drop blocks. Points 3 US006 Task011 - Rain drop blocks should have no collision and be effected by gravity. Points 3 -US007 Task012 - Water blocks should not be transparent. Points 2 -US007 Task013 - Water and lava blocks should slow player movement when the player is inside them. Points 3 -US007 Task014 - Lava blocks should have no collision. Points 1 -US008 Task015 - Add button handling for sprint, doubling movement speed. Points 3 -US009 Task016 - Add the ability to double jump while not flying. Points 3 -US010 Task017 - Add bodies of water to terrain generation. Points 5 -US011 Task018 - Give players a health value. points 2 +--COMPLETE-- US007 Task012 - Water blocks should not be transparent. Points 2 +--ASSIGNED-- US007 Task013 - Water and lava blocks should slow player movement when the player is inside them. Points 3 +--COMPLETE-- US007 Task014 - Lava blocks should have no collision. Points 1 +--ASSIGNED-- US008 Task015 - Add button handling for sprint, doubling movement speed. Points 3 +--ASSIGNED-- US009 Task016 - Add the ability to double jump while not flying. Points 3 +--ASSIGNED-- US010 Task017 - Add bodies of water to terrain generation. Points 5 +--ASSIGNED-- US011 Task018 - Give players a health value. points 2 US011 Task019 - Subtract from the player's health value while in lava or if the player falls from 5 blocks or higher. points 5 US011 Task020 - Add to the player's health periodically if it is not full. points 4 -US012 Task021 - Hold the space key to float to the top of a water body. points 3 \ No newline at end of file +--ASSIGNED-- US012 Task021 - Hold the space key to float to the top of a water body. points 3 \ No newline at end of file From 86997fd37a82ac8be346e5788bdd3012bc361a1c Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 1 Apr 2021 21:26:20 -0400 Subject: [PATCH 20/28] Give players a health value --- src/main.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main.c b/src/main.c index 1da98f4a3..c4e1345f9 100644 --- a/src/main.c +++ b/src/main.c @@ -35,6 +35,8 @@ #define MOUSE_SENSITIVITY 0.001; +#define MAX_PLAYER_HEALTH 10 + typedef struct { Map map; SignList signs; @@ -70,6 +72,7 @@ typedef struct { typedef struct { int id; char name[MAX_NAME_LENGTH]; + float health; State state; State state1; State state2; @@ -2363,6 +2366,7 @@ int main(int argc, char **argv) { g->sensitivity = MOUSE_SENSITIVITY; me->id = 0; me->name[0] = '\0'; + me->health = MAX_PLAYER_HEALTH; me->buffer = 0; g->player_count = 1; From 6c18bf6e4d2d78390d097f7b4cf2296cb593b86a Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 1 Apr 2021 21:28:07 -0400 Subject: [PATCH 21/28] Display player health value. --- src/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index c4e1345f9..d3a70f293 100644 --- a/src/main.c +++ b/src/main.c @@ -2461,10 +2461,10 @@ int main(int argc, char **argv) { hour = hour ? hour : 12; snprintf( text_buffer, 1024, - "(%d, %d) (%.2f, %.2f, %.2f) [%d, %d, %d] %d%cm %dfps", + "(%d, %d) (%.2f, %.2f, %.2f) [%d, %d, %d] %d%cm %dfps -- Player Health: %.2f", chunked(s->x), chunked(s->z), s->x, s->y, s->z, g->player_count, g->chunk_count, - face_count * 2, hour, am_pm, fps.fps); + face_count * 2, hour, am_pm, fps.fps, g->players->health); render_text(&text_attrib, ALIGN_LEFT, tx, ty, ts, text_buffer); ty -= ts * 2; } From ea3f9c0415a8ac8bc6b7d468c8d1a0ab636d4447 Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 1 Apr 2021 21:36:05 -0400 Subject: [PATCH 22/28] Respawn player if health reaches 0 --- src/main.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main.c b/src/main.c index d3a70f293..ccaa25816 100644 --- a/src/main.c +++ b/src/main.c @@ -2027,6 +2027,19 @@ int is_movement_slowed(Player* player) { return result; } +// This function looks at the current player's health, and performs actions based on the value. +void handle_player_health() { + // If player has no more health... + if (g->players->health <= 0) { + // Reset the player health. + g->players->health = MAX_PLAYER_HEALTH; + // Respawn. + g->players->state.x = 0; + g->players->state.y = highest_block(0, 0) + 2; // Player's vertical position should be the highest block at position(0, 0) plus 2 for the player's height. + g->players->state.z = 0; + } +} + // Calculates the current movement speed of the player. // Returns the movement speed of the player. float handle_player_speed() { @@ -2397,6 +2410,8 @@ int main(int argc, char **argv) { // HANDLE MOVEMENT // handle_movement(dt); + handle_player_health(); + // HANDLE DATA FROM SERVER // char *buffer = client_recv(); if (buffer) { From 1caf80e69f01aa312da7c64f39023f7f0b087ebb Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 1 Apr 2021 21:41:29 -0400 Subject: [PATCH 23/28] take fall damage based on velocity of collision. --- src/main.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main.c b/src/main.c index ccaa25816..58aa83b13 100644 --- a/src/main.c +++ b/src/main.c @@ -2050,6 +2050,16 @@ float handle_player_speed() { return speed; } +// Calculate the amount of damage that should be taken, based on a downward velocity at the point of collision. +// Parameter: dy - the rate of change on the y axis. +void handle_fall_damage(float dy) { + // If a player's downward velocity is 15 or more... + if (dy <= -15) { + float damage = dy / -5.75; + g->players->health -= damage; + } +} + void handle_movement(double dt) { static float dy = 0; State *s = &g->players->state; @@ -2092,6 +2102,7 @@ void handle_movement(double dt) { vx = vx * ut * speed; vy = vy * ut * speed; vz = vz * ut * speed; + float dyAtCollision = 0; for (int i = 0; i < step; i++) { if (g->flying) { dy = 0; @@ -2104,9 +2115,13 @@ void handle_movement(double dt) { s->y += vy + dy * ut; s->z += vz; if (collide(2, &s->x, &s->y, &s->z)) { + if (!dyAtCollision) + dyAtCollision = dy; dy = 0; } } + handle_fall_damage(dyAtCollision); + if (s->y < 0) { s->y = highest_block(s->x, s->z) + 2; } From 7ea4907ca8b964e7ec8355dd7b0a08e9d18b2aa6 Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 1 Apr 2021 21:42:59 -0400 Subject: [PATCH 24/28] Increase fall damage --- src/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 58aa83b13..407e0f5ba 100644 --- a/src/main.c +++ b/src/main.c @@ -2055,7 +2055,7 @@ float handle_player_speed() { void handle_fall_damage(float dy) { // If a player's downward velocity is 15 or more... if (dy <= -15) { - float damage = dy / -5.75; + float damage = dy / -5.25; g->players->health -= damage; } } @@ -2121,7 +2121,7 @@ void handle_movement(double dt) { } } handle_fall_damage(dyAtCollision); - + if (s->y < 0) { s->y = highest_block(s->x, s->z) + 2; } From e3f21b9f80e205d97603f022ea0494b73dbf4055 Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 1 Apr 2021 22:27:33 -0400 Subject: [PATCH 25/28] Take gradual damage while in lava --- src/main.c | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/src/main.c b/src/main.c index 407e0f5ba..93cf7a0a9 100644 --- a/src/main.c +++ b/src/main.c @@ -2038,16 +2038,30 @@ void handle_player_health() { g->players->state.y = highest_block(0, 0) + 2; // Player's vertical position should be the highest block at position(0, 0) plus 2 for the player's height. g->players->state.z = 0; } + + handle_lava_damage(g->players); } -// Calculates the current movement speed of the player. -// Returns the movement speed of the player. -float handle_player_speed() { - g->slowed = is_movement_slowed(&g->players); +// If player is in lava, inflict a small amount of damage. +void handle_lava_damage() { + int p = chunked(g->players->state.x); + int q = chunked(g->players->state.z); + Chunk *chunk = find_chunk(p, q); + if (!chunk) { + return; + } + Map *map = &chunk->map; + int rx = roundf(g->players->state.x); + int ry = roundf(g->players->state.y); + int rz = roundf(g->players->state.z); + + int chunkTypeUpperBody = map_get(map, rx, ry, rz); + int chunkTypeLowerBody = map_get(map, rx, ry-1, rz); + + if (chunkTypeUpperBody == LAVA || chunkTypeLowerBody == LAVA) { + inflict_damage(.05); + } - // Only slow movement if the player is not flying. - float speed = g->flying ? 20 : (g->slowed ? 1 : 5); - return speed; } // Calculate the amount of damage that should be taken, based on a downward velocity at the point of collision. @@ -2056,10 +2070,26 @@ void handle_fall_damage(float dy) { // If a player's downward velocity is 15 or more... if (dy <= -15) { float damage = dy / -5.25; - g->players->health -= damage; + inflict_damage(damage); } } +// Take damage from a player's health value. +// Parameter: damage - A positive float that will be subtracted from player's health. +void inflict_damage(float damage) { + g->players->health -= damage; +} + +// Calculates the current movement speed of the player. +// Returns the movement speed of the player. +float handle_player_speed() { + g->slowed = is_movement_slowed(&g->players); + + // Only slow movement if the player is not flying. + float speed = g->flying ? 20 : (g->slowed ? 1 : 5); + return speed; +} + void handle_movement(double dt) { static float dy = 0; State *s = &g->players->state; From 265137ca17fe9b13e70ceb524c3762e9c5446e8b Mon Sep 17 00:00:00 2001 From: David Landes Date: Thu, 1 Apr 2021 22:27:57 -0400 Subject: [PATCH 26/28] Mark tasks completed. --- Backlog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Backlog b/Backlog index b8cd88e25..82b04c63d 100644 --- a/Backlog +++ b/Backlog @@ -15,7 +15,7 @@ US006 Task011 - Rain drop blocks should have no collision and be effected by gra --ASSIGNED-- US008 Task015 - Add button handling for sprint, doubling movement speed. Points 3 --ASSIGNED-- US009 Task016 - Add the ability to double jump while not flying. Points 3 --ASSIGNED-- US010 Task017 - Add bodies of water to terrain generation. Points 5 ---ASSIGNED-- US011 Task018 - Give players a health value. points 2 -US011 Task019 - Subtract from the player's health value while in lava or if the player falls from 5 blocks or higher. points 5 +--COMPLETE-- US011 Task018 - Give players a health value. points 2 +--COMPLETE-- US011 Task019 - Subtract from the player's health value while in lava or if the player falls from 5 blocks or higher. points 5 US011 Task020 - Add to the player's health periodically if it is not full. points 4 --ASSIGNED-- US012 Task021 - Hold the space key to float to the top of a water body. points 3 \ No newline at end of file From 4478000d7d56d2213c0d9e370030baf94b132b24 Mon Sep 17 00:00:00 2001 From: Brad Date: Fri, 2 Apr 2021 21:16:25 -0400 Subject: [PATCH 27/28] resolved merge conflict between task 18 and 15 --- src/main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main.c b/src/main.c index 93cf7a0a9..066fcc7dd 100644 --- a/src/main.c +++ b/src/main.c @@ -2087,6 +2087,9 @@ float handle_player_speed() { // Only slow movement if the player is not flying. float speed = g->flying ? 20 : (g->slowed ? 1 : 5); + if(glfwGetKey(g->window, GLFW_KEY_LEFT_CONTROL) && !g->flying) { + speed *= 2; + } return speed; } From 9a81e180bd02bd10c511fb4b4d7dbacd8c35691c Mon Sep 17 00:00:00 2001 From: Brad Date: Fri, 2 Apr 2021 21:21:33 -0400 Subject: [PATCH 28/28] lowered sprint multiplier --- src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index 066fcc7dd..7282b2715 100644 --- a/src/main.c +++ b/src/main.c @@ -2088,7 +2088,7 @@ float handle_player_speed() { // Only slow movement if the player is not flying. float speed = g->flying ? 20 : (g->slowed ? 1 : 5); if(glfwGetKey(g->window, GLFW_KEY_LEFT_CONTROL) && !g->flying) { - speed *= 2; + speed *= 1.5f; } return speed; }