From 9b83919815f6a6ce5d73da1c28483970d0ca5589 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Feb 2021 14:22:28 -0600 Subject: added dev/MinGfx/ --- dev/MinGfx/docs/html/aabb_8h.html | 117 ++ dev/MinGfx/docs/html/aabb_8h_source.html | 185 ++ dev/MinGfx/docs/html/annotated.html | 119 ++ dev/MinGfx/docs/html/api.html | 168 ++ dev/MinGfx/docs/html/api_8md.html | 87 + dev/MinGfx/docs/html/bc_s.png | Bin 0 -> 633 bytes dev/MinGfx/docs/html/bdwn.png | Bin 0 -> 139 bytes dev/MinGfx/docs/html/bvh_8h.html | 111 ++ dev/MinGfx/docs/html/bvh_8h_source.html | 177 ++ dev/MinGfx/docs/html/classes.html | 132 ++ .../docs/html/classmingfx_1_1_a_a_b_b-members.html | 109 ++ dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b.html | 509 ++++++ .../docs/html/classmingfx_1_1_b_v_h-members.html | 99 ++ dev/MinGfx/docs/html/classmingfx_1_1_b_v_h.html | 232 +++ .../docs/html/classmingfx_1_1_color-members.html | 109 ++ dev/MinGfx/docs/html/classmingfx_1_1_color.html | 529 ++++++ .../html/classmingfx_1_1_craft_cam-members.html | 110 ++ .../docs/html/classmingfx_1_1_craft_cam.html | 541 ++++++ .../classmingfx_1_1_default_shader-members.html | 105 ++ .../docs/html/classmingfx_1_1_default_shader.html | 465 +++++ ...efault_shader_1_1_light_properties-members.html | 99 ++ ...fx_1_1_default_shader_1_1_light_properties.html | 214 +++ ...ult_shader_1_1_material_properties-members.html | 100 ++ ...1_1_default_shader_1_1_material_properties.html | 232 +++ .../html/classmingfx_1_1_gfx_math-members.html | 107 ++ dev/MinGfx/docs/html/classmingfx_1_1_gfx_math.html | 591 +++++++ .../html/classmingfx_1_1_graphics_app-members.html | 137 ++ .../docs/html/classmingfx_1_1_graphics_app.html | 1837 ++++++++++++++++++++ .../docs/html/classmingfx_1_1_matrix4-members.html | 127 ++ dev/MinGfx/docs/html/classmingfx_1_1_matrix4.html | 1240 +++++++++++++ .../docs/html/classmingfx_1_1_mesh-members.html | 127 ++ dev/MinGfx/docs/html/classmingfx_1_1_mesh.html | 1131 ++++++++++++ .../html/classmingfx_1_1_platform-members.html | 99 ++ dev/MinGfx/docs/html/classmingfx_1_1_platform.html | 289 +++ .../docs/html/classmingfx_1_1_point2-members.html | 113 ++ dev/MinGfx/docs/html/classmingfx_1_1_point2.html | 650 +++++++ .../docs/html/classmingfx_1_1_point3-members.html | 117 ++ dev/MinGfx/docs/html/classmingfx_1_1_point3.html | 795 +++++++++ .../html/classmingfx_1_1_quaternion-members.html | 119 ++ .../docs/html/classmingfx_1_1_quaternion.html | 818 +++++++++ .../html/classmingfx_1_1_quick_shapes-members.html | 111 ++ .../docs/html/classmingfx_1_1_quick_shapes.html | 844 +++++++++ .../docs/html/classmingfx_1_1_ray-members.html | 110 ++ dev/MinGfx/docs/html/classmingfx_1_1_ray.html | 689 ++++++++ .../classmingfx_1_1_shader_program-members.html | 127 ++ .../docs/html/classmingfx_1_1_shader_program.html | 1202 +++++++++++++ .../html/classmingfx_1_1_text_shader-members.html | 102 ++ .../docs/html/classmingfx_1_1_text_shader.html | 377 ++++ ...fx_1_1_text_shader_1_1_text_format-members.html | 99 ++ ...lassmingfx_1_1_text_shader_1_1_text_format.html | 213 +++ .../html/classmingfx_1_1_texture2_d-members.html | 110 ++ .../docs/html/classmingfx_1_1_texture2_d.html | 540 ++++++ .../docs/html/classmingfx_1_1_uni_cam-members.html | 107 ++ dev/MinGfx/docs/html/classmingfx_1_1_uni_cam.html | 482 +++++ .../docs/html/classmingfx_1_1_vector2-members.html | 120 ++ dev/MinGfx/docs/html/classmingfx_1_1_vector2.html | 841 +++++++++ .../docs/html/classmingfx_1_1_vector3-members.html | 124 ++ dev/MinGfx/docs/html/classmingfx_1_1_vector3.html | 1018 +++++++++++ dev/MinGfx/docs/html/closed.png | Bin 0 -> 125 bytes dev/MinGfx/docs/html/color_8h.html | 119 ++ dev/MinGfx/docs/html/color_8h_source.html | 177 ++ dev/MinGfx/docs/html/craft__cam_8h.html | 112 ++ dev/MinGfx/docs/html/craft__cam_8h_source.html | 211 +++ dev/MinGfx/docs/html/customdoxygen.css | 524 ++++++ dev/MinGfx/docs/html/default__shader_8h.html | 122 ++ .../docs/html/default__shader_8h_source.html | 240 +++ .../html/dir_68267d1309a1af8e8297ef4c3efbcdba.html | 146 ++ .../html/dir_e68e8157741866f444e17edd764ebbae.html | 91 + dev/MinGfx/docs/html/doc.png | Bin 0 -> 688 bytes dev/MinGfx/docs/html/doxygen.css | 1793 +++++++++++++++++++ dev/MinGfx/docs/html/doxygen.svg | 26 + dev/MinGfx/docs/html/dynsections.js | 128 ++ dev/MinGfx/docs/html/files.html | 118 ++ dev/MinGfx/docs/html/folderclosed.png | Bin 0 -> 517 bytes dev/MinGfx/docs/html/folderopen.png | Bin 0 -> 525 bytes dev/MinGfx/docs/html/functions.html | 129 ++ dev/MinGfx/docs/html/functions_b.html | 99 ++ dev/MinGfx/docs/html/functions_c.html | 132 ++ dev/MinGfx/docs/html/functions_d.html | 163 ++ dev/MinGfx/docs/html/functions_e.html | 94 + dev/MinGfx/docs/html/functions_enum.html | 94 + dev/MinGfx/docs/html/functions_f.html | 126 ++ dev/MinGfx/docs/html/functions_func.html | 117 ++ dev/MinGfx/docs/html/functions_func_b.html | 99 ++ dev/MinGfx/docs/html/functions_func_c.html | 129 ++ dev/MinGfx/docs/html/functions_func_d.html | 157 ++ dev/MinGfx/docs/html/functions_func_e.html | 91 + dev/MinGfx/docs/html/functions_func_f.html | 123 ++ dev/MinGfx/docs/html/functions_func_g.html | 90 + dev/MinGfx/docs/html/functions_func_h.html | 90 + dev/MinGfx/docs/html/functions_func_i.html | 152 ++ dev/MinGfx/docs/html/functions_func_l.html | 123 ++ dev/MinGfx/docs/html/functions_func_m.html | 105 ++ dev/MinGfx/docs/html/functions_func_n.html | 107 ++ dev/MinGfx/docs/html/functions_func_o.html | 208 +++ dev/MinGfx/docs/html/functions_func_p.html | 102 ++ dev/MinGfx/docs/html/functions_func_q.html | 93 + dev/MinGfx/docs/html/functions_func_r.html | 129 ++ dev/MinGfx/docs/html/functions_func_s.html | 179 ++ dev/MinGfx/docs/html/functions_func_t.html | 126 ++ dev/MinGfx/docs/html/functions_func_u.html | 127 ++ dev/MinGfx/docs/html/functions_func_v.html | 109 ++ dev/MinGfx/docs/html/functions_func_w.html | 109 ++ dev/MinGfx/docs/html/functions_func_x.html | 94 + dev/MinGfx/docs/html/functions_func_y.html | 94 + dev/MinGfx/docs/html/functions_func_z.html | 98 ++ dev/MinGfx/docs/html/functions_func_~.html | 144 ++ dev/MinGfx/docs/html/functions_g.html | 90 + dev/MinGfx/docs/html/functions_h.html | 106 ++ dev/MinGfx/docs/html/functions_i.html | 158 ++ dev/MinGfx/docs/html/functions_l.html | 126 ++ dev/MinGfx/docs/html/functions_m.html | 108 ++ dev/MinGfx/docs/html/functions_n.html | 113 ++ dev/MinGfx/docs/html/functions_o.html | 211 +++ dev/MinGfx/docs/html/functions_p.html | 108 ++ dev/MinGfx/docs/html/functions_q.html | 93 + dev/MinGfx/docs/html/functions_r.html | 129 ++ dev/MinGfx/docs/html/functions_rela.html | 88 + dev/MinGfx/docs/html/functions_s.html | 194 +++ dev/MinGfx/docs/html/functions_t.html | 129 ++ dev/MinGfx/docs/html/functions_u.html | 127 ++ dev/MinGfx/docs/html/functions_v.html | 115 ++ dev/MinGfx/docs/html/functions_vars.html | 248 +++ dev/MinGfx/docs/html/functions_w.html | 114 ++ dev/MinGfx/docs/html/functions_x.html | 96 + dev/MinGfx/docs/html/functions_y.html | 96 + dev/MinGfx/docs/html/functions_z.html | 98 ++ dev/MinGfx/docs/html/functions_~.html | 144 ++ dev/MinGfx/docs/html/gfxmath_8h.html | 113 ++ dev/MinGfx/docs/html/gfxmath_8h_source.html | 172 ++ dev/MinGfx/docs/html/globals.html | 140 ++ dev/MinGfx/docs/html/globals_defs.html | 107 ++ dev/MinGfx/docs/html/globals_eval.html | 94 + dev/MinGfx/docs/html/globals_func.html | 97 ++ dev/MinGfx/docs/html/globals_type.html | 97 ++ dev/MinGfx/docs/html/graphics__app_8h.html | 113 ++ dev/MinGfx/docs/html/graphics__app_8h_source.html | 358 ++++ dev/MinGfx/docs/html/index.html | 120 ++ dev/MinGfx/docs/html/installation.html | 206 +++ dev/MinGfx/docs/html/installation_8md.html | 87 + dev/MinGfx/docs/html/jquery.js | 35 + dev/MinGfx/docs/html/mainpage_8md.html | 87 + dev/MinGfx/docs/html/matrix4_8h.html | 139 ++ dev/MinGfx/docs/html/matrix4_8h_source.html | 286 +++ dev/MinGfx/docs/html/menu.js | 51 + dev/MinGfx/docs/html/menudata.js | 110 ++ dev/MinGfx/docs/html/mesh_8h.html | 116 ++ dev/MinGfx/docs/html/mesh_8h_source.html | 293 ++++ dev/MinGfx/docs/html/mingfx_8h.html | 120 ++ dev/MinGfx/docs/html/mingfx_8h_source.html | 159 ++ dev/MinGfx/docs/html/mingfx__config_8h.html | 172 ++ dev/MinGfx/docs/html/mingfx__config_8h_source.html | 116 ++ dev/MinGfx/docs/html/namespacemembers.html | 105 ++ dev/MinGfx/docs/html/namespacemembers_func.html | 105 ++ dev/MinGfx/docs/html/namespacemingfx.html | 1710 ++++++++++++++++++ dev/MinGfx/docs/html/nav_f.png | Bin 0 -> 130 bytes dev/MinGfx/docs/html/nav_g.png | Bin 0 -> 95 bytes dev/MinGfx/docs/html/nav_h.png | Bin 0 -> 87 bytes dev/MinGfx/docs/html/open.png | Bin 0 -> 115 bytes dev/MinGfx/docs/html/opengl__headers_8h.html | 94 + .../docs/html/opengl__headers_8h_source.html | 139 ++ dev/MinGfx/docs/html/pages.html | 93 + dev/MinGfx/docs/html/platform_8h.html | 111 ++ dev/MinGfx/docs/html/platform_8h_source.html | 161 ++ dev/MinGfx/docs/html/point2_8h.html | 144 ++ dev/MinGfx/docs/html/point2_8h_source.html | 191 ++ dev/MinGfx/docs/html/point3_8h.html | 145 ++ dev/MinGfx/docs/html/point3_8h_source.html | 211 +++ dev/MinGfx/docs/html/quaternion_8h.html | 133 ++ dev/MinGfx/docs/html/quaternion_8h_source.html | 222 +++ dev/MinGfx/docs/html/quick__shapes_8h.html | 118 ++ dev/MinGfx/docs/html/quick__shapes_8h_source.html | 283 +++ dev/MinGfx/docs/html/ray_8h.html | 122 ++ dev/MinGfx/docs/html/ray_8h_source.html | 202 +++ dev/MinGfx/docs/html/search/all_0.html | 37 + dev/MinGfx/docs/html/search/all_0.js | 20 + dev/MinGfx/docs/html/search/all_1.html | 37 + dev/MinGfx/docs/html/search/all_1.js | 8 + dev/MinGfx/docs/html/search/all_10.html | 37 + dev/MinGfx/docs/html/search/all_10.js | 53 + dev/MinGfx/docs/html/search/all_11.html | 37 + dev/MinGfx/docs/html/search/all_11.js | 18 + dev/MinGfx/docs/html/search/all_12.html | 37 + dev/MinGfx/docs/html/search/all_12.js | 16 + dev/MinGfx/docs/html/search/all_13.html | 37 + dev/MinGfx/docs/html/search/all_13.js | 16 + dev/MinGfx/docs/html/search/all_14.html | 37 + dev/MinGfx/docs/html/search/all_14.js | 10 + dev/MinGfx/docs/html/search/all_15.html | 37 + dev/MinGfx/docs/html/search/all_15.js | 4 + dev/MinGfx/docs/html/search/all_16.html | 37 + dev/MinGfx/docs/html/search/all_16.js | 4 + dev/MinGfx/docs/html/search/all_17.html | 37 + dev/MinGfx/docs/html/search/all_17.js | 5 + dev/MinGfx/docs/html/search/all_18.html | 37 + dev/MinGfx/docs/html/search/all_18.js | 22 + dev/MinGfx/docs/html/search/all_2.html | 37 + dev/MinGfx/docs/html/search/all_2.js | 21 + dev/MinGfx/docs/html/search/all_3.html | 37 + dev/MinGfx/docs/html/search/all_3.js | 28 + dev/MinGfx/docs/html/search/all_4.html | 37 + dev/MinGfx/docs/html/search/all_4.js | 5 + dev/MinGfx/docs/html/search/all_5.html | 37 + dev/MinGfx/docs/html/search/all_5.js | 16 + dev/MinGfx/docs/html/search/all_6.html | 37 + dev/MinGfx/docs/html/search/all_6.js | 7 + dev/MinGfx/docs/html/search/all_7.html | 37 + dev/MinGfx/docs/html/search/all_7.js | 12 + dev/MinGfx/docs/html/search/all_8.html | 37 + dev/MinGfx/docs/html/search/all_8.js | 28 + dev/MinGfx/docs/html/search/all_9.html | 37 + dev/MinGfx/docs/html/search/all_9.js | 16 + dev/MinGfx/docs/html/search/all_a.html | 37 + dev/MinGfx/docs/html/search/all_a.js | 22 + dev/MinGfx/docs/html/search/all_b.html | 37 + dev/MinGfx/docs/html/search/all_b.js | 11 + dev/MinGfx/docs/html/search/all_c.html | 37 + dev/MinGfx/docs/html/search/all_c.js | 40 + dev/MinGfx/docs/html/search/all_d.html | 37 + dev/MinGfx/docs/html/search/all_d.js | 14 + dev/MinGfx/docs/html/search/all_e.html | 37 + dev/MinGfx/docs/html/search/all_e.js | 7 + dev/MinGfx/docs/html/search/all_f.html | 37 + dev/MinGfx/docs/html/search/all_f.js | 18 + dev/MinGfx/docs/html/search/classes_0.html | 37 + dev/MinGfx/docs/html/search/classes_0.js | 4 + dev/MinGfx/docs/html/search/classes_1.html | 37 + dev/MinGfx/docs/html/search/classes_1.js | 4 + dev/MinGfx/docs/html/search/classes_2.html | 37 + dev/MinGfx/docs/html/search/classes_2.js | 5 + dev/MinGfx/docs/html/search/classes_3.html | 37 + dev/MinGfx/docs/html/search/classes_3.js | 4 + dev/MinGfx/docs/html/search/classes_4.html | 37 + dev/MinGfx/docs/html/search/classes_4.js | 5 + dev/MinGfx/docs/html/search/classes_5.html | 37 + dev/MinGfx/docs/html/search/classes_5.js | 4 + dev/MinGfx/docs/html/search/classes_6.html | 37 + dev/MinGfx/docs/html/search/classes_6.js | 6 + dev/MinGfx/docs/html/search/classes_7.html | 37 + dev/MinGfx/docs/html/search/classes_7.js | 6 + dev/MinGfx/docs/html/search/classes_8.html | 37 + dev/MinGfx/docs/html/search/classes_8.js | 5 + dev/MinGfx/docs/html/search/classes_9.html | 37 + dev/MinGfx/docs/html/search/classes_9.js | 4 + dev/MinGfx/docs/html/search/classes_a.html | 37 + dev/MinGfx/docs/html/search/classes_a.js | 7 + dev/MinGfx/docs/html/search/classes_b.html | 37 + dev/MinGfx/docs/html/search/classes_b.js | 6 + dev/MinGfx/docs/html/search/classes_c.html | 37 + dev/MinGfx/docs/html/search/classes_c.js | 4 + dev/MinGfx/docs/html/search/classes_d.html | 37 + dev/MinGfx/docs/html/search/classes_d.js | 5 + dev/MinGfx/docs/html/search/close.svg | 31 + dev/MinGfx/docs/html/search/defines_0.html | 37 + dev/MinGfx/docs/html/search/defines_0.js | 8 + dev/MinGfx/docs/html/search/defines_1.html | 37 + dev/MinGfx/docs/html/search/defines_1.js | 5 + dev/MinGfx/docs/html/search/enums_0.html | 37 + dev/MinGfx/docs/html/search/enums_0.js | 4 + dev/MinGfx/docs/html/search/enums_1.html | 37 + dev/MinGfx/docs/html/search/enums_1.js | 4 + dev/MinGfx/docs/html/search/enums_2.html | 37 + dev/MinGfx/docs/html/search/enums_2.js | 4 + dev/MinGfx/docs/html/search/enumvalues_0.html | 37 + dev/MinGfx/docs/html/search/enumvalues_0.js | 6 + dev/MinGfx/docs/html/search/enumvalues_1.html | 37 + dev/MinGfx/docs/html/search/enumvalues_1.js | 6 + dev/MinGfx/docs/html/search/enumvalues_2.html | 37 + dev/MinGfx/docs/html/search/enumvalues_2.js | 6 + dev/MinGfx/docs/html/search/enumvalues_3.html | 37 + dev/MinGfx/docs/html/search/enumvalues_3.js | 7 + dev/MinGfx/docs/html/search/files_0.html | 37 + dev/MinGfx/docs/html/search/files_0.js | 5 + dev/MinGfx/docs/html/search/files_1.html | 37 + dev/MinGfx/docs/html/search/files_1.js | 4 + dev/MinGfx/docs/html/search/files_2.html | 37 + dev/MinGfx/docs/html/search/files_2.js | 5 + dev/MinGfx/docs/html/search/files_3.html | 37 + dev/MinGfx/docs/html/search/files_3.js | 4 + dev/MinGfx/docs/html/search/files_4.html | 37 + dev/MinGfx/docs/html/search/files_4.js | 5 + dev/MinGfx/docs/html/search/files_5.html | 37 + dev/MinGfx/docs/html/search/files_5.js | 4 + dev/MinGfx/docs/html/search/files_6.html | 37 + dev/MinGfx/docs/html/search/files_6.js | 8 + dev/MinGfx/docs/html/search/files_7.html | 37 + dev/MinGfx/docs/html/search/files_7.js | 4 + dev/MinGfx/docs/html/search/files_8.html | 37 + dev/MinGfx/docs/html/search/files_8.js | 6 + dev/MinGfx/docs/html/search/files_9.html | 37 + dev/MinGfx/docs/html/search/files_9.js | 5 + dev/MinGfx/docs/html/search/files_a.html | 37 + dev/MinGfx/docs/html/search/files_a.js | 4 + dev/MinGfx/docs/html/search/files_b.html | 37 + dev/MinGfx/docs/html/search/files_b.js | 5 + dev/MinGfx/docs/html/search/files_c.html | 37 + dev/MinGfx/docs/html/search/files_c.js | 5 + dev/MinGfx/docs/html/search/files_d.html | 37 + dev/MinGfx/docs/html/search/files_d.js | 4 + dev/MinGfx/docs/html/search/files_e.html | 37 + dev/MinGfx/docs/html/search/files_e.js | 5 + dev/MinGfx/docs/html/search/functions_0.html | 37 + dev/MinGfx/docs/html/search/functions_0.js | 13 + dev/MinGfx/docs/html/search/functions_1.html | 37 + dev/MinGfx/docs/html/search/functions_1.js | 7 + dev/MinGfx/docs/html/search/functions_10.html | 37 + dev/MinGfx/docs/html/search/functions_10.js | 37 + dev/MinGfx/docs/html/search/functions_11.html | 37 + dev/MinGfx/docs/html/search/functions_11.js | 15 + dev/MinGfx/docs/html/search/functions_12.html | 37 + dev/MinGfx/docs/html/search/functions_12.js | 15 + dev/MinGfx/docs/html/search/functions_13.html | 37 + dev/MinGfx/docs/html/search/functions_13.js | 8 + dev/MinGfx/docs/html/search/functions_14.html | 37 + dev/MinGfx/docs/html/search/functions_14.js | 9 + dev/MinGfx/docs/html/search/functions_15.html | 37 + dev/MinGfx/docs/html/search/functions_15.js | 4 + dev/MinGfx/docs/html/search/functions_16.html | 37 + dev/MinGfx/docs/html/search/functions_16.js | 4 + dev/MinGfx/docs/html/search/functions_17.html | 37 + dev/MinGfx/docs/html/search/functions_17.js | 5 + dev/MinGfx/docs/html/search/functions_18.html | 37 + dev/MinGfx/docs/html/search/functions_18.js | 22 + dev/MinGfx/docs/html/search/functions_2.html | 37 + dev/MinGfx/docs/html/search/functions_2.js | 17 + dev/MinGfx/docs/html/search/functions_3.html | 37 + dev/MinGfx/docs/html/search/functions_3.js | 25 + dev/MinGfx/docs/html/search/functions_4.html | 37 + dev/MinGfx/docs/html/search/functions_4.js | 4 + dev/MinGfx/docs/html/search/functions_5.html | 37 + dev/MinGfx/docs/html/search/functions_5.js | 15 + dev/MinGfx/docs/html/search/functions_6.html | 37 + dev/MinGfx/docs/html/search/functions_6.js | 4 + dev/MinGfx/docs/html/search/functions_7.html | 37 + dev/MinGfx/docs/html/search/functions_7.js | 4 + dev/MinGfx/docs/html/search/functions_8.html | 37 + dev/MinGfx/docs/html/search/functions_8.js | 24 + dev/MinGfx/docs/html/search/functions_9.html | 37 + dev/MinGfx/docs/html/search/functions_9.js | 12 + dev/MinGfx/docs/html/search/functions_a.html | 37 + dev/MinGfx/docs/html/search/functions_a.js | 9 + dev/MinGfx/docs/html/search/functions_b.html | 37 + dev/MinGfx/docs/html/search/functions_b.js | 9 + dev/MinGfx/docs/html/search/functions_c.html | 37 + dev/MinGfx/docs/html/search/functions_c.js | 39 + dev/MinGfx/docs/html/search/functions_d.html | 37 + dev/MinGfx/docs/html/search/functions_d.js | 8 + dev/MinGfx/docs/html/search/functions_e.html | 37 + dev/MinGfx/docs/html/search/functions_e.js | 5 + dev/MinGfx/docs/html/search/functions_f.html | 37 + dev/MinGfx/docs/html/search/functions_f.js | 17 + dev/MinGfx/docs/html/search/mag_sel.svg | 74 + dev/MinGfx/docs/html/search/namespaces_0.html | 37 + dev/MinGfx/docs/html/search/namespaces_0.js | 4 + dev/MinGfx/docs/html/search/nomatches.html | 13 + dev/MinGfx/docs/html/search/pages_0.html | 37 + dev/MinGfx/docs/html/search/pages_0.js | 4 + dev/MinGfx/docs/html/search/pages_1.html | 37 + dev/MinGfx/docs/html/search/pages_1.js | 4 + dev/MinGfx/docs/html/search/pages_2.html | 37 + dev/MinGfx/docs/html/search/pages_2.js | 4 + dev/MinGfx/docs/html/search/related_0.html | 37 + dev/MinGfx/docs/html/search/related_0.js | 4 + dev/MinGfx/docs/html/search/search.css | 257 +++ dev/MinGfx/docs/html/search/search.js | 816 +++++++++ dev/MinGfx/docs/html/search/search_l.png | Bin 0 -> 567 bytes dev/MinGfx/docs/html/search/search_m.png | Bin 0 -> 158 bytes dev/MinGfx/docs/html/search/search_r.png | Bin 0 -> 553 bytes dev/MinGfx/docs/html/search/searchdata.js | 48 + dev/MinGfx/docs/html/search/typedefs_0.html | 37 + dev/MinGfx/docs/html/search/typedefs_0.js | 7 + dev/MinGfx/docs/html/search/variables_0.html | 37 + dev/MinGfx/docs/html/search/variables_0.js | 7 + dev/MinGfx/docs/html/search/variables_1.html | 37 + dev/MinGfx/docs/html/search/variables_1.js | 4 + dev/MinGfx/docs/html/search/variables_2.html | 37 + dev/MinGfx/docs/html/search/variables_2.js | 5 + dev/MinGfx/docs/html/search/variables_3.html | 37 + dev/MinGfx/docs/html/search/variables_3.js | 4 + dev/MinGfx/docs/html/search/variables_4.html | 37 + dev/MinGfx/docs/html/search/variables_4.js | 4 + dev/MinGfx/docs/html/search/variables_5.html | 37 + dev/MinGfx/docs/html/search/variables_5.js | 8 + dev/MinGfx/docs/html/search/variables_6.html | 37 + dev/MinGfx/docs/html/search/variables_6.js | 5 + dev/MinGfx/docs/html/search/variables_7.html | 37 + dev/MinGfx/docs/html/search/variables_7.js | 4 + dev/MinGfx/docs/html/search/variables_8.html | 37 + dev/MinGfx/docs/html/search/variables_8.js | 5 + dev/MinGfx/docs/html/search/variables_9.html | 37 + dev/MinGfx/docs/html/search/variables_9.js | 5 + dev/MinGfx/docs/html/search/variables_a.html | 37 + dev/MinGfx/docs/html/search/variables_a.js | 8 + dev/MinGfx/docs/html/search/variables_b.html | 37 + dev/MinGfx/docs/html/search/variables_b.js | 4 + dev/MinGfx/docs/html/search/variables_c.html | 37 + dev/MinGfx/docs/html/search/variables_c.js | 4 + dev/MinGfx/docs/html/search/variables_d.html | 37 + dev/MinGfx/docs/html/search/variables_d.js | 6 + dev/MinGfx/docs/html/search/variables_e.html | 37 + dev/MinGfx/docs/html/search/variables_e.js | 4 + dev/MinGfx/docs/html/search/variables_f.html | 37 + dev/MinGfx/docs/html/search/variables_f.js | 4 + dev/MinGfx/docs/html/shader__program_8h.html | 119 ++ .../docs/html/shader__program_8h_source.html | 274 +++ dev/MinGfx/docs/html/splitbar.png | Bin 0 -> 283 bytes dev/MinGfx/docs/html/stb__rect__pack_8h.html | 403 +++++ .../docs/html/stb__rect__pack_8h_source.html | 742 ++++++++ .../docs/html/structstbrp__context-members.html | 99 ++ dev/MinGfx/docs/html/structstbrp__context.html | 265 +++ .../docs/html/structstbrp__node-members.html | 93 + dev/MinGfx/docs/html/structstbrp__node.html | 157 ++ .../docs/html/structstbrp__rect-members.html | 96 + dev/MinGfx/docs/html/structstbrp__rect.html | 211 +++ dev/MinGfx/docs/html/sync_off.png | Bin 0 -> 814 bytes dev/MinGfx/docs/html/sync_on.png | Bin 0 -> 810 bytes dev/MinGfx/docs/html/tab_a.png | Bin 0 -> 124 bytes dev/MinGfx/docs/html/tab_b.png | Bin 0 -> 142 bytes dev/MinGfx/docs/html/tab_h.png | Bin 0 -> 147 bytes dev/MinGfx/docs/html/tab_s.png | Bin 0 -> 161 bytes dev/MinGfx/docs/html/tabs.css | 1 + dev/MinGfx/docs/html/text__shader_8h.html | 117 ++ dev/MinGfx/docs/html/text__shader_8h_source.html | 229 +++ dev/MinGfx/docs/html/texture2d_8h.html | 112 ++ dev/MinGfx/docs/html/texture2d_8h_source.html | 195 +++ dev/MinGfx/docs/html/unicam_8h.html | 114 ++ dev/MinGfx/docs/html/unicam_8h_source.html | 234 +++ dev/MinGfx/docs/html/vector2_8h.html | 149 ++ dev/MinGfx/docs/html/vector2_8h_source.html | 261 +++ dev/MinGfx/docs/html/vector3_8h.html | 149 ++ dev/MinGfx/docs/html/vector3_8h_source.html | 275 +++ 431 files changed, 48725 insertions(+) create mode 100644 dev/MinGfx/docs/html/aabb_8h.html create mode 100644 dev/MinGfx/docs/html/aabb_8h_source.html create mode 100644 dev/MinGfx/docs/html/annotated.html create mode 100644 dev/MinGfx/docs/html/api.html create mode 100644 dev/MinGfx/docs/html/api_8md.html create mode 100644 dev/MinGfx/docs/html/bc_s.png create mode 100644 dev/MinGfx/docs/html/bdwn.png create mode 100644 dev/MinGfx/docs/html/bvh_8h.html create mode 100644 dev/MinGfx/docs/html/bvh_8h_source.html create mode 100644 dev/MinGfx/docs/html/classes.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_b_v_h-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_b_v_h.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_color-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_color.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_craft_cam-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_craft_cam.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_default_shader-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_default_shader.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_gfx_math-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_gfx_math.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_graphics_app-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_graphics_app.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_matrix4-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_matrix4.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_mesh-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_mesh.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_platform-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_platform.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_point2-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_point2.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_point3-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_point3.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_quaternion-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_quaternion.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_ray-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_ray.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_shader_program-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_text_shader-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_text_shader.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_texture2_d-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_texture2_d.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_uni_cam-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_uni_cam.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_vector2-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_vector2.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_vector3-members.html create mode 100644 dev/MinGfx/docs/html/classmingfx_1_1_vector3.html create mode 100644 dev/MinGfx/docs/html/closed.png create mode 100644 dev/MinGfx/docs/html/color_8h.html create mode 100644 dev/MinGfx/docs/html/color_8h_source.html create mode 100644 dev/MinGfx/docs/html/craft__cam_8h.html create mode 100644 dev/MinGfx/docs/html/craft__cam_8h_source.html create mode 100644 dev/MinGfx/docs/html/customdoxygen.css create mode 100644 dev/MinGfx/docs/html/default__shader_8h.html create mode 100644 dev/MinGfx/docs/html/default__shader_8h_source.html create mode 100644 dev/MinGfx/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 dev/MinGfx/docs/html/dir_e68e8157741866f444e17edd764ebbae.html create mode 100644 dev/MinGfx/docs/html/doc.png create mode 100644 dev/MinGfx/docs/html/doxygen.css create mode 100644 dev/MinGfx/docs/html/doxygen.svg create mode 100644 dev/MinGfx/docs/html/dynsections.js create mode 100644 dev/MinGfx/docs/html/files.html create mode 100644 dev/MinGfx/docs/html/folderclosed.png create mode 100644 dev/MinGfx/docs/html/folderopen.png create mode 100644 dev/MinGfx/docs/html/functions.html create mode 100644 dev/MinGfx/docs/html/functions_b.html create mode 100644 dev/MinGfx/docs/html/functions_c.html create mode 100644 dev/MinGfx/docs/html/functions_d.html create mode 100644 dev/MinGfx/docs/html/functions_e.html create mode 100644 dev/MinGfx/docs/html/functions_enum.html create mode 100644 dev/MinGfx/docs/html/functions_f.html create mode 100644 dev/MinGfx/docs/html/functions_func.html create mode 100644 dev/MinGfx/docs/html/functions_func_b.html create mode 100644 dev/MinGfx/docs/html/functions_func_c.html create mode 100644 dev/MinGfx/docs/html/functions_func_d.html create mode 100644 dev/MinGfx/docs/html/functions_func_e.html create mode 100644 dev/MinGfx/docs/html/functions_func_f.html create mode 100644 dev/MinGfx/docs/html/functions_func_g.html create mode 100644 dev/MinGfx/docs/html/functions_func_h.html create mode 100644 dev/MinGfx/docs/html/functions_func_i.html create mode 100644 dev/MinGfx/docs/html/functions_func_l.html create mode 100644 dev/MinGfx/docs/html/functions_func_m.html create mode 100644 dev/MinGfx/docs/html/functions_func_n.html create mode 100644 dev/MinGfx/docs/html/functions_func_o.html create mode 100644 dev/MinGfx/docs/html/functions_func_p.html create mode 100644 dev/MinGfx/docs/html/functions_func_q.html create mode 100644 dev/MinGfx/docs/html/functions_func_r.html create mode 100644 dev/MinGfx/docs/html/functions_func_s.html create mode 100644 dev/MinGfx/docs/html/functions_func_t.html create mode 100644 dev/MinGfx/docs/html/functions_func_u.html create mode 100644 dev/MinGfx/docs/html/functions_func_v.html create mode 100644 dev/MinGfx/docs/html/functions_func_w.html create mode 100644 dev/MinGfx/docs/html/functions_func_x.html create mode 100644 dev/MinGfx/docs/html/functions_func_y.html create mode 100644 dev/MinGfx/docs/html/functions_func_z.html create mode 100644 dev/MinGfx/docs/html/functions_func_~.html create mode 100644 dev/MinGfx/docs/html/functions_g.html create mode 100644 dev/MinGfx/docs/html/functions_h.html create mode 100644 dev/MinGfx/docs/html/functions_i.html create mode 100644 dev/MinGfx/docs/html/functions_l.html create mode 100644 dev/MinGfx/docs/html/functions_m.html create mode 100644 dev/MinGfx/docs/html/functions_n.html create mode 100644 dev/MinGfx/docs/html/functions_o.html create mode 100644 dev/MinGfx/docs/html/functions_p.html create mode 100644 dev/MinGfx/docs/html/functions_q.html create mode 100644 dev/MinGfx/docs/html/functions_r.html create mode 100644 dev/MinGfx/docs/html/functions_rela.html create mode 100644 dev/MinGfx/docs/html/functions_s.html create mode 100644 dev/MinGfx/docs/html/functions_t.html create mode 100644 dev/MinGfx/docs/html/functions_u.html create mode 100644 dev/MinGfx/docs/html/functions_v.html create mode 100644 dev/MinGfx/docs/html/functions_vars.html create mode 100644 dev/MinGfx/docs/html/functions_w.html create mode 100644 dev/MinGfx/docs/html/functions_x.html create mode 100644 dev/MinGfx/docs/html/functions_y.html create mode 100644 dev/MinGfx/docs/html/functions_z.html create mode 100644 dev/MinGfx/docs/html/functions_~.html create mode 100644 dev/MinGfx/docs/html/gfxmath_8h.html create mode 100644 dev/MinGfx/docs/html/gfxmath_8h_source.html create mode 100644 dev/MinGfx/docs/html/globals.html create mode 100644 dev/MinGfx/docs/html/globals_defs.html create mode 100644 dev/MinGfx/docs/html/globals_eval.html create mode 100644 dev/MinGfx/docs/html/globals_func.html create mode 100644 dev/MinGfx/docs/html/globals_type.html create mode 100644 dev/MinGfx/docs/html/graphics__app_8h.html create mode 100644 dev/MinGfx/docs/html/graphics__app_8h_source.html create mode 100644 dev/MinGfx/docs/html/index.html create mode 100644 dev/MinGfx/docs/html/installation.html create mode 100644 dev/MinGfx/docs/html/installation_8md.html create mode 100644 dev/MinGfx/docs/html/jquery.js create mode 100644 dev/MinGfx/docs/html/mainpage_8md.html create mode 100644 dev/MinGfx/docs/html/matrix4_8h.html create mode 100644 dev/MinGfx/docs/html/matrix4_8h_source.html create mode 100644 dev/MinGfx/docs/html/menu.js create mode 100644 dev/MinGfx/docs/html/menudata.js create mode 100644 dev/MinGfx/docs/html/mesh_8h.html create mode 100644 dev/MinGfx/docs/html/mesh_8h_source.html create mode 100644 dev/MinGfx/docs/html/mingfx_8h.html create mode 100644 dev/MinGfx/docs/html/mingfx_8h_source.html create mode 100644 dev/MinGfx/docs/html/mingfx__config_8h.html create mode 100644 dev/MinGfx/docs/html/mingfx__config_8h_source.html create mode 100644 dev/MinGfx/docs/html/namespacemembers.html create mode 100644 dev/MinGfx/docs/html/namespacemembers_func.html create mode 100644 dev/MinGfx/docs/html/namespacemingfx.html create mode 100644 dev/MinGfx/docs/html/nav_f.png create mode 100644 dev/MinGfx/docs/html/nav_g.png create mode 100644 dev/MinGfx/docs/html/nav_h.png create mode 100644 dev/MinGfx/docs/html/open.png create mode 100644 dev/MinGfx/docs/html/opengl__headers_8h.html create mode 100644 dev/MinGfx/docs/html/opengl__headers_8h_source.html create mode 100644 dev/MinGfx/docs/html/pages.html create mode 100644 dev/MinGfx/docs/html/platform_8h.html create mode 100644 dev/MinGfx/docs/html/platform_8h_source.html create mode 100644 dev/MinGfx/docs/html/point2_8h.html create mode 100644 dev/MinGfx/docs/html/point2_8h_source.html create mode 100644 dev/MinGfx/docs/html/point3_8h.html create mode 100644 dev/MinGfx/docs/html/point3_8h_source.html create mode 100644 dev/MinGfx/docs/html/quaternion_8h.html create mode 100644 dev/MinGfx/docs/html/quaternion_8h_source.html create mode 100644 dev/MinGfx/docs/html/quick__shapes_8h.html create mode 100644 dev/MinGfx/docs/html/quick__shapes_8h_source.html create mode 100644 dev/MinGfx/docs/html/ray_8h.html create mode 100644 dev/MinGfx/docs/html/ray_8h_source.html create mode 100644 dev/MinGfx/docs/html/search/all_0.html create mode 100644 dev/MinGfx/docs/html/search/all_0.js create mode 100644 dev/MinGfx/docs/html/search/all_1.html create mode 100644 dev/MinGfx/docs/html/search/all_1.js create mode 100644 dev/MinGfx/docs/html/search/all_10.html create mode 100644 dev/MinGfx/docs/html/search/all_10.js create mode 100644 dev/MinGfx/docs/html/search/all_11.html create mode 100644 dev/MinGfx/docs/html/search/all_11.js create mode 100644 dev/MinGfx/docs/html/search/all_12.html create mode 100644 dev/MinGfx/docs/html/search/all_12.js create mode 100644 dev/MinGfx/docs/html/search/all_13.html create mode 100644 dev/MinGfx/docs/html/search/all_13.js create mode 100644 dev/MinGfx/docs/html/search/all_14.html create mode 100644 dev/MinGfx/docs/html/search/all_14.js create mode 100644 dev/MinGfx/docs/html/search/all_15.html create mode 100644 dev/MinGfx/docs/html/search/all_15.js create mode 100644 dev/MinGfx/docs/html/search/all_16.html create mode 100644 dev/MinGfx/docs/html/search/all_16.js create mode 100644 dev/MinGfx/docs/html/search/all_17.html create mode 100644 dev/MinGfx/docs/html/search/all_17.js create mode 100644 dev/MinGfx/docs/html/search/all_18.html create mode 100644 dev/MinGfx/docs/html/search/all_18.js create mode 100644 dev/MinGfx/docs/html/search/all_2.html create mode 100644 dev/MinGfx/docs/html/search/all_2.js create mode 100644 dev/MinGfx/docs/html/search/all_3.html create mode 100644 dev/MinGfx/docs/html/search/all_3.js create mode 100644 dev/MinGfx/docs/html/search/all_4.html create mode 100644 dev/MinGfx/docs/html/search/all_4.js create mode 100644 dev/MinGfx/docs/html/search/all_5.html create mode 100644 dev/MinGfx/docs/html/search/all_5.js create mode 100644 dev/MinGfx/docs/html/search/all_6.html create mode 100644 dev/MinGfx/docs/html/search/all_6.js create mode 100644 dev/MinGfx/docs/html/search/all_7.html create mode 100644 dev/MinGfx/docs/html/search/all_7.js create mode 100644 dev/MinGfx/docs/html/search/all_8.html create mode 100644 dev/MinGfx/docs/html/search/all_8.js create mode 100644 dev/MinGfx/docs/html/search/all_9.html create mode 100644 dev/MinGfx/docs/html/search/all_9.js create mode 100644 dev/MinGfx/docs/html/search/all_a.html create mode 100644 dev/MinGfx/docs/html/search/all_a.js create mode 100644 dev/MinGfx/docs/html/search/all_b.html create mode 100644 dev/MinGfx/docs/html/search/all_b.js create mode 100644 dev/MinGfx/docs/html/search/all_c.html create mode 100644 dev/MinGfx/docs/html/search/all_c.js create mode 100644 dev/MinGfx/docs/html/search/all_d.html create mode 100644 dev/MinGfx/docs/html/search/all_d.js create mode 100644 dev/MinGfx/docs/html/search/all_e.html create mode 100644 dev/MinGfx/docs/html/search/all_e.js create mode 100644 dev/MinGfx/docs/html/search/all_f.html create mode 100644 dev/MinGfx/docs/html/search/all_f.js create mode 100644 dev/MinGfx/docs/html/search/classes_0.html create mode 100644 dev/MinGfx/docs/html/search/classes_0.js create mode 100644 dev/MinGfx/docs/html/search/classes_1.html create mode 100644 dev/MinGfx/docs/html/search/classes_1.js create mode 100644 dev/MinGfx/docs/html/search/classes_2.html create mode 100644 dev/MinGfx/docs/html/search/classes_2.js create mode 100644 dev/MinGfx/docs/html/search/classes_3.html create mode 100644 dev/MinGfx/docs/html/search/classes_3.js create mode 100644 dev/MinGfx/docs/html/search/classes_4.html create mode 100644 dev/MinGfx/docs/html/search/classes_4.js create mode 100644 dev/MinGfx/docs/html/search/classes_5.html create mode 100644 dev/MinGfx/docs/html/search/classes_5.js create mode 100644 dev/MinGfx/docs/html/search/classes_6.html create mode 100644 dev/MinGfx/docs/html/search/classes_6.js create mode 100644 dev/MinGfx/docs/html/search/classes_7.html create mode 100644 dev/MinGfx/docs/html/search/classes_7.js create mode 100644 dev/MinGfx/docs/html/search/classes_8.html create mode 100644 dev/MinGfx/docs/html/search/classes_8.js create mode 100644 dev/MinGfx/docs/html/search/classes_9.html create mode 100644 dev/MinGfx/docs/html/search/classes_9.js create mode 100644 dev/MinGfx/docs/html/search/classes_a.html create mode 100644 dev/MinGfx/docs/html/search/classes_a.js create mode 100644 dev/MinGfx/docs/html/search/classes_b.html create mode 100644 dev/MinGfx/docs/html/search/classes_b.js create mode 100644 dev/MinGfx/docs/html/search/classes_c.html create mode 100644 dev/MinGfx/docs/html/search/classes_c.js create mode 100644 dev/MinGfx/docs/html/search/classes_d.html create mode 100644 dev/MinGfx/docs/html/search/classes_d.js create mode 100644 dev/MinGfx/docs/html/search/close.svg create mode 100644 dev/MinGfx/docs/html/search/defines_0.html create mode 100644 dev/MinGfx/docs/html/search/defines_0.js create mode 100644 dev/MinGfx/docs/html/search/defines_1.html create mode 100644 dev/MinGfx/docs/html/search/defines_1.js create mode 100644 dev/MinGfx/docs/html/search/enums_0.html create mode 100644 dev/MinGfx/docs/html/search/enums_0.js create mode 100644 dev/MinGfx/docs/html/search/enums_1.html create mode 100644 dev/MinGfx/docs/html/search/enums_1.js create mode 100644 dev/MinGfx/docs/html/search/enums_2.html create mode 100644 dev/MinGfx/docs/html/search/enums_2.js create mode 100644 dev/MinGfx/docs/html/search/enumvalues_0.html create mode 100644 dev/MinGfx/docs/html/search/enumvalues_0.js create mode 100644 dev/MinGfx/docs/html/search/enumvalues_1.html create mode 100644 dev/MinGfx/docs/html/search/enumvalues_1.js create mode 100644 dev/MinGfx/docs/html/search/enumvalues_2.html create mode 100644 dev/MinGfx/docs/html/search/enumvalues_2.js create mode 100644 dev/MinGfx/docs/html/search/enumvalues_3.html create mode 100644 dev/MinGfx/docs/html/search/enumvalues_3.js create mode 100644 dev/MinGfx/docs/html/search/files_0.html create mode 100644 dev/MinGfx/docs/html/search/files_0.js create mode 100644 dev/MinGfx/docs/html/search/files_1.html create mode 100644 dev/MinGfx/docs/html/search/files_1.js create mode 100644 dev/MinGfx/docs/html/search/files_2.html create mode 100644 dev/MinGfx/docs/html/search/files_2.js create mode 100644 dev/MinGfx/docs/html/search/files_3.html create mode 100644 dev/MinGfx/docs/html/search/files_3.js create mode 100644 dev/MinGfx/docs/html/search/files_4.html create mode 100644 dev/MinGfx/docs/html/search/files_4.js create mode 100644 dev/MinGfx/docs/html/search/files_5.html create mode 100644 dev/MinGfx/docs/html/search/files_5.js create mode 100644 dev/MinGfx/docs/html/search/files_6.html create mode 100644 dev/MinGfx/docs/html/search/files_6.js create mode 100644 dev/MinGfx/docs/html/search/files_7.html create mode 100644 dev/MinGfx/docs/html/search/files_7.js create mode 100644 dev/MinGfx/docs/html/search/files_8.html create mode 100644 dev/MinGfx/docs/html/search/files_8.js create mode 100644 dev/MinGfx/docs/html/search/files_9.html create mode 100644 dev/MinGfx/docs/html/search/files_9.js create mode 100644 dev/MinGfx/docs/html/search/files_a.html create mode 100644 dev/MinGfx/docs/html/search/files_a.js create mode 100644 dev/MinGfx/docs/html/search/files_b.html create mode 100644 dev/MinGfx/docs/html/search/files_b.js create mode 100644 dev/MinGfx/docs/html/search/files_c.html create mode 100644 dev/MinGfx/docs/html/search/files_c.js create mode 100644 dev/MinGfx/docs/html/search/files_d.html create mode 100644 dev/MinGfx/docs/html/search/files_d.js create mode 100644 dev/MinGfx/docs/html/search/files_e.html create mode 100644 dev/MinGfx/docs/html/search/files_e.js create mode 100644 dev/MinGfx/docs/html/search/functions_0.html create mode 100644 dev/MinGfx/docs/html/search/functions_0.js create mode 100644 dev/MinGfx/docs/html/search/functions_1.html create mode 100644 dev/MinGfx/docs/html/search/functions_1.js create mode 100644 dev/MinGfx/docs/html/search/functions_10.html create mode 100644 dev/MinGfx/docs/html/search/functions_10.js create mode 100644 dev/MinGfx/docs/html/search/functions_11.html create mode 100644 dev/MinGfx/docs/html/search/functions_11.js create mode 100644 dev/MinGfx/docs/html/search/functions_12.html create mode 100644 dev/MinGfx/docs/html/search/functions_12.js create mode 100644 dev/MinGfx/docs/html/search/functions_13.html create mode 100644 dev/MinGfx/docs/html/search/functions_13.js create mode 100644 dev/MinGfx/docs/html/search/functions_14.html create mode 100644 dev/MinGfx/docs/html/search/functions_14.js create mode 100644 dev/MinGfx/docs/html/search/functions_15.html create mode 100644 dev/MinGfx/docs/html/search/functions_15.js create mode 100644 dev/MinGfx/docs/html/search/functions_16.html create mode 100644 dev/MinGfx/docs/html/search/functions_16.js create mode 100644 dev/MinGfx/docs/html/search/functions_17.html create mode 100644 dev/MinGfx/docs/html/search/functions_17.js create mode 100644 dev/MinGfx/docs/html/search/functions_18.html create mode 100644 dev/MinGfx/docs/html/search/functions_18.js create mode 100644 dev/MinGfx/docs/html/search/functions_2.html create mode 100644 dev/MinGfx/docs/html/search/functions_2.js create mode 100644 dev/MinGfx/docs/html/search/functions_3.html create mode 100644 dev/MinGfx/docs/html/search/functions_3.js create mode 100644 dev/MinGfx/docs/html/search/functions_4.html create mode 100644 dev/MinGfx/docs/html/search/functions_4.js create mode 100644 dev/MinGfx/docs/html/search/functions_5.html create mode 100644 dev/MinGfx/docs/html/search/functions_5.js create mode 100644 dev/MinGfx/docs/html/search/functions_6.html create mode 100644 dev/MinGfx/docs/html/search/functions_6.js create mode 100644 dev/MinGfx/docs/html/search/functions_7.html create mode 100644 dev/MinGfx/docs/html/search/functions_7.js create mode 100644 dev/MinGfx/docs/html/search/functions_8.html create mode 100644 dev/MinGfx/docs/html/search/functions_8.js create mode 100644 dev/MinGfx/docs/html/search/functions_9.html create mode 100644 dev/MinGfx/docs/html/search/functions_9.js create mode 100644 dev/MinGfx/docs/html/search/functions_a.html create mode 100644 dev/MinGfx/docs/html/search/functions_a.js create mode 100644 dev/MinGfx/docs/html/search/functions_b.html create mode 100644 dev/MinGfx/docs/html/search/functions_b.js create mode 100644 dev/MinGfx/docs/html/search/functions_c.html create mode 100644 dev/MinGfx/docs/html/search/functions_c.js create mode 100644 dev/MinGfx/docs/html/search/functions_d.html create mode 100644 dev/MinGfx/docs/html/search/functions_d.js create mode 100644 dev/MinGfx/docs/html/search/functions_e.html create mode 100644 dev/MinGfx/docs/html/search/functions_e.js create mode 100644 dev/MinGfx/docs/html/search/functions_f.html create mode 100644 dev/MinGfx/docs/html/search/functions_f.js create mode 100644 dev/MinGfx/docs/html/search/mag_sel.svg create mode 100644 dev/MinGfx/docs/html/search/namespaces_0.html create mode 100644 dev/MinGfx/docs/html/search/namespaces_0.js create mode 100644 dev/MinGfx/docs/html/search/nomatches.html create mode 100644 dev/MinGfx/docs/html/search/pages_0.html create mode 100644 dev/MinGfx/docs/html/search/pages_0.js create mode 100644 dev/MinGfx/docs/html/search/pages_1.html create mode 100644 dev/MinGfx/docs/html/search/pages_1.js create mode 100644 dev/MinGfx/docs/html/search/pages_2.html create mode 100644 dev/MinGfx/docs/html/search/pages_2.js create mode 100644 dev/MinGfx/docs/html/search/related_0.html create mode 100644 dev/MinGfx/docs/html/search/related_0.js create mode 100644 dev/MinGfx/docs/html/search/search.css create mode 100644 dev/MinGfx/docs/html/search/search.js create mode 100644 dev/MinGfx/docs/html/search/search_l.png create mode 100644 dev/MinGfx/docs/html/search/search_m.png create mode 100644 dev/MinGfx/docs/html/search/search_r.png create mode 100644 dev/MinGfx/docs/html/search/searchdata.js create mode 100644 dev/MinGfx/docs/html/search/typedefs_0.html create mode 100644 dev/MinGfx/docs/html/search/typedefs_0.js create mode 100644 dev/MinGfx/docs/html/search/variables_0.html create mode 100644 dev/MinGfx/docs/html/search/variables_0.js create mode 100644 dev/MinGfx/docs/html/search/variables_1.html create mode 100644 dev/MinGfx/docs/html/search/variables_1.js create mode 100644 dev/MinGfx/docs/html/search/variables_2.html create mode 100644 dev/MinGfx/docs/html/search/variables_2.js create mode 100644 dev/MinGfx/docs/html/search/variables_3.html create mode 100644 dev/MinGfx/docs/html/search/variables_3.js create mode 100644 dev/MinGfx/docs/html/search/variables_4.html create mode 100644 dev/MinGfx/docs/html/search/variables_4.js create mode 100644 dev/MinGfx/docs/html/search/variables_5.html create mode 100644 dev/MinGfx/docs/html/search/variables_5.js create mode 100644 dev/MinGfx/docs/html/search/variables_6.html create mode 100644 dev/MinGfx/docs/html/search/variables_6.js create mode 100644 dev/MinGfx/docs/html/search/variables_7.html create mode 100644 dev/MinGfx/docs/html/search/variables_7.js create mode 100644 dev/MinGfx/docs/html/search/variables_8.html create mode 100644 dev/MinGfx/docs/html/search/variables_8.js create mode 100644 dev/MinGfx/docs/html/search/variables_9.html create mode 100644 dev/MinGfx/docs/html/search/variables_9.js create mode 100644 dev/MinGfx/docs/html/search/variables_a.html create mode 100644 dev/MinGfx/docs/html/search/variables_a.js create mode 100644 dev/MinGfx/docs/html/search/variables_b.html create mode 100644 dev/MinGfx/docs/html/search/variables_b.js create mode 100644 dev/MinGfx/docs/html/search/variables_c.html create mode 100644 dev/MinGfx/docs/html/search/variables_c.js create mode 100644 dev/MinGfx/docs/html/search/variables_d.html create mode 100644 dev/MinGfx/docs/html/search/variables_d.js create mode 100644 dev/MinGfx/docs/html/search/variables_e.html create mode 100644 dev/MinGfx/docs/html/search/variables_e.js create mode 100644 dev/MinGfx/docs/html/search/variables_f.html create mode 100644 dev/MinGfx/docs/html/search/variables_f.js create mode 100644 dev/MinGfx/docs/html/shader__program_8h.html create mode 100644 dev/MinGfx/docs/html/shader__program_8h_source.html create mode 100644 dev/MinGfx/docs/html/splitbar.png create mode 100644 dev/MinGfx/docs/html/stb__rect__pack_8h.html create mode 100644 dev/MinGfx/docs/html/stb__rect__pack_8h_source.html create mode 100644 dev/MinGfx/docs/html/structstbrp__context-members.html create mode 100644 dev/MinGfx/docs/html/structstbrp__context.html create mode 100644 dev/MinGfx/docs/html/structstbrp__node-members.html create mode 100644 dev/MinGfx/docs/html/structstbrp__node.html create mode 100644 dev/MinGfx/docs/html/structstbrp__rect-members.html create mode 100644 dev/MinGfx/docs/html/structstbrp__rect.html create mode 100644 dev/MinGfx/docs/html/sync_off.png create mode 100644 dev/MinGfx/docs/html/sync_on.png create mode 100644 dev/MinGfx/docs/html/tab_a.png create mode 100644 dev/MinGfx/docs/html/tab_b.png create mode 100644 dev/MinGfx/docs/html/tab_h.png create mode 100644 dev/MinGfx/docs/html/tab_s.png create mode 100644 dev/MinGfx/docs/html/tabs.css create mode 100644 dev/MinGfx/docs/html/text__shader_8h.html create mode 100644 dev/MinGfx/docs/html/text__shader_8h_source.html create mode 100644 dev/MinGfx/docs/html/texture2d_8h.html create mode 100644 dev/MinGfx/docs/html/texture2d_8h_source.html create mode 100644 dev/MinGfx/docs/html/unicam_8h.html create mode 100644 dev/MinGfx/docs/html/unicam_8h_source.html create mode 100644 dev/MinGfx/docs/html/vector2_8h.html create mode 100644 dev/MinGfx/docs/html/vector2_8h_source.html create mode 100644 dev/MinGfx/docs/html/vector3_8h.html create mode 100644 dev/MinGfx/docs/html/vector3_8h_source.html (limited to 'dev/MinGfx/docs/html') diff --git a/dev/MinGfx/docs/html/aabb_8h.html b/dev/MinGfx/docs/html/aabb_8h.html new file mode 100644 index 0000000..1310e5d --- /dev/null +++ b/dev/MinGfx/docs/html/aabb_8h.html @@ -0,0 +1,117 @@ + + + + + + + +MinGfx Toolkit: src/aabb.h File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
aabb.h File Reference
+
+
+
#include "point3.h"
+#include "vector3.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  mingfx::AABB
 A 3D axis-aligned bounding box defined by two corners (min and max). More...
 
+ + + + +

+Namespaces

 mingfx
 Namespace for the MinGfx Toolkit.
 
+ + + +

+Functions

AABB mingfx::operator+ (const AABB &A, const AABB &B)
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/aabb_8h_source.html b/dev/MinGfx/docs/html/aabb_8h_source.html new file mode 100644 index 0000000..bef9f18 --- /dev/null +++ b/dev/MinGfx/docs/html/aabb_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +MinGfx Toolkit: src/aabb.h Source File + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
aabb.h
+
+
+Go to the documentation of this file.
1 /*
+
2  This file is part of the MinGfx Project.
+
3 
+
4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
+
5  All Rights Reserved.
+
6 
+
7  Original Author(s) of this File:
+
8  David Schroeder, 2010-ish, University of Minnesota
+
9 
+
10  Author(s) of Significant Updates/Modifications to the File:
+
11  Dan Keefe, 2018, University of Minnesota
+
12  ...
+
13  */
+
14 
+
15 #ifndef SRC_AABB_H_
+
16 #define SRC_AABB_H_
+
17 
+
18 #include "point3.h"
+
19 #include "vector3.h"
+
20 
+
21 namespace mingfx {
+
22 
+
23 // forward declaration
+
24 class Mesh;
+
25 
+
31 class AABB {
+
32 public:
+
34  AABB();
+
35 
+
37  AABB(const Point3 &a);
+
38 
+
40  AABB(const Point3 &a, const Point3 &b, const Point3 &c);
+
41 
+
44  AABB(const Vector3 &extents);
+
45 
+
48  AABB(const Point3 &center, const Vector3 &extents);
+
49 
+
51  AABB(const Mesh &mesh);
+
52 
+
54  AABB(const Mesh &mesh, unsigned int tri_id);
+
55 
+
56  virtual ~AABB();
+
57 
+ +
60 
+
63  float Volume() const;
+
64 
+
66  Point3 min() const;
+
67 
+
69  Point3 max() const;
+
70 
+
74  void set_user_data(int data);
+
75 
+
79  int user_data();
+
80 
+
81 private:
+
82 
+
83  Point3 min_, max_;
+
84 
+
85  int user_data_;
+
86 
+
87  friend AABB operator+(const AABB &A, const AABB &B);
+
88 };
+
89 
+
90 // Returns an AABB that contains both A and B completely (kind of like a union)
+
91 AABB operator+(const AABB &A, const AABB &B);
+
92 
+
93 
+
94 } // end namespace
+
95 
+
96 #endif
+
A 3D axis-aligned bounding box defined by two corners (min and max).
Definition: aabb.h:31
+
AABB(const Vector3 &extents)
Box centered at the origin with width, height, and depth specified by the vector.
+
float Volume() const
Returns the volume of the box or -1.0 when empty and 0.0 if the box contains just a single point.
+
AABB(const Mesh &mesh, unsigned int tri_id)
Box that contains just triangle number "tri_id" from the specified mesh.
+
int user_data()
You can set this to whatever you want in order to use it as a handle into your own program....
+
Point3 min() const
Returns the coordinates for the minimum corner of the box.
+
Vector3 Dimensions() const
Returns the dimensions of the box in x, y, and z as a 3D vector.
+
AABB(const Point3 &a)
Box that contains a single point.
+
friend AABB operator+(const AABB &A, const AABB &B)
+
AABB(const Point3 &center, const Vector3 &extents)
Box centered at the center with width, height, and depth specified by the vector.
+
AABB(const Mesh &mesh)
Box that contains a whole mesh.
+
AABB(const Point3 &a, const Point3 &b, const Point3 &c)
Box that contains a triangle defined by 3 points.
+
Point3 max() const
Returns the coordinates for the maximum corner of the box.
+
void set_user_data(int data)
You can set this to whatever you want in order to use it as a handle into your own program....
+
virtual ~AABB()
+
AABB()
Creates an empty box.
+
A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.
Definition: mesh.h:127
+
A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
Definition: point3.h:52
+
A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
Definition: vector3.h:62
+
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+
AABB operator+(const AABB &A, const AABB &B)
+ + +
+ + + + + diff --git a/dev/MinGfx/docs/html/annotated.html b/dev/MinGfx/docs/html/annotated.html new file mode 100644 index 0000000..549003b --- /dev/null +++ b/dev/MinGfx/docs/html/annotated.html @@ -0,0 +1,119 @@ + + + + + + + +MinGfx Toolkit: Class List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NmingfxNamespace for the MinGfx Toolkit
 CAABBA 3D axis-aligned bounding box defined by two corners (min and max)
 CBVHA Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersection tests by carving up space into a hierarchy of partitions represented in a tree
 CColorRepresents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with OpenGL
 CCraftCamThis implements a user interface for controlling the camera with the mouse
 CDefaultShaderA simple GLSL shader for textured per-fragment Phong shading with multiple light sources
 CLightPropertiesSmall data structure to hold per-light properties
 CMaterialPropertiesSmall data structure to hold properties of the material to be lit
 CGfxMathThis class holds a variety of static math functions that are useful to have defined with creating graphics programs
 CGraphicsAppThis is the main application base class for the MinGfx Toolkit
 CMatrix4A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be compatible with OpenGL
 CMeshA triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader
 CPlatformProvides access to the underlying file system and other platform-specific routines
 CPoint2A 2D Point with floating point coordinates, used for storing 2D texture coordinates, screen-space graphics, and mouse input
 CPoint3A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graphics operations
 CQuaternionA quaternion to represent rotations in 3D space
 CQuickShapesThis class provides a quick way to draw shapes for use in debugging or simple scenes
 CRayStores the mathematical object of a ray that begins at an origin (a 3D point) and points in a direction (a unit 3D vector)
 CShaderProgramA wrapper around GLSL shader programs
 CTextShader
 CTextFormat
 CTexture2DA wrapper around a 2D texture that supports loading images from files or setting texture color data directly
 CUniCamThis implements a user interface for controlling the camera with the mouse
 CVector2A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements, and screen-space vectors
 CVector3A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graphics operations
 Cstbrp_context
 Cstbrp_node
 Cstbrp_rect
+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/api.html b/dev/MinGfx/docs/html/api.html new file mode 100644 index 0000000..5e0df60 --- /dev/null +++ b/dev/MinGfx/docs/html/api.html @@ -0,0 +1,168 @@ + + + + + + + +MinGfx Toolkit: API - MinGfx Programming Reference Organized by Topic + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
API - MinGfx Programming Reference Organized by Topic
+
+
+

+

+API by Topic

+ + + + + +
Application Class
GraphicsApp
+ + + + + + + +
3D Models
QuickShapes
Mesh
+ + + + + + + +
Color and Textures
Color
Texture2D
+ + + + + + + + + + + + + + + + + + + +
Graphics Math
Matrix4
Point2
Point3
Vector2
Vector3
Ray
Quaternion
GfxMath
+ + + + + + + + + + + +
Shader Programs
DefaultShader
- DefaultShader::LightProperties
- DefaultShader::MaterialProperties
ShaderProgram
+ + + + + + + +
User Interface
CraftCam
UniCam
+ + + + + +
File I/O and System Routines
Platform
+

+Coding Style

+

The library follows the Google C++ Style Guide, in part as an example for students, since this style is also used in several courses. There are several things that programmers who are not familiar with the Google style might find unusual. These are the most common style rules to note:

    +
  • C++ source filenames are all lowercase with underscores, and a .cc extension is used instead of .cpp.
  • +
  • Variable names are all lowercase with underscores.
  • +
  • Class member variables are named the same as regular variables but with a trailing _, as in my_member_var_.
  • +
  • Functions start with capital letters unless they are small getter or setter methods.
  • +
  • There are many other rules, a solid discussion of pros/cons, and an automated style checker here.
  • +
+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/api_8md.html b/dev/MinGfx/docs/html/api_8md.html new file mode 100644 index 0000000..5bb16f2 --- /dev/null +++ b/dev/MinGfx/docs/html/api_8md.html @@ -0,0 +1,87 @@ + + + + + + + +MinGfx Toolkit: doc/api.md File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
doc/api.md File Reference
+
+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/bc_s.png b/dev/MinGfx/docs/html/bc_s.png new file mode 100644 index 0000000..21d5d36 Binary files /dev/null and b/dev/MinGfx/docs/html/bc_s.png differ diff --git a/dev/MinGfx/docs/html/bdwn.png b/dev/MinGfx/docs/html/bdwn.png new file mode 100644 index 0000000..f057806 Binary files /dev/null and b/dev/MinGfx/docs/html/bdwn.png differ diff --git a/dev/MinGfx/docs/html/bvh_8h.html b/dev/MinGfx/docs/html/bvh_8h.html new file mode 100644 index 0000000..d87f356 --- /dev/null +++ b/dev/MinGfx/docs/html/bvh_8h.html @@ -0,0 +1,111 @@ + + + + + + + +MinGfx Toolkit: src/bvh.h File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
bvh.h File Reference
+
+
+
#include "aabb.h"
+#include "point3.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  mingfx::BVH
 A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersection tests by carving up space into a hierarchy of partitions represented in a tree. More...
 
+ + + + +

+Namespaces

 mingfx
 Namespace for the MinGfx Toolkit.
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/bvh_8h_source.html b/dev/MinGfx/docs/html/bvh_8h_source.html new file mode 100644 index 0000000..2cbbadf --- /dev/null +++ b/dev/MinGfx/docs/html/bvh_8h_source.html @@ -0,0 +1,177 @@ + + + + + + + +MinGfx Toolkit: src/bvh.h Source File + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
bvh.h
+
+
+Go to the documentation of this file.
1 /*
+
2  This file is part of the MinGfx Project.
+
3 
+
4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
+
5  All Rights Reserved.
+
6 
+
7  Original Author(s) of this File:
+
8  David Schroeder, 2010-ish, University of Minnesota
+
9 
+
10  Author(s) of Significant Updates/Modifications to the File:
+
11  Dan Keefe, 2018, University of Minnesota
+
12  ...
+
13  */
+
14 
+
15 #ifndef SRC_BVH_H_
+
16 #define SRC_BVH_H_
+
17 
+
18 #include "aabb.h"
+
19 #include "point3.h"
+
20 
+
21 
+
22 namespace mingfx {
+
23 
+
24 // forward declarations
+
25 class Mesh;
+
26 class Ray;
+
27 
+
28 
+
40 class BVH {
+
41 public:
+
43  BVH();
+
44 
+
45  virtual ~BVH();
+
46 
+
57  void CreateFromMesh(const Mesh &mesh);
+
58 
+
59 
+
63  void CreateFromListOfBoxes(const std::vector<AABB> &boxes);
+
64 
+
65 
+
73  std::vector<int> IntersectAndReturnUserData(const Ray &r) const;
+
74 
+
75 
+
76 private:
+
77 
+
78  // Simple internal data structure for storing each node of the BVH tree.
+
79  class Node {
+
80  public:
+
81  Node() : child1(NULL), child2(NULL) {}
+
82 
+
83  // Links to children
+
84  Node *child1;
+
85  Node *child2;
+
86 
+
87  // Contains all geometry below this node.
+
88  AABB box;
+
89  };
+
90 
+
91 
+
92  // for now, the copy constructor is private so no copies are allowed.
+
93  // eventually, this would be good to implement and then it can be made public.
+
94  BVH(const BVH &other);
+
95 
+
96  void BuildHierarchyRecursive(Node *node, std::vector<AABB> boxes);
+
97  void IntersectRecursive(const Ray &r, Node *node, std::vector<int> *data_list) const;
+
98  void FreeNodeRecursive(Node* node);
+
99 
+
100  Node* root_;
+
101 };
+
102 
+
103 
+
104 } // end namespace
+
105 
+
106 #endif
+ +
A 3D axis-aligned bounding box defined by two corners (min and max).
Definition: aabb.h:31
+
A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...
Definition: bvh.h:40
+
void CreateFromMesh(const Mesh &mesh)
Creates a bounding volume hierarchy where each leaf node contains a single triangle from the mesh.
+
void CreateFromListOfBoxes(const std::vector< AABB > &boxes)
Creates a BVH where each leaf node contains one of the boxes passed in to the function.
+
BVH()
Initializes the class with an empty hierarchy.
+
virtual ~BVH()
+
std::vector< int > IntersectAndReturnUserData(const Ray &r) const
Traverse the BVH to find leaf nodes whose AABBs are intersected by the ray.
+
A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.
Definition: mesh.h:127
+
Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...
Definition: ray.h:54
+
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+ +
+ + + + + diff --git a/dev/MinGfx/docs/html/classes.html b/dev/MinGfx/docs/html/classes.html new file mode 100644 index 0000000..58382ef --- /dev/null +++ b/dev/MinGfx/docs/html/classes.html @@ -0,0 +1,132 @@ + + + + + + + +MinGfx Toolkit: Class Index + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
A | B | C | D | G | L | M | P | Q | R | S | T | U | V
+ +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b-members.html new file mode 100644 index 0000000..68f1b69 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b-members.html @@ -0,0 +1,109 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::AABB Member List
+
+
+ +

This is the complete list of members for mingfx::AABB, including all inherited members.

+ + + + + + + + + + + + + + + + +
AABB()mingfx::AABB
AABB(const Point3 &a)mingfx::AABB
AABB(const Point3 &a, const Point3 &b, const Point3 &c)mingfx::AABB
AABB(const Vector3 &extents)mingfx::AABB
AABB(const Point3 &center, const Vector3 &extents)mingfx::AABB
AABB(const Mesh &mesh)mingfx::AABB
AABB(const Mesh &mesh, unsigned int tri_id)mingfx::AABB
Dimensions() constmingfx::AABB
max() constmingfx::AABB
min() constmingfx::AABB
operator+(const AABB &A, const AABB &B)mingfx::AABBfriend
set_user_data(int data)mingfx::AABB
user_data()mingfx::AABB
Volume() constmingfx::AABB
~AABB()mingfx::AABBvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b.html b/dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b.html new file mode 100644 index 0000000..e4ba05b --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_a_a_b_b.html @@ -0,0 +1,509 @@ + + + + + + + +MinGfx Toolkit: mingfx::AABB Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::AABB Class Reference
+
+
+

Detailed Description

+

A 3D axis-aligned bounding box defined by two corners (min and max).

+

AABBs can be added together using the + operator to make them grow to cover the extents of both boxes. Each box can also store a user_id (int), which can be used to associate the box with some other object in your program.

+ +

Definition at line 31 of file aabb.h.

+
+

#include <aabb.h>

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

+Public Member Functions

 AABB ()
 Creates an empty box. More...
 
 AABB (const Point3 &a)
 Box that contains a single point. More...
 
 AABB (const Point3 &a, const Point3 &b, const Point3 &c)
 Box that contains a triangle defined by 3 points. More...
 
 AABB (const Vector3 &extents)
 Box centered at the origin with width, height, and depth specified by the vector. More...
 
 AABB (const Point3 &center, const Vector3 &extents)
 Box centered at the center with width, height, and depth specified by the vector. More...
 
 AABB (const Mesh &mesh)
 Box that contains a whole mesh. More...
 
 AABB (const Mesh &mesh, unsigned int tri_id)
 Box that contains just triangle number "tri_id" from the specified mesh. More...
 
virtual ~AABB ()
 
Vector3 Dimensions () const
 Returns the dimensions of the box in x, y, and z as a 3D vector. More...
 
float Volume () const
 Returns the volume of the box or -1.0 when empty and 0.0 if the box contains just a single point. More...
 
Point3 min () const
 Returns the coordinates for the minimum corner of the box. More...
 
Point3 max () const
 Returns the coordinates for the maximum corner of the box. More...
 
void set_user_data (int data)
 You can set this to whatever you want in order to use it as a handle into your own program. The intent is to make it possible for you to associate this AABB with the id of some object in your application. More...
 
int user_data ()
 You can set this to whatever you want in order to use it as a handle into your own program. The intent is to make it possible for you to associate this AABB with the id of some object in your application. More...
 
+ + + +

+Friends

AABB operator+ (const AABB &A, const AABB &B)
 
+

Constructor & Destructor Documentation

+ +

◆ AABB() [1/7]

+ +
+
+ + + + + + + +
mingfx::AABB::AABB ()
+
+ +

Creates an empty box.

+ +
+
+ +

◆ AABB() [2/7]

+ +
+
+ + + + + + + + +
mingfx::AABB::AABB (const Point3a)
+
+ +

Box that contains a single point.

+ +
+
+ +

◆ AABB() [3/7]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
mingfx::AABB::AABB (const Point3a,
const Point3b,
const Point3c 
)
+
+ +

Box that contains a triangle defined by 3 points.

+ +
+
+ +

◆ AABB() [4/7]

+ +
+
+ + + + + + + + +
mingfx::AABB::AABB (const Vector3extents)
+
+ +

Box centered at the origin with width, height, and depth specified by the vector.

+ +
+
+ +

◆ AABB() [5/7]

+ +
+
+ + + + + + + + + + + + + + + + + + +
mingfx::AABB::AABB (const Point3center,
const Vector3extents 
)
+
+ +

Box centered at the center with width, height, and depth specified by the vector.

+ +
+
+ +

◆ AABB() [6/7]

+ +
+
+ + + + + + + + +
mingfx::AABB::AABB (const Meshmesh)
+
+ +

Box that contains a whole mesh.

+ +
+
+ +

◆ AABB() [7/7]

+ +
+
+ + + + + + + + + + + + + + + + + + +
mingfx::AABB::AABB (const Meshmesh,
unsigned int tri_id 
)
+
+ +

Box that contains just triangle number "tri_id" from the specified mesh.

+ +
+
+ +

◆ ~AABB()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::AABB::~AABB ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ Dimensions()

+ +
+
+ + + + + + + +
Vector3 mingfx::AABB::Dimensions () const
+
+ +

Returns the dimensions of the box in x, y, and z as a 3D vector.

+ +
+
+ +

◆ max()

+ +
+
+ + + + + + + +
Point3 mingfx::AABB::max () const
+
+ +

Returns the coordinates for the maximum corner of the box.

+ +
+
+ +

◆ min()

+ +
+
+ + + + + + + +
Point3 mingfx::AABB::min () const
+
+ +

Returns the coordinates for the minimum corner of the box.

+ +
+
+ +

◆ set_user_data()

+ +
+
+ + + + + + + + +
void mingfx::AABB::set_user_data (int data)
+
+ +

You can set this to whatever you want in order to use it as a handle into your own program. The intent is to make it possible for you to associate this AABB with the id of some object in your application.

+ +
+
+ +

◆ user_data()

+ +
+
+ + + + + + + +
int mingfx::AABB::user_data ()
+
+ +

You can set this to whatever you want in order to use it as a handle into your own program. The intent is to make it possible for you to associate this AABB with the id of some object in your application.

+ +
+
+ +

◆ Volume()

+ +
+
+ + + + + + + +
float mingfx::AABB::Volume () const
+
+ +

Returns the volume of the box or -1.0 when empty and 0.0 if the box contains just a single point.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator+

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABB operator+ (const AABBA,
const AABBB 
)
+
+friend
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_b_v_h-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_b_v_h-members.html new file mode 100644 index 0000000..68ec3cc --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_b_v_h-members.html @@ -0,0 +1,99 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::BVH Member List
+
+
+ +

This is the complete list of members for mingfx::BVH, including all inherited members.

+ + + + + + +
BVH()mingfx::BVH
CreateFromListOfBoxes(const std::vector< AABB > &boxes)mingfx::BVH
CreateFromMesh(const Mesh &mesh)mingfx::BVH
IntersectAndReturnUserData(const Ray &r) constmingfx::BVH
~BVH()mingfx::BVHvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_b_v_h.html b/dev/MinGfx/docs/html/classmingfx_1_1_b_v_h.html new file mode 100644 index 0000000..032d128 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_b_v_h.html @@ -0,0 +1,232 @@ + + + + + + + +MinGfx Toolkit: mingfx::BVH Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::BVH Class Reference
+
+
+

Detailed Description

+

A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersection tests by carving up space into a hierarchy of partitions represented in a tree.

+

Each node of the tree is represented as an AABB (Axis-Aligned Bounding Box) that contains all of the nodes under it. Different objects can be stored inside each bounding box. For example, when a BVH is created for a mesh, each leaf node can contain a AABB that contains just a single triangle. Or, when a BVH is created for an entire scene, you could have each leaf node contain an entire mesh or other object within the scene. In each case, use AABB's set_user_data() and user_data() methods to store a handle for whetever you want to store inside the nodes.

+ +

Definition at line 40 of file bvh.h.

+
+

#include <bvh.h>

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

+Public Member Functions

 BVH ()
 Initializes the class with an empty hierarchy. More...
 
virtual ~BVH ()
 
void CreateFromMesh (const Mesh &mesh)
 Creates a bounding volume hierarchy where each leaf node contains a single triangle from the mesh. More...
 
void CreateFromListOfBoxes (const std::vector< AABB > &boxes)
 Creates a BVH where each leaf node contains one of the boxes passed in to the function. More...
 
std::vector< int > IntersectAndReturnUserData (const Ray &r) const
 Traverse the BVH to find leaf nodes whose AABBs are intersected by the ray. More...
 
+

Constructor & Destructor Documentation

+ +

◆ BVH()

+ +
+
+ + + + + + + +
mingfx::BVH::BVH ()
+
+ +

Initializes the class with an empty hierarchy.

+ +
+
+ +

◆ ~BVH()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::BVH::~BVH ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ CreateFromListOfBoxes()

+ +
+
+ + + + + + + + +
void mingfx::BVH::CreateFromListOfBoxes (const std::vector< AABB > & boxes)
+
+ +

Creates a BVH where each leaf node contains one of the boxes passed in to the function.

+ +
+
+ +

◆ CreateFromMesh()

+ +
+
+ + + + + + + + +
void mingfx::BVH::CreateFromMesh (const Meshmesh)
+
+ +

Creates a bounding volume hierarchy where each leaf node contains a single triangle from the mesh.

+

For leaf nodes, the triangle index can be retrieved with:

int tri_id = leafnode->box.user_data();
+

The user_data will be -1 for non-leaf nodes. Once the structure has been created, it can be used to perform fast ray-mesh intersection tests. See Ray::FastIntersectMesh().

+ +
+
+ +

◆ IntersectAndReturnUserData()

+ +
+
+ + + + + + + + +
std::vector<int> mingfx::BVH::IntersectAndReturnUserData (const Rayr) const
+
+ +

Traverse the BVH to find leaf nodes whose AABBs are intersected by the ray.

+

These are candidates to test more thoroughly using whatever ray-object intersection test is appropriate for the objects stored inside the AABB. This routine returns the user_data for each AABB leaf node. In the case of a BVH created using CreateFromMesh, this means it stores the indices to the mesh triangles that should be tested for ray-triangle intersection.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_color-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_color-members.html new file mode 100644 index 0000000..2ad8cd6 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_color-members.html @@ -0,0 +1,109 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Color Member List
+
+
+ +

This is the complete list of members for mingfx::Color, including all inherited members.

+ + + + + + + + + + + + + + + + +
Color()mingfx::Color
Color(float red, float green, float blue, float alpha=1.0)mingfx::Color
Color(float *p)mingfx::Color
Color(const std::vector< float > &vals)mingfx::Color
Color(const Color &p)mingfx::Color
Lerp(const Color &b, float alpha) constmingfx::Color
Lerp(const Color &a, const Color &b, float alpha)mingfx::Colorstatic
operator!=(const Color &p) constmingfx::Color
operator=(const Color &p)mingfx::Color
operator==(const Color &p) constmingfx::Color
operator[](const int i) constmingfx::Color
operator[](const int i)mingfx::Color
ToVector() constmingfx::Color
value_ptr() constmingfx::Color
~Color()mingfx::Colorvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_color.html b/dev/MinGfx/docs/html/classmingfx_1_1_color.html new file mode 100644 index 0000000..d863be4 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_color.html @@ -0,0 +1,529 @@ + + + + + + + +MinGfx Toolkit: mingfx::Color Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Color Class Reference
+
+
+

Detailed Description

+

Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with OpenGL.

+

Example usage:

Color black(0, 0, 0);
+
Color white(1, 1, 1);
+
Color gray(0.5, 0.5, 0.5);
+
Color tranparent_red(1.0, 0.0, 0.0, 0.5);
+
Color orange(1.0, 0.65, 0.0);
+
+
float red_component_of_orange = orange[0];
+
float green_component_of_orange = orange[1];
+
float blue_component_of_orange = orange[2];
+
float alpha_component_of_orange = orange[3];
+
+
// Use value_ptr() to send the array of floats directly to OpenGL commands
+
glColor4fv(orange.value_ptr());
+
Color()
Defaults to black.
+
+

Definition at line 41 of file color.h.

+
+

#include <color.h>

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

+Public Member Functions

 Color ()
 Defaults to black. More...
 
 Color (float red, float green, float blue, float alpha=1.0)
 Constructs a color. Alpha defaults to 1.0 (completely opaque) More...
 
 Color (float *p)
 Constructs a point given a pointer to float array. More...
 
 Color (const std::vector< float > &vals)
 Constructs a point given a 3 or 4-element vector of floats. More...
 
 Color (const Color &p)
 Copy constructor. More...
 
virtual ~Color ()
 Color destructor. More...
 
bool operator== (const Color &p) const
 Check for equality. More...
 
bool operator!= (const Color &p) const
 Check for inequality. More...
 
Coloroperator= (const Color &p)
 Assignment operator. More...
 
float operator[] (const int i) const
 Accesses the ith component of the color, stored in RGBA order. More...
 
float & operator[] (const int i)
 Accesses the ith coordinate of the color, stored in RGBA order. More...
 
const float * value_ptr () const
 Returns a const pointer to the raw data array. More...
 
std::vector< float > ToVector () const
 
Color Lerp (const Color &b, float alpha) const
 Linear interpolation between this color and another. Alpha=0.0 returns this color, and alpha=1.0 returns the other color, other values blend between the two via a linear interpolation on each color channel. More...
 
+ + + + +

+Static Public Member Functions

static Color Lerp (const Color &a, const Color &b, float alpha)
 Linear interpolation between two colors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two via a linear interpolation on each color channel. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Color() [1/5]

+ +
+
+ + + + + + + +
mingfx::Color::Color ()
+
+ +

Defaults to black.

+ +
+
+ +

◆ Color() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
mingfx::Color::Color (float red,
float green,
float blue,
float alpha = 1.0 
)
+
+ +

Constructs a color. Alpha defaults to 1.0 (completely opaque)

+ +
+
+ +

◆ Color() [3/5]

+ +
+
+ + + + + + + + +
mingfx::Color::Color (float * p)
+
+ +

Constructs a point given a pointer to float array.

+ +
+
+ +

◆ Color() [4/5]

+ +
+
+ + + + + + + + +
mingfx::Color::Color (const std::vector< float > & vals)
+
+ +

Constructs a point given a 3 or 4-element vector of floats.

+ +
+
+ +

◆ Color() [5/5]

+ +
+
+ + + + + + + + +
mingfx::Color::Color (const Colorp)
+
+ +

Copy constructor.

+ +
+
+ +

◆ ~Color()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Color::~Color ()
+
+virtual
+
+ +

Color destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Lerp() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Color mingfx::Color::Lerp (const Colora,
const Colorb,
float alpha 
)
+
+static
+
+ +

Linear interpolation between two colors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two via a linear interpolation on each color channel.

+ +
+
+ +

◆ Lerp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Color mingfx::Color::Lerp (const Colorb,
float alpha 
) const
+
+ +

Linear interpolation between this color and another. Alpha=0.0 returns this color, and alpha=1.0 returns the other color, other values blend between the two via a linear interpolation on each color channel.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool mingfx::Color::operator!= (const Colorp) const
+
+ +

Check for inequality.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Color& mingfx::Color::operator= (const Colorp)
+
+ +

Assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool mingfx::Color::operator== (const Colorp) const
+
+ +

Check for equality.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
float& mingfx::Color::operator[] (const int i)
+
+ +

Accesses the ith coordinate of the color, stored in RGBA order.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
float mingfx::Color::operator[] (const int i) const
+
+ +

Accesses the ith component of the color, stored in RGBA order.

+ +
+
+ +

◆ ToVector()

+ +
+
+ + + + + + + +
std::vector<float> mingfx::Color::ToVector () const
+
+ +
+
+ +

◆ value_ptr()

+ +
+
+ + + + + + + +
const float* mingfx::Color::value_ptr () const
+
+ +

Returns a const pointer to the raw data array.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_craft_cam-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_craft_cam-members.html new file mode 100644 index 0000000..758badd --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_craft_cam-members.html @@ -0,0 +1,110 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::CraftCam Member List
+
+
+ +

This is the complete list of members for mingfx::CraftCam, including all inherited members.

+ + + + + + + + + + + + + + + + + +
CraftCam()mingfx::CraftCam
CraftCam(const Matrix4 &initial_view_matrix)mingfx::CraftCam
eye()mingfx::CraftCam
look()mingfx::CraftCam
look_scale()mingfx::CraftCam
OnMouseMove(const Vector2 &normalized_mouse_delta)mingfx::CraftCam
rotation_scale()mingfx::CraftCam
set_look_scale(float s)mingfx::CraftCam
set_rotation_scale(float s)mingfx::CraftCam
set_translation_scale(float s)mingfx::CraftCam
set_view_matrix(Matrix4 view_matrix)mingfx::CraftCam
translation_scale()mingfx::CraftCam
UpdateHeight(float new_y_value)mingfx::CraftCam
UpdateSimulation(double dt, GLFWwindow *window_ptr)mingfx::CraftCam
view_matrix()mingfx::CraftCam
~CraftCam()mingfx::CraftCamvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_craft_cam.html b/dev/MinGfx/docs/html/classmingfx_1_1_craft_cam.html new file mode 100644 index 0000000..502b4cb --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_craft_cam.html @@ -0,0 +1,541 @@ + + + + + + + +MinGfx Toolkit: mingfx::CraftCam Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::CraftCam Class Reference
+
+
+

Detailed Description

+

This implements a user interface for controlling the camera with the mouse.

+

This interface is appropriate for "first person" camera control, as in games like Minecraft.

+

Use the arrow keys or A,S,W,Z keys to move around in the virtual world. UP/DOWN and W/Z move forward and back. LEFT/RIGHT or A/S rotate your body to face left or right. You can rotate and tilt your head to look left/right/up/down by moving the mouse. In Minecraft, that movement happens whenever you move the mouse, regardless of whether you are holding down a mouse button, but in some games you want to hold the camera still while you use the mouse to draw on the screen or do something else. It's possible to use this interface both ways by calling the MouseMove() function either every time the mouse moves, or only when the mouse is in a dragging mode.

+

Example usage:

// Create a global or member variable in your MyGraphicsApp class:
+
CraftCam cam_;
+
+
+
// If you want to always rotate the view with the mouse, use this:
+
void MyGraphicsApp::OnMouseMove(const Point2 &pos, const Vector2 &delta) {
+
Vector2 delta_ndc = PixelsToNormalizedDeviceCoords(pos);
+
cam_.OnMouseMove(delta_ndc);
+
}
+
+
// Alternatively, if you want to only rotate the view when the mouse button is
+
// held down, use this instead. Call cam_.OnMouseMove() in either one function
+
// or the other, but not both!
+
// void MyGraphicsApp::OnLeftMouseDrag(const Point2 &pos, const Vector2 &delta) {
+
// Vector2 delta_ndc = PixelsToNormalizedDeviceCoords(pos);
+
// cam_.OnMouseMove(delta_ndc);
+
// }
+
+
// This tells the camera to simulate walking based on the keyboard keys currently
+
// pressed. You need to pass a pointer to the underlying GLFW window created by
+
// GraphicsApp.
+
void MyGraphicsApp::UpdateSimulation(double dt) {
+
cam_.UpdateSimulation(dt, window());
+
}
+
+
void MyGraphicsApp::InitOpenGL() {
+
cam_.set_view_matrix(Matrix4::lookAt(Point3(0,2,2), Point3(0,2,0), Vector3(0,1,0)););
+
}
+
+
void MyGraphicsApp::DrawOpenGL() {
+
// draw your scene using the view matrix from the camera
+
Matrix4 proj_matrix = Matrix4::perspective(60, aspect_ratio(), 1, 200);
+
Matrix4 view_matrix = cam_.view_matrix();
+
Matrix4 model_matrix = Matrix4::RotateY(to_radians(45.0));
+
quick_shapes.DrawCube(model_matrix, view_matirx, proj_matrix, Color(1,1,1));
+
}
+
Matrix4 view_matrix()
Access the camera view matrix created by the CraftCam interactions via this method and use it to draw...
+
CraftCam()
Creates a CraftCam object with an initial view matrix = identity.
+
+

Definition at line 79 of file craft_cam.h.

+
+

#include <craft_cam.h>

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

+Public Member Functions

 CraftCam ()
 Creates a CraftCam object with an initial view matrix = identity. More...
 
 CraftCam (const Matrix4 &initial_view_matrix)
 Creates a CraftCam object with the supplied initial view matrix. More...
 
virtual ~CraftCam ()
 
void UpdateSimulation (double dt, GLFWwindow *window_ptr)
 Call this from your app's UpdateSimulation() method. This tells the camera to simulate walking based on the keyboard keys currently pressed. You need to pass a pointer to the underlying GLFW window created by GraphicsApp. Example: More...
 
void OnMouseMove (const Vector2 &normalized_mouse_delta)
 Call this from your app's OnMouseMove() or On*MouseDrag() method. Use OnMouseMove() if you want to always rotate the view with the mouse. Remember to convert the mouse coordinates (usually reported by window managers in pixels) into normalized device coordinates: More...
 
Matrix4 view_matrix ()
 Access the camera view matrix created by the CraftCam interactions via this method and use it to draw the geometry in your scence. For example, within GraphicsApp::DrawUsingOpenGL(), you might have: More...
 
Point3 eye ()
 Returns the "eye" point (i.e., focal point) of the camera in world space coordinates. More...
 
Vector3 look ()
 Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates. More...
 
void UpdateHeight (float new_y_value)
 Sets the y value of the camera (i.e., the height). If you want to set the entire view matrix, then use set_view_matrix(), but if you just want to update the height, e.g., while walking around a bumpy terrain, then use this. More...
 
void set_view_matrix (Matrix4 view_matrix)
 This is not required, but you may use this if you wish to set an initial view matrix or reset the view matrix. More...
 
float translation_scale ()
 This is the scale factor used to speed up / slow down forward/backward translation when walking for the UP / DOWN keys. It defaults to 1.0, smaller values will make the camera walk slower, larger values will speed it up. More...
 
void set_translation_scale (float s)
 This is the scale factor used to speed up / slow down forward/backward translation when walking for the UP / DOWN keys. It defaults to 1.0, smaller values will make the camera walk slower, larger values will speed it up. More...
 
float rotation_scale ()
 This is the scale factor used to speed up / slow down left/right rotation when walking for the LEFT / RIGHT keys. It defaults to 1.0, smaller values will make the camera turn slower, larger values will speed it up. More...
 
void set_rotation_scale (float s)
 This is the scale factor used to speed up / slow down left/right rotation when walking for the LEFT / RIGHT keys. It defaults to 1.0, smaller values will make the camera turn slower, larger values will speed it up. More...
 
float look_scale ()
 This is the scale factor used to speed up / slow down looking around when moving the head with the mouse. It defaults to 1.0, smaller values will make the camera turn slower, larger values will speed it up. More...
 
void set_look_scale (float s)
 This is the scale factor used to speed up / slow down looking around when moving the head with the mouse. It defaults to 1.0, smaller values will make the camera turn slower, larger values will speed it up. More...
 
+

Constructor & Destructor Documentation

+ +

◆ CraftCam() [1/2]

+ +
+
+ + + + + + + +
mingfx::CraftCam::CraftCam ()
+
+ +

Creates a CraftCam object with an initial view matrix = identity.

+ +
+
+ +

◆ CraftCam() [2/2]

+ +
+
+ + + + + + + + +
mingfx::CraftCam::CraftCam (const Matrix4initial_view_matrix)
+
+ +

Creates a CraftCam object with the supplied initial view matrix.

+ +
+
+ +

◆ ~CraftCam()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::CraftCam::~CraftCam ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ eye()

+ +
+
+ + + + + + + +
Point3 mingfx::CraftCam::eye ()
+
+ +

Returns the "eye" point (i.e., focal point) of the camera in world space coordinates.

+ +
+
+ +

◆ look()

+ +
+
+ + + + + + + +
Vector3 mingfx::CraftCam::look ()
+
+ +

Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates.

+ +
+
+ +

◆ look_scale()

+ +
+
+ + + + + + + +
float mingfx::CraftCam::look_scale ()
+
+ +

This is the scale factor used to speed up / slow down looking around when moving the head with the mouse. It defaults to 1.0, smaller values will make the camera turn slower, larger values will speed it up.

+ +
+
+ +

◆ OnMouseMove()

+ +
+
+ + + + + + + + +
void mingfx::CraftCam::OnMouseMove (const Vector2normalized_mouse_delta)
+
+ +

Call this from your app's OnMouseMove() or On*MouseDrag() method. Use OnMouseMove() if you want to always rotate the view with the mouse. Remember to convert the mouse coordinates (usually reported by window managers in pixels) into normalized device coordinates:

+
void MyGraphicsApp::OnMouseMove(const Point2 &pos, const Vector2 &delta) {
+
Vector2 delta_ndc = PixelsToNormalizedDeviceCoords(pos);
+
cam_.OnMouseMove(delta_ndc);
+
}
+

Alternatively, if you want to only rotate the view when the mouse button is held down, use On*MouseDrag() instead:

void MyGraphicsApp::OnLeftMouseDrag(const Point2 &pos, const Vector2 &delta) {
+
Vector2 delta_ndc = PixelsToNormalizedDeviceCoords(pos);
+
cam_.OnMouseMove(delta_ndc);
+
}
+
+
+
+ +

◆ rotation_scale()

+ +
+
+ + + + + + + +
float mingfx::CraftCam::rotation_scale ()
+
+ +

This is the scale factor used to speed up / slow down left/right rotation when walking for the LEFT / RIGHT keys. It defaults to 1.0, smaller values will make the camera turn slower, larger values will speed it up.

+ +
+
+ +

◆ set_look_scale()

+ +
+
+ + + + + + + + +
void mingfx::CraftCam::set_look_scale (float s)
+
+ +

This is the scale factor used to speed up / slow down looking around when moving the head with the mouse. It defaults to 1.0, smaller values will make the camera turn slower, larger values will speed it up.

+ +
+
+ +

◆ set_rotation_scale()

+ +
+
+ + + + + + + + +
void mingfx::CraftCam::set_rotation_scale (float s)
+
+ +

This is the scale factor used to speed up / slow down left/right rotation when walking for the LEFT / RIGHT keys. It defaults to 1.0, smaller values will make the camera turn slower, larger values will speed it up.

+ +
+
+ +

◆ set_translation_scale()

+ +
+
+ + + + + + + + +
void mingfx::CraftCam::set_translation_scale (float s)
+
+ +

This is the scale factor used to speed up / slow down forward/backward translation when walking for the UP / DOWN keys. It defaults to 1.0, smaller values will make the camera walk slower, larger values will speed it up.

+ +
+
+ +

◆ set_view_matrix()

+ +
+
+ + + + + + + + +
void mingfx::CraftCam::set_view_matrix (Matrix4 view_matrix)
+
+ +

This is not required, but you may use this if you wish to set an initial view matrix or reset the view matrix.

+ +
+
+ +

◆ translation_scale()

+ +
+
+ + + + + + + +
float mingfx::CraftCam::translation_scale ()
+
+ +

This is the scale factor used to speed up / slow down forward/backward translation when walking for the UP / DOWN keys. It defaults to 1.0, smaller values will make the camera walk slower, larger values will speed it up.

+ +
+
+ +

◆ UpdateHeight()

+ +
+
+ + + + + + + + +
void mingfx::CraftCam::UpdateHeight (float new_y_value)
+
+ +

Sets the y value of the camera (i.e., the height). If you want to set the entire view matrix, then use set_view_matrix(), but if you just want to update the height, e.g., while walking around a bumpy terrain, then use this.

+ +
+
+ +

◆ UpdateSimulation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::CraftCam::UpdateSimulation (double dt,
GLFWwindow * window_ptr 
)
+
+ +

Call this from your app's UpdateSimulation() method. This tells the camera to simulate walking based on the keyboard keys currently pressed. You need to pass a pointer to the underlying GLFW window created by GraphicsApp. Example:

+
void MyGraphicsApp::UpdateSimulation(double dt) {
+
cam_.UpdateSimulation(dt, window());
+
}
+
+
+
+ +

◆ view_matrix()

+ +
+
+ + + + + + + +
Matrix4 mingfx::CraftCam::view_matrix ()
+
+ +

Access the camera view matrix created by the CraftCam interactions via this method and use it to draw the geometry in your scence. For example, within GraphicsApp::DrawUsingOpenGL(), you might have:

+
Matrix4 P = Matrix4::Perspective(30, aspect_ratio(), 1, 20);
+
Matrix4 V = cam.view_matrix();
+
Matrix4 M = Matrix4::RotateY(GfxMath::ToRadians(45.0));
+
quick_shapes.DrawCube(M, V, P, Color(1,1,1));
+
static float ToRadians(float degrees)
+
static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)
Returns a perspective projection matrix equivalent to the one gluPerspective creates.
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_default_shader-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader-members.html new file mode 100644 index 0000000..e68c9e0 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader-members.html @@ -0,0 +1,105 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::DefaultShader Member List
+
+
+ +

This is the complete list of members for mingfx::DefaultShader, including all inherited members.

+ + + + + + + + + + + + +
AddLight(LightProperties light)mingfx::DefaultShader
DefaultShader(bool add_default_light=true)mingfx::DefaultShader
Draw(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, Mesh *mesh, const MaterialProperties &material)mingfx::DefaultShader
Init()mingfx::DefaultShader
light(int i)mingfx::DefaultShader
MAX_LIGHTSmingfx::DefaultShaderstatic
num_lights()mingfx::DefaultShader
SetLight(int i, LightProperties light)mingfx::DefaultShader
StopProgram()mingfx::DefaultShader
UseProgram(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, const MaterialProperties &material)mingfx::DefaultShader
~DefaultShader()mingfx::DefaultShadervirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_default_shader.html b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader.html new file mode 100644 index 0000000..3787d3d --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader.html @@ -0,0 +1,465 @@ + + + + + + + +MinGfx Toolkit: mingfx::DefaultShader Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::DefaultShader Class Reference
+
+
+

Detailed Description

+

A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.

+

This can be used to draw 3D models stored in a mingfx::Mesh data structure or you can use it with your own geometry data structures. Lighting properties are stored within the class itself since these are considered part of the shading model. Material properties are considered properties of the meshes or other materials you wish to draw so these are stored outside of the class and passed into the Draw() or UseProgram() functions.

+

An example of using DefaultShader to render a mesh:

DefaultShader phong_shader;
+
Mesh teapot;
+
DefaultShader::MaterialProperties teapot_material;
+
+
void Init() {
+
// initialize the shader
+
DefaultShader::LightProperties red_light;
+
red_light.position = Point3(-10, 5, 5);
+
red_light.diffuseIntensity = Color(1,0,0);
+
phong_shader.AddLight(red_light);
+
+
// initialize the mesh
+
teapot.LoadFromOBJ(Platform::FindMinGfxDataFile("teapot.obj"));
+
}
+
+
void DrawUsingOpenGL() {
+
Matrix4 M;
+
Matrix4 V = Matrix4::LookAt(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0));
+
Matrix4 P = Matrix4::Perspective(60.0, aspect_ratio(), 0.1, 10.0);
+
phong_shader.Draw(M, V, P, teapot, teapot_material);
+
}
+
void Init()
This loads vertex and fragment shaders from files, compiles them, and links them. So,...
+
DefaultShader(bool add_default_light=true)
The constructor defaults to adding a single white light to the scene at (10,10,10)....
+
static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)
Returns a perspective projection matrix equivalent to the one gluPerspective creates.
+
static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)
Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...
+
static std::string FindMinGfxDataFile(const std::string &basename)
Searches for a data file that ships with MinGfx.
+
+

Definition at line 62 of file default_shader.h.

+
+

#include <default_shader.h>

+ + + + + + + + +

+Classes

class  LightProperties
 Small data structure to hold per-light properties. More...
 
class  MaterialProperties
 Small data structure to hold properties of the material to be lit. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DefaultShader (bool add_default_light=true)
 The constructor defaults to adding a single white light to the scene at (10,10,10). Change this by passing it 'false'. The constructor does not load and compile the shader right away. This is done inside Init(). More...
 
virtual ~DefaultShader ()
 
void AddLight (LightProperties light)
 Multiple lights are supported, this adds one to the end of the list. Up to MAX_LIGHTS can be added. More...
 
void SetLight (int i, LightProperties light)
 Changes the properties for a light that was already added. More...
 
void Init ()
 This loads vertex and fragment shaders from files, compiles them, and links them. So, it must be called from within an active OpenGL context, for example, from within GraphicsApp::Init() or GraphicsApp::DrawUsingOpenGL(). If you call Draw() before calling Init(), then Init() will be called as the first step within Draw(). So, if you do not mind a slowdown on the very first frame of your program, it is fine to skip calling Init(). More...
 
void Draw (const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, Mesh *mesh, const MaterialProperties &material)
 This starts the shader and sets its uniform variables based upon the current set of lights, the material properties passed in, and the model, view, and projection matrices. Then, it calls mesh->Draw(). After drawing, it disables the shader. More...
 
void UseProgram (const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, const MaterialProperties &material)
 Only needed if you do not want to draw a Mesh. This does all of the same setup for drawing that the Draw() function does and then it returns so that you may draw your own geometry however you want. After doing your draw must call StopProgram() to turn off the shader. More...
 
void StopProgram ()
 Only needed if you do not want to draw a Mesh. Call this after UseProgram() and after drawing your geometry to turn off the shader. More...
 
int num_lights ()
 
LightProperties light (int i)
 
+ + + + +

+Static Public Attributes

static const unsigned int MAX_LIGHTS = 10
 If changed, this needs to also be changed in the glsl shader code. More...
 
+

Constructor & Destructor Documentation

+ +

◆ DefaultShader()

+ +
+
+ + + + + + + + +
mingfx::DefaultShader::DefaultShader (bool add_default_light = true)
+
+ +

The constructor defaults to adding a single white light to the scene at (10,10,10). Change this by passing it 'false'. The constructor does not load and compile the shader right away. This is done inside Init().

+ +
+
+ +

◆ ~DefaultShader()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::DefaultShader::~DefaultShader ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ AddLight()

+ +
+
+ + + + + + + + +
void mingfx::DefaultShader::AddLight (LightProperties light)
+
+ +

Multiple lights are supported, this adds one to the end of the list. Up to MAX_LIGHTS can be added.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::DefaultShader::Draw (const Matrix4model,
const Matrix4view,
const Matrix4projection,
Meshmesh,
const MaterialPropertiesmaterial 
)
+
+ +

This starts the shader and sets its uniform variables based upon the current set of lights, the material properties passed in, and the model, view, and projection matrices. Then, it calls mesh->Draw(). After drawing, it disables the shader.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + +
void mingfx::DefaultShader::Init ()
+
+ +

This loads vertex and fragment shaders from files, compiles them, and links them. So, it must be called from within an active OpenGL context, for example, from within GraphicsApp::Init() or GraphicsApp::DrawUsingOpenGL(). If you call Draw() before calling Init(), then Init() will be called as the first step within Draw(). So, if you do not mind a slowdown on the very first frame of your program, it is fine to skip calling Init().

+ +
+
+ +

◆ light()

+ +
+
+ + + + + + + + +
LightProperties mingfx::DefaultShader::light (int i)
+
+ +
+
+ +

◆ num_lights()

+ +
+
+ + + + + + + +
int mingfx::DefaultShader::num_lights ()
+
+ +
+
+ +

◆ SetLight()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::DefaultShader::SetLight (int i,
LightProperties light 
)
+
+ +

Changes the properties for a light that was already added.

+ +
+
+ +

◆ StopProgram()

+ +
+
+ + + + + + + +
void mingfx::DefaultShader::StopProgram ()
+
+ +

Only needed if you do not want to draw a Mesh. Call this after UseProgram() and after drawing your geometry to turn off the shader.

+ +
+
+ +

◆ UseProgram()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::DefaultShader::UseProgram (const Matrix4model,
const Matrix4view,
const Matrix4projection,
const MaterialPropertiesmaterial 
)
+
+ +

Only needed if you do not want to draw a Mesh. This does all of the same setup for drawing that the Draw() function does and then it returns so that you may draw your own geometry however you want. After doing your draw must call StopProgram() to turn off the shader.

+ +
+
+

Member Data Documentation

+ +

◆ MAX_LIGHTS

+ +
+
+ + + + + +
+ + + + +
const unsigned int mingfx::DefaultShader::MAX_LIGHTS = 10
+
+static
+
+ +

If changed, this needs to also be changed in the glsl shader code.

+ +

Definition at line 66 of file default_shader.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties-members.html new file mode 100644 index 0000000..5eb35e8 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties-members.html @@ -0,0 +1,99 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::DefaultShader::LightProperties Member List
+
+
+ +

This is the complete list of members for mingfx::DefaultShader::LightProperties, including all inherited members.

+ + + + + + +
ambient_intensitymingfx::DefaultShader::LightProperties
diffuse_intensitymingfx::DefaultShader::LightProperties
LightProperties()mingfx::DefaultShader::LightPropertiesinline
positionmingfx::DefaultShader::LightProperties
specular_intensitymingfx::DefaultShader::LightProperties
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties.html b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties.html new file mode 100644 index 0000000..b2a402d --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_light_properties.html @@ -0,0 +1,214 @@ + + + + + + + +MinGfx Toolkit: mingfx::DefaultShader::LightProperties Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::DefaultShader::LightProperties Class Reference
+
+
+

Detailed Description

+

Small data structure to hold per-light properties.

+ +

Definition at line 88 of file default_shader.h.

+
+

#include <default_shader.h>

+ + + + +

+Public Member Functions

 LightProperties ()
 
+ + + + + + + + + +

+Public Attributes

Point3 position
 
Color ambient_intensity
 
Color diffuse_intensity
 
Color specular_intensity
 
+

Constructor & Destructor Documentation

+ +

◆ LightProperties()

+ +
+
+ + + + + +
+ + + + + + + +
mingfx::DefaultShader::LightProperties::LightProperties ()
+
+inline
+
+ +

Definition at line 96 of file default_shader.h.

+ +
+
+

Member Data Documentation

+ +

◆ ambient_intensity

+ +
+
+ + + + +
Color mingfx::DefaultShader::LightProperties::ambient_intensity
+
+ +

Definition at line 91 of file default_shader.h.

+ +
+
+ +

◆ diffuse_intensity

+ +
+
+ + + + +
Color mingfx::DefaultShader::LightProperties::diffuse_intensity
+
+ +

Definition at line 92 of file default_shader.h.

+ +
+
+ +

◆ position

+ +
+
+ + + + +
Point3 mingfx::DefaultShader::LightProperties::position
+
+ +

Definition at line 90 of file default_shader.h.

+ +
+
+ +

◆ specular_intensity

+ +
+
+ + + + +
Color mingfx::DefaultShader::LightProperties::specular_intensity
+
+ +

Definition at line 93 of file default_shader.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties-members.html new file mode 100644 index 0000000..83ee843 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties-members.html @@ -0,0 +1,100 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::DefaultShader::MaterialProperties Member List
+
+
+ +

This is the complete list of members for mingfx::DefaultShader::MaterialProperties, including all inherited members.

+ + + + + + + +
ambient_reflectancemingfx::DefaultShader::MaterialProperties
diffuse_reflectancemingfx::DefaultShader::MaterialProperties
MaterialProperties()mingfx::DefaultShader::MaterialPropertiesinline
shinninessmingfx::DefaultShader::MaterialProperties
specular_reflectancemingfx::DefaultShader::MaterialProperties
surface_texturemingfx::DefaultShader::MaterialProperties
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties.html b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties.html new file mode 100644 index 0000000..27400b1 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_default_shader_1_1_material_properties.html @@ -0,0 +1,232 @@ + + + + + + + +MinGfx Toolkit: mingfx::DefaultShader::MaterialProperties Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::DefaultShader::MaterialProperties Class Reference
+
+
+

Detailed Description

+

Small data structure to hold properties of the material to be lit.

+ +

Definition at line 70 of file default_shader.h.

+
+

#include <default_shader.h>

+ + + + +

+Public Member Functions

 MaterialProperties ()
 
+ + + + + + + + + + + +

+Public Attributes

Color ambient_reflectance
 
Color diffuse_reflectance
 
Color specular_reflectance
 
float shinniness
 
Texture2D surface_texture
 
+

Constructor & Destructor Documentation

+ +

◆ MaterialProperties()

+ +
+
+ + + + + +
+ + + + + + + +
mingfx::DefaultShader::MaterialProperties::MaterialProperties ()
+
+inline
+
+ +

Definition at line 80 of file default_shader.h.

+ +
+
+

Member Data Documentation

+ +

◆ ambient_reflectance

+ +
+
+ + + + +
Color mingfx::DefaultShader::MaterialProperties::ambient_reflectance
+
+ +

Definition at line 72 of file default_shader.h.

+ +
+
+ +

◆ diffuse_reflectance

+ +
+
+ + + + +
Color mingfx::DefaultShader::MaterialProperties::diffuse_reflectance
+
+ +

Definition at line 73 of file default_shader.h.

+ +
+
+ +

◆ shinniness

+ +
+
+ + + + +
float mingfx::DefaultShader::MaterialProperties::shinniness
+
+ +

Definition at line 75 of file default_shader.h.

+ +
+
+ +

◆ specular_reflectance

+ +
+
+ + + + +
Color mingfx::DefaultShader::MaterialProperties::specular_reflectance
+
+ +

Definition at line 74 of file default_shader.h.

+ +
+
+ +

◆ surface_texture

+ +
+
+ + + + +
Texture2D mingfx::DefaultShader::MaterialProperties::surface_texture
+
+ +

Definition at line 76 of file default_shader.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_gfx_math-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_gfx_math-members.html new file mode 100644 index 0000000..f0ee0f2 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_gfx_math-members.html @@ -0,0 +1,107 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::GfxMath Member List
+
+
+ +

This is the complete list of members for mingfx::GfxMath, including all inherited members.

+ + + + + + + + + + + + + + +
Clamp(float x, float a, float b)mingfx::GfxMathstatic
HALF_PImingfx::GfxMathstatic
iLerp(int a, int b, float alpha)mingfx::GfxMathstatic
Lerp(float a, float b, float alpha)mingfx::GfxMathstatic
PImingfx::GfxMathstatic
ScreenToDepthPlane(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt, float planeDepth)mingfx::GfxMathstatic
ScreenToNearPlane(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt)mingfx::GfxMathstatic
ScreenToWorld(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt, float normalizedZ)mingfx::GfxMathstatic
ToDegrees(float radians)mingfx::GfxMathstatic
ToDegrees(Vector3 radians)mingfx::GfxMathstatic
ToRadians(float degrees)mingfx::GfxMathstatic
ToRadians(Vector3 degrees)mingfx::GfxMathstatic
TWO_PImingfx::GfxMathstatic
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_gfx_math.html b/dev/MinGfx/docs/html/classmingfx_1_1_gfx_math.html new file mode 100644 index 0000000..938c08c --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_gfx_math.html @@ -0,0 +1,591 @@ + + + + + + + +MinGfx Toolkit: mingfx::GfxMath Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::GfxMath Class Reference
+
+
+

Detailed Description

+

This class holds a variety of static math functions that are useful to have defined with creating graphics programs.

+ +

Definition at line 28 of file gfxmath.h.

+
+

#include <gfxmath.h>

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

+Static Public Member Functions

static float Clamp (float x, float a, float b)
 Returns a if x is less than a and b if x is greater than b. More...
 
static float ToRadians (float degrees)
 
static float ToDegrees (float radians)
 
static Vector3 ToRadians (Vector3 degrees)
 
static Vector3 ToDegrees (Vector3 radians)
 
static float Lerp (float a, float b, float alpha)
 
static int iLerp (int a, int b, float alpha)
 
static Point3 ScreenToNearPlane (const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt)
 Converts a 2D point on the filmplane represented in Normalized Device Coorindates, which means (-1,1) for the top left corner of the screen and (1,-1) for the bottom right corner, to a 3D point that lies on the camera's near plane. Useful for converting mouse coordinates into a 3D point. Remember that this uses NORMALIZED device coordinates for the screenPt, not pixels. GraphicsApp and most other graphics engines report mouse move events in pixels, so you need to convert these to normalized device coordinates first. If you are using GraphicsApp, you can do this with: Point2 normPos = graphicsApp->pixels_to_normalized_coordinates(mousePos);. More...
 
static Point3 ScreenToDepthPlane (const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt, float planeDepth)
 Similar to filmplane2D_to_nearplane3D() but here rather than using the nearplane, you specify the depth of the plane to use as a distance away from the camera's focal point. More...
 
static Point3 ScreenToWorld (const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt, float normalizedZ)
 Converts a 2D point on the filmplane represented in Normalized Device Coorindates, which means (-1,1) for the top left corner of the screen and (1,-1) for the bottom right corner, to a 3D point in the world. The depth buffer value under the pixel must be supplied. If you are using GraphicsApp, you can use the mouse pos in pixels to get the required arguments like this: Point2 normPos = graphicsApp->pixels_to_normalized_coordinates(mousePos); float normZ = graphicsApp->z_value_at_pixel(mousePos);. More...
 
+ + + + + + + +

+Static Public Attributes

static const float PI
 
static const float TWO_PI
 
static const float HALF_PI
 
+

Member Function Documentation

+ +

◆ Clamp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static float mingfx::GfxMath::Clamp (float x,
float a,
float b 
)
+
+static
+
+ +

Returns a if x is less than a and b if x is greater than b.

+ +
+
+ +

◆ iLerp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int mingfx::GfxMath::iLerp (int a,
int b,
float alpha 
)
+
+static
+
+ +
+
+ +

◆ Lerp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static float mingfx::GfxMath::Lerp (float a,
float b,
float alpha 
)
+
+static
+
+ +
+
+ +

◆ ScreenToDepthPlane()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Point3 mingfx::GfxMath::ScreenToDepthPlane (const Matrix4viewMatrix,
const Matrix4projMatrix,
const Point2normalizedScreenPt,
float planeDepth 
)
+
+static
+
+ +

Similar to filmplane2D_to_nearplane3D() but here rather than using the nearplane, you specify the depth of the plane to use as a distance away from the camera's focal point.

+ +
+
+ +

◆ ScreenToNearPlane()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Point3 mingfx::GfxMath::ScreenToNearPlane (const Matrix4viewMatrix,
const Matrix4projMatrix,
const Point2normalizedScreenPt 
)
+
+static
+
+ +

Converts a 2D point on the filmplane represented in Normalized Device Coorindates, which means (-1,1) for the top left corner of the screen and (1,-1) for the bottom right corner, to a 3D point that lies on the camera's near plane. Useful for converting mouse coordinates into a 3D point. Remember that this uses NORMALIZED device coordinates for the screenPt, not pixels. GraphicsApp and most other graphics engines report mouse move events in pixels, so you need to convert these to normalized device coordinates first. If you are using GraphicsApp, you can do this with: Point2 normPos = graphicsApp->pixels_to_normalized_coordinates(mousePos);.

+ +
+
+ +

◆ ScreenToWorld()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Point3 mingfx::GfxMath::ScreenToWorld (const Matrix4viewMatrix,
const Matrix4projMatrix,
const Point2normalizedScreenPt,
float normalizedZ 
)
+
+static
+
+ +

Converts a 2D point on the filmplane represented in Normalized Device Coorindates, which means (-1,1) for the top left corner of the screen and (1,-1) for the bottom right corner, to a 3D point in the world. The depth buffer value under the pixel must be supplied. If you are using GraphicsApp, you can use the mouse pos in pixels to get the required arguments like this: Point2 normPos = graphicsApp->pixels_to_normalized_coordinates(mousePos); float normZ = graphicsApp->z_value_at_pixel(mousePos);.

+ +
+
+ +

◆ ToDegrees() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static float mingfx::GfxMath::ToDegrees (float radians)
+
+static
+
+ +
+
+ +

◆ ToDegrees() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static Vector3 mingfx::GfxMath::ToDegrees (Vector3 radians)
+
+static
+
+ +
+
+ +

◆ ToRadians() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static float mingfx::GfxMath::ToRadians (float degrees)
+
+static
+
+ +
+
+ +

◆ ToRadians() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static Vector3 mingfx::GfxMath::ToRadians (Vector3 degrees)
+
+static
+
+ +
+
+

Member Data Documentation

+ +

◆ HALF_PI

+ +
+
+ + + + + +
+ + + + +
const float mingfx::GfxMath::HALF_PI
+
+static
+
+ +

Definition at line 74 of file gfxmath.h.

+ +
+
+ +

◆ PI

+ +
+
+ + + + + +
+ + + + +
const float mingfx::GfxMath::PI
+
+static
+
+ +

Definition at line 72 of file gfxmath.h.

+ +
+
+ +

◆ TWO_PI

+ +
+
+ + + + + +
+ + + + +
const float mingfx::GfxMath::TWO_PI
+
+static
+
+ +

Definition at line 73 of file gfxmath.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_graphics_app-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_graphics_app-members.html new file mode 100644 index 0000000..d8ef647 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_graphics_app-members.html @@ -0,0 +1,137 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::GraphicsApp Member List
+
+
+ +

This is the complete list of members for mingfx::GraphicsApp, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aspect_ratio()mingfx::GraphicsAppvirtual
DrawUsingNanoVG(NVGcontext *ctx)mingfx::GraphicsAppinlinevirtual
DrawUsingOpenGL()mingfx::GraphicsAppinlinevirtual
framebuffer_height()mingfx::GraphicsAppvirtual
framebuffer_width()mingfx::GraphicsAppvirtual
GraphicsApp(int width, int height, const std::string &caption)mingfx::GraphicsApp
InitGraphicsContext()mingfx::GraphicsAppvirtual
InitNanoGUI()mingfx::GraphicsAppinlinevirtual
InitOpenGL()mingfx::GraphicsAppinlinevirtual
IsKeyDown(int key)mingfx::GraphicsAppvirtual
IsLeftMouseDown()mingfx::GraphicsAppvirtual
IsMiddleMouseDown()mingfx::GraphicsAppvirtual
IsRightMouseDown()mingfx::GraphicsAppvirtual
NormalizedDeviceCoordsToPixels(const Point2 &pointInNDC)mingfx::GraphicsAppvirtual
NormalizedDeviceCoordsToPixels(const Vector2 &pointInNDC)mingfx::GraphicsAppvirtual
OnKeyDown(const char *c, int modifiers)mingfx::GraphicsAppinlinevirtual
OnKeyRepeat(const char *c, int modifiers)mingfx::GraphicsAppinlinevirtual
OnKeyUp(const char *c, int modifiers)mingfx::GraphicsAppinlinevirtual
OnLeftMouseDown(const Point2 &pos)mingfx::GraphicsAppinlinevirtual
OnLeftMouseDrag(const Point2 &pos, const Vector2 &delta)mingfx::GraphicsAppinlinevirtual
OnLeftMouseUp(const Point2 &pos)mingfx::GraphicsAppinlinevirtual
OnMiddleMouseDown(const Point2 &pos)mingfx::GraphicsAppinlinevirtual
OnMiddleMouseDrag(const Point2 &pos, const Vector2 &delta)mingfx::GraphicsAppinlinevirtual
OnMiddleMouseUp(const Point2 &pos)mingfx::GraphicsAppinlinevirtual
OnMouseMove(const Point2 &pos, const Vector2 &delta)mingfx::GraphicsAppinlinevirtual
OnRightMouseDown(const Point2 &pos)mingfx::GraphicsAppinlinevirtual
OnRightMouseDrag(const Point2 &pos, const Vector2 &delta)mingfx::GraphicsAppinlinevirtual
OnRightMouseUp(const Point2 &pos)mingfx::GraphicsAppinlinevirtual
OnSpecialKeyDown(int key, int scancode, int modifiers)mingfx::GraphicsAppinlinevirtual
OnSpecialKeyRepeat(int key, int scancode, int modifiers)mingfx::GraphicsAppinlinevirtual
OnSpecialKeyUp(int key, int scancode, int modifiers)mingfx::GraphicsAppinlinevirtual
OnWindowResize(int new_width, int new_height)mingfx::GraphicsAppinlinevirtual
PixelsToNormalizedDeviceCoords(const Point2 &pointInPixels)mingfx::GraphicsAppvirtual
PixelsToNormalizedDeviceCoords(const Vector2 &vectorInPixels)mingfx::GraphicsAppvirtual
ReadZValueAtPixel(const Point2 &pointInPixels, unsigned int whichBuffer=GL_BACK)mingfx::GraphicsAppvirtual
ResizeWindow(int new_width, int new_height)mingfx::GraphicsAppvirtual
Run()mingfx::GraphicsAppvirtual
screen()mingfx::GraphicsAppvirtual
UpdateSimulation(double dt)mingfx::GraphicsAppinlinevirtual
window()mingfx::GraphicsAppvirtual
window_height()mingfx::GraphicsAppvirtual
window_width()mingfx::GraphicsAppvirtual
~GraphicsApp()mingfx::GraphicsAppvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_graphics_app.html b/dev/MinGfx/docs/html/classmingfx_1_1_graphics_app.html new file mode 100644 index 0000000..15fe349 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_graphics_app.html @@ -0,0 +1,1837 @@ + + + + + + + +MinGfx Toolkit: mingfx::GraphicsApp Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::GraphicsApp Class Reference
+
+
+

Detailed Description

+

This is the main application base class for the MinGfx Toolkit.

+


+

+

Create a Subclass:

+

To create your own graphics application, you should create a subclass of GraphicsApp and then override some key functions:

+
    +
  1. User Input: To get input from the keyboard and mouse, override OnMouseMove() and/or the other On...() functions.
  2. +
  3. Drawing Graphics: To draw graphics override one or more of the Draw*() functions.
      +
    • DrawUsingNanoVG() is the right place to make 2D drawing calls using the nanovg library.
    • +
    • DrawUsingOpenGL() is the right place to make 2D or 3D drawing calls using OpenGL. This includes drawing using the Mesh, QuickShapes, DefaultShader, ShaderProgram, and all other MinGfx classes since these are all based on OpenGL.
    • +
    • InitNanoGUI() is the right place to create nanogui windows to add a 2D user interface to your app.
    • +
    • InitOpenGL() is the right place to load textures, meshes, shaders, and other graphics objects that can only be created after the OpenGL context exists.
    • +
    +
  4. +
  5. Physics, Animation, AI, etc.: Override the UpdateSimulation() function to do other non-graphics calculations required by your program. This is called automatically once per frame.
  6. +
+

Keep in mind that internally the app uses a rendering loop that looks something like this:

InitNanoGUI(); // your hook for initializing NanoGUI widgets
+
InitOpenGL(); // your hook for initializing OpenGL graphics
+
while (!program_ready_to_close) {
+
// user input
+
internal_get_input_events_from_operating_system();
+
OnMouseMove(); // your hook for processing input
+
On*(); // all other event callbacks -- your hook for processing input
+
+
// phyics, etc.
+
UpdateSimulation(); // your hook for physics, animation, AI, etc.
+
+
// draw graphics
+
internal_render_gui_elements_using_nanogui();
+
DrawUsingNanoVG(); // your hook for drawing 2D vector graphics
+
DrawUsingOpenGL(); // your hook for 2D/3D rendering with OpenGL
+
}
+
virtual void OnMouseMove(const Point2 &pos, const Vector2 &delta)
If the mouse has moved in the past frame and no mouse buttons are currently pressed,...
Definition: graphics_app.h:165
+
virtual void DrawUsingOpenGL()
Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.
Definition: graphics_app.h:317
+
virtual void DrawUsingNanoVG(NVGcontext *ctx)
Override this to draw graphics using the nanovg vector graphics library, which provides an easy way t...
Definition: graphics_app.h:311
+
virtual void InitOpenGL()
Override this to initialize the OpenGL context with textures, vertex buffers, etc.
Definition: graphics_app.h:297
+
virtual void UpdateSimulation(double dt)
Called once per frame.
Definition: graphics_app.h:306
+
virtual void InitNanoGUI()
Called at the beginning of the Run() method.
Definition: graphics_app.h:284
+

A Complete Example with GUI Widgets

+

If you wish to add some buttons, sliders, etc. in your application, you can do this inside GraphicsApp by accessing the NanoGUI library. You will need to pass NanoGUI a nanogui::screen object, which you can get from the screen() function. NanoGui setup should be done in the constructor, like this:

#include <mingfx.h>
+
using namespace mingfx;
+
+
class MyApp : public GraphcisApp {
+
public:
+
MyApp() : GraphicsApp(1024,768, "My Amazing App") {
+
}
+
+
virtual ~MyApp() {}
+
+
void InitNanoGUI() {
+
// Setup the GUI window
+
nanogui::Window *window = new nanogui::Window(screen(), "My GUI Panel");
+
window->setPosition(Eigen::Vector2i(10, 10));
+
window->setSize(Eigen::Vector2i(400,200));
+
window->setLayout(new nanogui::GroupLayout());
+
+
nanogui::Button pause_btn = new nanogui::Button(window, "Pause");
+
pause_btn->setCallback(std::bind(&MyApp::OnPauseBtnPressed, this));
+
pause_btn->setTooltip("Toggle playback.");
+
+
screen()->performLayout();
+
}
+
+
void InitOpenGL() {
+
glClearColor(0.0, 0.0, 0.0, 1);
+
}
+
+
// this callback is for the nanogui pause_btn defined above
+
void OnPauseBtnPressed() {
+
std::cout << "Pause pressed." << std::endl;
+
}
+
+
// this callback is built into the base GraphicsApp class
+
void OnMouseMove(const Point2 &pos, const Vector2 &delta) {
+
std::cout << "Mouse moved to " << pos << std::endl;
+
}
+
+
void DrawUsingOpenGL() {
+
Matrix4 model = Matrix4::Translation(Vector3(-1,0,0)) * Matrix4::Scale(Vector3(0.5, 0.5, 0.5));
+
Matrix4 view = Matrix4::LookAt(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0));
+
Matrix4 proj = Matrix4::Perspective(60.0, aspect_ratio(), 0.1, 10.0);
+
quick_shapes_.DrawCube(model, view, proj, Color(1,1,1));
+
}
+
+
private:
+
QuickShapes quick_shapes_;
+
};
+
+
+
int main(int argc, const char *argv[]) {
+
MyApp app;
+
app.Run();
+
return 0;
+
}
+
virtual GLFWwindow * window()
Access to the underlying GLFWwindow object.
+
GraphicsApp(int width, int height, const std::string &caption)
Constructs a new app but does not yet run it.
+
virtual float aspect_ratio()
Returns width/height for the current shape of the window.
+
virtual nanogui::Screen * screen()
Access to the underlying NanoGUI Screen object.
+
static Matrix4 Scale(const Vector3 &v)
Returns the scale matrix described by the vector.
+
static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)
Returns a perspective projection matrix equivalent to the one gluPerspective creates.
+
static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)
Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...
+
static Matrix4 Translation(const Vector3 &v)
Returns the translation matrix described by the vector.
+
Includes the entire MinGfx library and calls using namespace mingfx.
+
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+
+

Definition at line 135 of file graphics_app.h.

+
+

#include <graphics_app.h>

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

+Public Member Functions

 GraphicsApp (int width, int height, const std::string &caption)
 Constructs a new app but does not yet run it. More...
 
virtual ~GraphicsApp ()
 The destructor will shutdown the graphics system and window. More...
 
virtual void OnMouseMove (const Point2 &pos, const Vector2 &delta)
 If the mouse has moved in the past frame and no mouse buttons are currently pressed, then this callback function will be called to report the new position of the mouse to you. More...
 
virtual void OnLeftMouseDown (const Point2 &pos)
 If the mouse button was pressed down since the last frame, then this function will be called to notify you. More...
 
virtual void OnLeftMouseDrag (const Point2 &pos, const Vector2 &delta)
 If the mouse button is held down and the mouse has moved in the past frame then this function will be called to tell you that a "dragging" operation is happening. More...
 
virtual void OnLeftMouseUp (const Point2 &pos)
 If the mouse button was released since the last frame, then this function will be called to notify you. More...
 
virtual void OnMiddleMouseDown (const Point2 &pos)
 If the mouse button was pressed down since the last frame, then this function will be called to notify you. More...
 
virtual void OnMiddleMouseDrag (const Point2 &pos, const Vector2 &delta)
 If the mouse button is held down and the mouse has moved in the past frame then this function will be called to tell you that a "dragging" operation is happening. More...
 
virtual void OnMiddleMouseUp (const Point2 &pos)
 If the mouse button was released since the last frame, then this function will be called to notify you. More...
 
virtual void OnRightMouseDown (const Point2 &pos)
 If the mouse button was pressed down since the last frame, then this function will be called to notify you. More...
 
virtual void OnRightMouseDrag (const Point2 &pos, const Vector2 &delta)
 If the mouse button is held down and the mouse has moved in the past frame then this function will be called to tell you that a "dragging" operation is happening. More...
 
virtual void OnRightMouseUp (const Point2 &pos)
 If the mouse button was released since the last frame, then this function will be called to notify you. More...
 
virtual void OnKeyDown (const char *c, int modifiers)
 Transforms a keyboard down event into the actual character typed. More...
 
virtual void OnKeyRepeat (const char *c, int modifiers)
 Transforms a keyboard repeat event into the actual character typed. More...
 
virtual void OnKeyUp (const char *c, int modifiers)
 Transforms a keyboard up event into the actual character typed. More...
 
virtual void OnSpecialKeyDown (int key, int scancode, int modifiers)
 The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/group__keys.html. More...
 
virtual void OnSpecialKeyRepeat (int key, int scancode, int modifiers)
 The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/group__keys.html. More...
 
virtual void OnSpecialKeyUp (int key, int scancode, int modifiers)
 The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/group__keys.html. More...
 
virtual void OnWindowResize (int new_width, int new_height)
 Override this to respond when the graphics window and/or framebuffer are resized, either by the user dragging the window or through a call to ResizeWindow(). More...
 
virtual void Run ()
 After creating a new GraphicsApp, call this to start the app's mainloop. More...
 
virtual void InitNanoGUI ()
 Called at the beginning of the Run() method. More...
 
virtual void InitOpenGL ()
 Override this to initialize the OpenGL context with textures, vertex buffers, etc. More...
 
virtual void UpdateSimulation (double dt)
 Called once per frame. More...
 
virtual void DrawUsingNanoVG (NVGcontext *ctx)
 Override this to draw graphics using the nanovg vector graphics library, which provides an easy way to draw 2D shapes to the screen. More...
 
virtual void DrawUsingOpenGL ()
 Override this to draw graphics using raw OpenGL 2D or 3D graphics calls. More...
 
virtual bool IsKeyDown (int key)
 True if the specified is is currently held down. Uses the GLFW key codes found here: http://www.glfw.org/docs/latest/group__keys.html. More...
 
virtual bool IsLeftMouseDown ()
 True if the left mouse button is currently held down. More...
 
virtual bool IsMiddleMouseDown ()
 True if the middle mouse button is currently held down. More...
 
virtual bool IsRightMouseDown ()
 True if the right mouse button is currently held down. More...
 
virtual int window_width ()
 Returns the current width of the client area of the window in pixels. More...
 
virtual int window_height ()
 Returns the current height of the client area of the window in pixels. More...
 
virtual int framebuffer_width ()
 Returns the current width of the framebuffer in pixels. More...
 
virtual int framebuffer_height ()
 Returns the current height of the framebuffer in pixels. More...
 
virtual float aspect_ratio ()
 Returns width/height for the current shape of the window. More...
 
virtual Point2 PixelsToNormalizedDeviceCoords (const Point2 &pointInPixels)
 Transforms a point in viewport coordinates (pixels where top left = (0,0) and bottom right = (window_width()-1, window_height()-1)) to normalized device coordinates, (top left = (-1,1) bottom right (1,-1)). More...
 
virtual Point2 NormalizedDeviceCoordsToPixels (const Point2 &pointInNDC)
 Transforms a point in normalized device coordinates (top left = (-1,1) bottom right (1,-1)) to pixels (top left = (0,0), bottom right = (window width-1, window height-1)) More...
 
virtual Vector2 PixelsToNormalizedDeviceCoords (const Vector2 &vectorInPixels)
 Transforms a vector in viewport coordinates (pixels where top left = (0,0) and bottom right = (window width-1, window height-1)) to normalized device coordinates, (top left = (-1,1) bottom right (1,-1)). More...
 
virtual Vector2 NormalizedDeviceCoordsToPixels (const Vector2 &pointInNDC)
 Transforms a vector in normalized device coordinates (top left = (-1,1) bottom right (1,-1)) to pixels (top left = (0,0), bottom right = (window width-1, window height-1)) More...
 
virtual float ReadZValueAtPixel (const Point2 &pointInPixels, unsigned int whichBuffer=GL_BACK)
 Returns the z buffer value under the specified pixel. z will be 0 at the near plane and +1 at the far plane. More...
 
virtual nanogui::Screen * screen ()
 Access to the underlying NanoGUI Screen object. More...
 
virtual GLFWwindow * window ()
 Access to the underlying GLFWwindow object. More...
 
virtual void ResizeWindow (int new_width, int new_height)
 Cause the graphics windows to resize programmatically rather than by dragging on the corner manually. More...
 
virtual void InitGraphicsContext ()
 Users cannot make any graphics calls (e.g., setting the clear color, saving mesh data to the GPU) until the graphics context is initialized by calling this method. More...
 
+

Constructor & Destructor Documentation

+ +

◆ GraphicsApp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
mingfx::GraphicsApp::GraphicsApp (int width,
int height,
const std::string & caption 
)
+
+ +

Constructs a new app but does not yet run it.

+
Parameters
+ + + + +
widthThe width of the client area of the window in pixels.
heightThe height of the client area of the window in pixels.
captionThe caption for the window's title bar.
+
+
+ +
+
+ +

◆ ~GraphicsApp()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::GraphicsApp::~GraphicsApp ()
+
+virtual
+
+ +

The destructor will shutdown the graphics system and window.

+ +
+
+

Member Function Documentation

+ +

◆ aspect_ratio()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float mingfx::GraphicsApp::aspect_ratio ()
+
+virtual
+
+ +

Returns width/height for the current shape of the window.

+ +
+
+ +

◆ DrawUsingNanoVG()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mingfx::GraphicsApp::DrawUsingNanoVG (NVGcontext * ctx)
+
+inlinevirtual
+
+ +

Override this to draw graphics using the nanovg vector graphics library, which provides an easy way to draw 2D shapes to the screen.

+ +

Definition at line 311 of file graphics_app.h.

+ +
+
+ +

◆ DrawUsingOpenGL()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void mingfx::GraphicsApp::DrawUsingOpenGL ()
+
+inlinevirtual
+
+ +

Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.

+ +

Definition at line 317 of file graphics_app.h.

+ +
+
+ +

◆ framebuffer_height()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int mingfx::GraphicsApp::framebuffer_height ()
+
+virtual
+
+ +

Returns the current height of the framebuffer in pixels.

+

Note that on some displays (e.g., Mac Retina) the framebuffer is larger than the window.

+ +
+
+ +

◆ framebuffer_width()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int mingfx::GraphicsApp::framebuffer_width ()
+
+virtual
+
+ +

Returns the current width of the framebuffer in pixels.

+

Note that on some displays (e.g., Mac Retina) the framebuffer is larger than the window.

+ +
+
+ +

◆ InitGraphicsContext()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void mingfx::GraphicsApp::InitGraphicsContext ()
+
+virtual
+
+ +

Users cannot make any graphics calls (e.g., setting the clear color, saving mesh data to the GPU) until the graphics context is initialized by calling this method.

+

It is called automatically by the Run() method before calling the InitNanoGUI() and InitOpenGL() methods. So, users should place all of their graphics initialization code inside one of those two methods.

+ +
+
+ +

◆ InitNanoGUI()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void mingfx::GraphicsApp::InitNanoGUI ()
+
+inlinevirtual
+
+ +

Called at the beginning of the Run() method.

+

Override this to initialize any NanoGUI graphics related properties including 2D windows, buttons, sliders, etc...

+

IMPORTANT: Put any NanoGUI initialization code here, NOT in the constructors of the classes that you create, or, create your classes from within this function. The graphics calls will fail if the OpenGL context has not yet been initialized, and it is not guaranteed to be initialized until this function has been called.

+ +

Definition at line 284 of file graphics_app.h.

+ +
+
+ +

◆ InitOpenGL()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void mingfx::GraphicsApp::InitOpenGL ()
+
+inlinevirtual
+
+ +

Override this to initialize the OpenGL context with textures, vertex buffers, etc.

+

that you will use later inside DrawUsingOpenGL(). This InitOpenGL() function is called once on program startup just after the OpenGL drawing context is created.

+

IMPORTANT: Put any OpenGL initialization code here, NOT in the constructors of the classes that you create, or, create your classes from within this function. The graphics calls will fail if the OpenGL context has not yet been initialized, and it is not guaranteed to be initialized until this function has been called.

+ +

Definition at line 297 of file graphics_app.h.

+ +
+
+ +

◆ IsKeyDown()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mingfx::GraphicsApp::IsKeyDown (int key)
+
+virtual
+
+ +

True if the specified is is currently held down. Uses the GLFW key codes found here: http://www.glfw.org/docs/latest/group__keys.html.

+ +
+
+ +

◆ IsLeftMouseDown()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool mingfx::GraphicsApp::IsLeftMouseDown ()
+
+virtual
+
+ +

True if the left mouse button is currently held down.

+ +
+
+ +

◆ IsMiddleMouseDown()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool mingfx::GraphicsApp::IsMiddleMouseDown ()
+
+virtual
+
+ +

True if the middle mouse button is currently held down.

+ +
+
+ +

◆ IsRightMouseDown()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool mingfx::GraphicsApp::IsRightMouseDown ()
+
+virtual
+
+ +

True if the right mouse button is currently held down.

+ +
+
+ +

◆ NormalizedDeviceCoordsToPixels() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Point2 mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels (const Point2pointInNDC)
+
+virtual
+
+ +

Transforms a point in normalized device coordinates (top left = (-1,1) bottom right (1,-1)) to pixels (top left = (0,0), bottom right = (window width-1, window height-1))

+ +
+
+ +

◆ NormalizedDeviceCoordsToPixels() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vector2 mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels (const Vector2pointInNDC)
+
+virtual
+
+ +

Transforms a vector in normalized device coordinates (top left = (-1,1) bottom right (1,-1)) to pixels (top left = (0,0), bottom right = (window width-1, window height-1))

+ +
+
+ +

◆ OnKeyDown()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnKeyDown (const char * c,
int modifiers 
)
+
+inlinevirtual
+
+ +

Transforms a keyboard down event into the actual character typed.

+
Parameters
+ + + +
cThe character for the key that was pressed.
modifiersIf any modifiers (Alt, Ctrl, Shift, etc.) were held at the same time, then these are encoded in this int. See the detailed description here: http://www.glfw.org/docs/latest/group__mods.html
+
+
+ +

Definition at line 225 of file graphics_app.h.

+ +
+
+ +

◆ OnKeyRepeat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnKeyRepeat (const char * c,
int modifiers 
)
+
+inlinevirtual
+
+ +

Transforms a keyboard repeat event into the actual character typed.

+
Parameters
+ + + +
cThe character for the key that was pressed.
modifiersIf any modifiers (Alt, Ctrl, Shift, etc.) were held at the same time, then these are encoded in this int. See the detailed description here: http://www.glfw.org/docs/latest/group__mods.html
+
+
+ +

Definition at line 233 of file graphics_app.h.

+ +
+
+ +

◆ OnKeyUp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnKeyUp (const char * c,
int modifiers 
)
+
+inlinevirtual
+
+ +

Transforms a keyboard up event into the actual character typed.

+
Parameters
+ + + +
cThe character for the key that was pressed.
modifiersIf any modifiers (Alt, Ctrl, Shift, etc.) were held at the same time, then these are encoded in this int. See the detailed description here: http://www.glfw.org/docs/latest/group__mods.html
+
+
+ +

Definition at line 241 of file graphics_app.h.

+ +
+
+ +

◆ OnLeftMouseDown()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mingfx::GraphicsApp::OnLeftMouseDown (const Point2pos)
+
+inlinevirtual
+
+ +

If the mouse button was pressed down since the last frame, then this function will be called to notify you.

+
Parameters
+ + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width(), window_height()) is the bottom right corner.
+
+
+ +

Definition at line 174 of file graphics_app.h.

+ +
+
+ +

◆ OnLeftMouseDrag()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnLeftMouseDrag (const Point2pos,
const Vector2delta 
)
+
+inlinevirtual
+
+ +

If the mouse button is held down and the mouse has moved in the past frame then this function will be called to tell you that a "dragging" operation is happening.

+
Parameters
+ + + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width(), window_height()) is the bottom right corner.
deltaThis is the change in the position of the mouse in pixels since the last frame.
+
+
+ +

Definition at line 187 of file graphics_app.h.

+ +
+
+ +

◆ OnLeftMouseUp()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mingfx::GraphicsApp::OnLeftMouseUp (const Point2pos)
+
+inlinevirtual
+
+ +

If the mouse button was released since the last frame, then this function will be called to notify you.

+
Parameters
+ + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width()-1, window_height()-1) is the bottom right corner.
+
+
+ +

Definition at line 196 of file graphics_app.h.

+ +
+
+ +

◆ OnMiddleMouseDown()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mingfx::GraphicsApp::OnMiddleMouseDown (const Point2pos)
+
+inlinevirtual
+
+ +

If the mouse button was pressed down since the last frame, then this function will be called to notify you.

+
Parameters
+ + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width(), window_height()) is the bottom right corner.
+
+
+ +

Definition at line 200 of file graphics_app.h.

+ +
+
+ +

◆ OnMiddleMouseDrag()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnMiddleMouseDrag (const Point2pos,
const Vector2delta 
)
+
+inlinevirtual
+
+ +

If the mouse button is held down and the mouse has moved in the past frame then this function will be called to tell you that a "dragging" operation is happening.

+
Parameters
+ + + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width(), window_height()) is the bottom right corner.
deltaThis is the change in the position of the mouse in pixels since the last frame.
+
+
+ +

Definition at line 203 of file graphics_app.h.

+ +
+
+ +

◆ OnMiddleMouseUp()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mingfx::GraphicsApp::OnMiddleMouseUp (const Point2pos)
+
+inlinevirtual
+
+ +

If the mouse button was released since the last frame, then this function will be called to notify you.

+
Parameters
+ + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width()-1, window_height()-1) is the bottom right corner.
+
+
+ +

Definition at line 206 of file graphics_app.h.

+ +
+
+ +

◆ OnMouseMove()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnMouseMove (const Point2pos,
const Vector2delta 
)
+
+inlinevirtual
+
+ +

If the mouse has moved in the past frame and no mouse buttons are currently pressed, then this callback function will be called to report the new position of the mouse to you.

+
Parameters
+ + + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width(), window_height()) is the bottom right corner.
deltaThis is the change in the position of the mouse in pixels since the last frame.
+
+
+ +

Definition at line 165 of file graphics_app.h.

+ +
+
+ +

◆ OnRightMouseDown()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mingfx::GraphicsApp::OnRightMouseDown (const Point2pos)
+
+inlinevirtual
+
+ +

If the mouse button was pressed down since the last frame, then this function will be called to notify you.

+
Parameters
+ + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width(), window_height()) is the bottom right corner.
+
+
+ +

Definition at line 210 of file graphics_app.h.

+ +
+
+ +

◆ OnRightMouseDrag()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnRightMouseDrag (const Point2pos,
const Vector2delta 
)
+
+inlinevirtual
+
+ +

If the mouse button is held down and the mouse has moved in the past frame then this function will be called to tell you that a "dragging" operation is happening.

+
Parameters
+ + + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width(), window_height()) is the bottom right corner.
deltaThis is the change in the position of the mouse in pixels since the last frame.
+
+
+ +

Definition at line 213 of file graphics_app.h.

+ +
+
+ +

◆ OnRightMouseUp()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mingfx::GraphicsApp::OnRightMouseUp (const Point2pos)
+
+inlinevirtual
+
+ +

If the mouse button was released since the last frame, then this function will be called to notify you.

+
Parameters
+ + +
posThis is the current position of the mouse in pixels, where (0,0) is at the top left corner of the screen and (window_width()-1, window_height()-1) is the bottom right corner.
+
+
+ +

Definition at line 216 of file graphics_app.h.

+ +
+
+ +

◆ OnSpecialKeyDown()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnSpecialKeyDown (int key,
int scancode,
int modifiers 
)
+
+inlinevirtual
+
+ +

The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/group__keys.html.

+ +

Definition at line 247 of file graphics_app.h.

+ +
+
+ +

◆ OnSpecialKeyRepeat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnSpecialKeyRepeat (int key,
int scancode,
int modifiers 
)
+
+inlinevirtual
+
+ +

The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/group__keys.html.

+ +

Definition at line 251 of file graphics_app.h.

+ +
+
+ +

◆ OnSpecialKeyUp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnSpecialKeyUp (int key,
int scancode,
int modifiers 
)
+
+inlinevirtual
+
+ +

The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/group__keys.html.

+ +

Definition at line 255 of file graphics_app.h.

+ +
+
+ +

◆ OnWindowResize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::OnWindowResize (int new_width,
int new_height 
)
+
+inlinevirtual
+
+ +

Override this to respond when the graphics window and/or framebuffer are resized, either by the user dragging the window or through a call to ResizeWindow().

+ +

Definition at line 261 of file graphics_app.h.

+ +
+
+ +

◆ PixelsToNormalizedDeviceCoords() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Point2 mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords (const Point2pointInPixels)
+
+virtual
+
+ +

Transforms a point in viewport coordinates (pixels where top left = (0,0) and bottom right = (window_width()-1, window_height()-1)) to normalized device coordinates, (top left = (-1,1) bottom right (1,-1)).

+ +
+
+ +

◆ PixelsToNormalizedDeviceCoords() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vector2 mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords (const Vector2vectorInPixels)
+
+virtual
+
+ +

Transforms a vector in viewport coordinates (pixels where top left = (0,0) and bottom right = (window width-1, window height-1)) to normalized device coordinates, (top left = (-1,1) bottom right (1,-1)).

+ +
+
+ +

◆ ReadZValueAtPixel()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual float mingfx::GraphicsApp::ReadZValueAtPixel (const Point2pointInPixels,
unsigned int whichBuffer = GL_BACK 
)
+
+virtual
+
+ +

Returns the z buffer value under the specified pixel. z will be 0 at the near plane and +1 at the far plane.

+ +
+
+ +

◆ ResizeWindow()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mingfx::GraphicsApp::ResizeWindow (int new_width,
int new_height 
)
+
+virtual
+
+ +

Cause the graphics windows to resize programmatically rather than by dragging on the corner manually.

+ +
+
+ +

◆ Run()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void mingfx::GraphicsApp::Run ()
+
+virtual
+
+ +

After creating a new GraphicsApp, call this to start the app's mainloop.

+

Each time through the mainloop the app will: 1. respond any user input events by calling the On*() callback methods, 2. call UpdateSimulation(), and 3. call the two Draw*() methods. Note that Run() does not return until the user closes the app and the program is ready to shutdown.

+ +
+
+ +

◆ screen()

+ +
+
+ + + + + +
+ + + + + + + +
virtual nanogui::Screen* mingfx::GraphicsApp::screen ()
+
+virtual
+
+ +

Access to the underlying NanoGUI Screen object.

+ +
+
+ +

◆ UpdateSimulation()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mingfx::GraphicsApp::UpdateSimulation (double dt)
+
+inlinevirtual
+
+ +

Called once per frame.

+

Override this and fill it in to update your simulation code or any other updates you need to make to your model that are timed rather than in response to user input.

+
Parameters
+ + +
dtis the elapsed time since the last call.
+
+
+ +

Definition at line 306 of file graphics_app.h.

+ +
+
+ +

◆ window()

+ +
+
+ + + + + +
+ + + + + + + +
virtual GLFWwindow* mingfx::GraphicsApp::window ()
+
+virtual
+
+ +

Access to the underlying GLFWwindow object.

+ +
+
+ +

◆ window_height()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int mingfx::GraphicsApp::window_height ()
+
+virtual
+
+ +

Returns the current height of the client area of the window in pixels.

+ +
+
+ +

◆ window_width()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int mingfx::GraphicsApp::window_width ()
+
+virtual
+
+ +

Returns the current width of the client area of the window in pixels.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_matrix4-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_matrix4-members.html new file mode 100644 index 0000000..4b96bca --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_matrix4-members.html @@ -0,0 +1,127 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Matrix4 Member List
+
+
+ +

This is the complete list of members for mingfx::Matrix4, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Align(const Point3 &a_p, const Vector3 &a_v1, const Vector3 &a_v2, const Point3 &b_p, const Vector3 &b_v1, const Vector3 &b_v2)mingfx::Matrix4static
Cofactor() constmingfx::Matrix4
ColumnToPoint3(int c) constmingfx::Matrix4
ColumnToVector3(int c) constmingfx::Matrix4
Determinant() constmingfx::Matrix4
FromRowMajorElements(const float r1c1, const float r1c2, const float r1c3, const float r1c4, const float r2c1, const float r2c2, const float r2c3, const float r2c4, const float r3c1, const float r3c2, const float r3c3, const float r3c4, const float r4c1, const float r4c2, const float r4c3, const float r4c4)mingfx::Matrix4static
Frustum(float left, float right, float bottom, float top, float near_plane_dist, float far_plane_dist)mingfx::Matrix4static
Inverse() constmingfx::Matrix4
LookAt(Point3 eye, Point3 target, Vector3 up)mingfx::Matrix4static
Matrix4()mingfx::Matrix4
Matrix4(const float *a)mingfx::Matrix4
Matrix4(const std::vector< float > &a)mingfx::Matrix4
Matrix4(const Matrix4 &m2)mingfx::Matrix4
operator!=(const Matrix4 &m2) constmingfx::Matrix4
operator()(const int row, const int col) constmingfx::Matrix4
operator()(const int row, const int col)mingfx::Matrix4
operator=(const Matrix4 &m2)mingfx::Matrix4
operator==(const Matrix4 &m2) constmingfx::Matrix4
operator[](const int i) constmingfx::Matrix4
operator[](const int i)mingfx::Matrix4
Orthonormal() constmingfx::Matrix4
Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)mingfx::Matrix4static
Rotation(const Point3 &p, const Vector3 &v, const float a)mingfx::Matrix4static
RotationX(const float radians)mingfx::Matrix4static
RotationY(const float radians)mingfx::Matrix4static
RotationZ(const float radians)mingfx::Matrix4static
Scale(const Vector3 &v)mingfx::Matrix4static
SubDeterminant(int exclude_row, int exclude_col) constmingfx::Matrix4
ToVector() constmingfx::Matrix4
Translation(const Vector3 &v)mingfx::Matrix4static
Transpose() constmingfx::Matrix4
value_ptr() constmingfx::Matrix4
~Matrix4()mingfx::Matrix4virtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_matrix4.html b/dev/MinGfx/docs/html/classmingfx_1_1_matrix4.html new file mode 100644 index 0000000..f687d82 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_matrix4.html @@ -0,0 +1,1240 @@ + + + + + + + +MinGfx Toolkit: mingfx::Matrix4 Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Matrix4 Class Reference
+
+
+

Detailed Description

+

A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be compatible with OpenGL.

+

Examples:

// constructing various matrices:
+
Matrix4 T = Matrix4::Translation(Vector3(1,0,0));
+
Matrix4 S = Matrix4::Scale(Vector3(2,2,2));
+
Matrix4 R = Matrix4::RotateX(GfxMath::toRadians(45.0));
+
+
// compose matrices together by multiplication
+
Matrix4 M = T * R * S;
+
Matrix4 Minv = M.Inverse();
+
+
// transforming points, vectors, etc.
+
Point3 p1(1,1,1);
+
Point3 p2 = M * p1;
+
+
Vector3 v1(1,1,1);
+
Vector3 v2 = M * v1;
+
+
Ray r1(p1, v1);
+
Ray r2 = M * r1;
+
static Matrix4 Scale(const Vector3 &v)
Returns the scale matrix described by the vector.
+
Matrix4()
The default constructor creates an identity matrix:
+
static Matrix4 Translation(const Vector3 &v)
Returns the translation matrix described by the vector.
+
+

Definition at line 50 of file matrix4.h.

+
+

#include <matrix4.h>

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

+Public Member Functions

 Matrix4 ()
 The default constructor creates an identity matrix: More...
 
 Matrix4 (const float *a)
 Constructs a matrix given from an array of 16 floats in OpenGL matrix format (i.e., column major). More...
 
 Matrix4 (const std::vector< float > &a)
 Constructs a matrix given from a vector of 16 floats in OpenGL matrix format (i.e., column major). More...
 
 Matrix4 (const Matrix4 &m2)
 Copy constructor. More...
 
virtual ~Matrix4 ()
 Destructor. More...
 
bool operator== (const Matrix4 &m2) const
 Check for "equality", taking floating point imprecision into account. More...
 
bool operator!= (const Matrix4 &m2) const
 Check for "inequality", taking floating point imprecision into account. More...
 
Matrix4operator= (const Matrix4 &m2)
 Matrix assignment operator. More...
 
const float * value_ptr () const
 Returns a pointer to the raw data array used to store the matrix. This is a 1D array of 16-elements stored in column-major order. More...
 
float operator[] (const int i) const
 Accesses the ith element of the raw data array used to store the matrix. This is a 1D array of 16-elements stored in column-major order. More...
 
float & operator[] (const int i)
 Accesses the ith element of the raw data array used to store the matrix. This is a 1D array of 16-elements stored in column-major order. More...
 
float operator() (const int row, const int col) const
 Access an individual element of the array using the syntax: Matrix4 mat; float row1col2 = mat(1,2);. More...
 
float & operator() (const int row, const int col)
 Access an individual element of the array using the syntax: Matrix4 mat; mat(1,2) = 1.0;. More...
 
Vector3 ColumnToVector3 (int c) const
 Returns the c-th column of the matrix as a Vector type, e.g.,: Vector3 xAxis = mat.getColumnAsVector3(0); Vector3 yAxis = mat.getColumnAsVector3(1); Vector3 zAxis = mat.getColumnAsVector3(2);. More...
 
Point3 ColumnToPoint3 (int c) const
 Returns the c-th column of the matrix as a Vector type, e.g.,: Point3 pos = mat.getColumnAsPoint3(3);. More...
 
std::vector< float > ToVector () const
 
Matrix4 Inverse () const
 Returns the inverse of the 4x4 matrix if it is nonsingular. If it is singular, then returns the identity matrix. More...
 
Matrix4 Orthonormal () const
 Returns an orthonormal version of the matrix, i.e., guarantees that the rotational component of the matrix is built from column vectors that are all unit vectors and orthogonal to each other. More...
 
Matrix4 Transpose () const
 Returns the transpose of the matrix. More...
 
float SubDeterminant (int exclude_row, int exclude_col) const
 Returns the determinant of the 3x3 matrix formed by excluding the specified row and column from the 4x4 matrix. More...
 
Matrix4 Cofactor () const
 Returns the cofactor matrix. More...
 
float Determinant () const
 Returns the determinant of the 4x4 matrix. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static Matrix4 FromRowMajorElements (const float r1c1, const float r1c2, const float r1c3, const float r1c4, const float r2c1, const float r2c2, const float r2c3, const float r2c4, const float r3c1, const float r3c2, const float r3c3, const float r3c4, const float r4c1, const float r4c2, const float r4c3, const float r4c4)
 Returns a matrix constructed from individual elements passed in row major order so that the matrix looks "correct" on the screen as you write this constructor on 4 lines of code as below. More...
 
static Matrix4 Scale (const Vector3 &v)
 Returns the scale matrix described by the vector. More...
 
static Matrix4 Translation (const Vector3 &v)
 Returns the translation matrix described by the vector. More...
 
static Matrix4 RotationX (const float radians)
 Returns the rotation matrix about the x axis by the specified angle. More...
 
static Matrix4 RotationY (const float radians)
 Returns the rotation matrix about the y axis by the specified angle. More...
 
static Matrix4 RotationZ (const float radians)
 Returns the rotation matrix about the z axis by the specified angle. More...
 
static Matrix4 Rotation (const Point3 &p, const Vector3 &v, const float a)
 Returns the rotation matrix around the vector v placed at point p, rotate by angle a. More...
 
static Matrix4 Align (const Point3 &a_p, const Vector3 &a_v1, const Vector3 &a_v2, const Point3 &b_p, const Vector3 &b_v1, const Vector3 &b_v2)
 Creates a transformation matrix that maps a coordinate space, a, defined one point, a_p, and two vectors, a_v1 and a_v2, to a new coordinate space, b, also defined by one point, b_p, and two vectors, b_v1 and b_v2. The transformation will thus include both some rotation and some translation. Pseudocode example of aligning a billboard defined in the XY plane with a normal in the +Z direction and that rotates around the Y axis with a camera: More...
 
static Matrix4 LookAt (Point3 eye, Point3 target, Vector3 up)
 Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the desired 'target' point with the top of the screen pointed as closely as possible in the direction of the 'up' vector. More...
 
static Matrix4 Perspective (float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)
 Returns a perspective projection matrix equivalent to the one gluPerspective creates. More...
 
static Matrix4 Frustum (float left, float right, float bottom, float top, float near_plane_dist, float far_plane_dist)
 Returns a projection matrix equivalent the one glFrustum creates. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Matrix4() [1/4]

+ +
+
+ + + + + + + +
mingfx::Matrix4::Matrix4 ()
+
+ +

The default constructor creates an identity matrix:

+ +
+
+ +

◆ Matrix4() [2/4]

+ +
+
+ + + + + + + + +
mingfx::Matrix4::Matrix4 (const float * a)
+
+ +

Constructs a matrix given from an array of 16 floats in OpenGL matrix format (i.e., column major).

+ +
+
+ +

◆ Matrix4() [3/4]

+ +
+
+ + + + + + + + +
mingfx::Matrix4::Matrix4 (const std::vector< float > & a)
+
+ +

Constructs a matrix given from a vector of 16 floats in OpenGL matrix format (i.e., column major).

+ +
+
+ +

◆ Matrix4() [4/4]

+ +
+
+ + + + + + + + +
mingfx::Matrix4::Matrix4 (const Matrix4m2)
+
+ +

Copy constructor.

+ +
+
+ +

◆ ~Matrix4()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Matrix4::~Matrix4 ()
+
+virtual
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Align()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Matrix4 mingfx::Matrix4::Align (const Point3a_p,
const Vector3a_v1,
const Vector3a_v2,
const Point3b_p,
const Vector3b_v1,
const Vector3b_v2 
)
+
+static
+
+ +

Creates a transformation matrix that maps a coordinate space, a, defined one point, a_p, and two vectors, a_v1 and a_v2, to a new coordinate space, b, also defined by one point, b_p, and two vectors, b_v1 and b_v2. The transformation will thus include both some rotation and some translation. Pseudocode example of aligning a billboard defined in the XY plane with a normal in the +Z direction and that rotates around the Y axis with a camera:

+
// define a coordiante space for a canonical billboard geometry defined
+
// right at the origin.
+
Point3 a_p = Point3(0,0,0); // billboard's initial base position
+
Vector3 a_v1 = Vector3(0,1,0); // billboard's initial up direction
+
Vector3 a_v2 = Vector3(0,0,1); // billboard's initial normal direction
+
+
// define a coordinate space for where we want this billboard to go and
+
// the direction it should be facing
+
Point3 b_p = desired_base_pos; // new position for the billboard
+
Vector3 b_v1 = Vector3(0,1,0); // +Y is still up, doesn't change
+
Vector3 b_v2 = (camera.eye() - desired_base_pos); // the normal should point toward the camera
+
b_v2[1] = 0.0; // with 0 change in Y so the billboard does not tilt
+
b_v2.Normalize(); // convert to a unit vector
+
+
Matrix4 billboard_model_matrix = Matrix4::Align(a_p, a_v1, a_v2, b_p, b_v1, b_v2);
+
static Matrix4 Align(const Point3 &a_p, const Vector3 &a_v1, const Vector3 &a_v2, const Point3 &b_p, const Vector3 &b_v1, const Vector3 &b_v2)
Creates a transformation matrix that maps a coordinate space, a, defined one point,...
+
+
+
+ +

◆ Cofactor()

+ +
+
+ + + + + + + +
Matrix4 mingfx::Matrix4::Cofactor () const
+
+ +

Returns the cofactor matrix.

+ +
+
+ +

◆ ColumnToPoint3()

+ +
+
+ + + + + + + + +
Point3 mingfx::Matrix4::ColumnToPoint3 (int c) const
+
+ +

Returns the c-th column of the matrix as a Vector type, e.g.,: Point3 pos = mat.getColumnAsPoint3(3);.

+ +
+
+ +

◆ ColumnToVector3()

+ +
+
+ + + + + + + + +
Vector3 mingfx::Matrix4::ColumnToVector3 (int c) const
+
+ +

Returns the c-th column of the matrix as a Vector type, e.g.,: Vector3 xAxis = mat.getColumnAsVector3(0); Vector3 yAxis = mat.getColumnAsVector3(1); Vector3 zAxis = mat.getColumnAsVector3(2);.

+ +
+
+ +

◆ Determinant()

+ +
+
+ + + + + + + +
float mingfx::Matrix4::Determinant () const
+
+ +

Returns the determinant of the 4x4 matrix.

+ +
+
+ +

◆ FromRowMajorElements()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Matrix4 mingfx::Matrix4::FromRowMajorElements (const float r1c1,
const float r1c2,
const float r1c3,
const float r1c4,
const float r2c1,
const float r2c2,
const float r2c3,
const float r2c4,
const float r3c1,
const float r3c2,
const float r3c3,
const float r3c4,
const float r4c1,
const float r4c2,
const float r4c3,
const float r4c4 
)
+
+static
+
+ +

Returns a matrix constructed from individual elements passed in row major order so that the matrix looks "correct" on the screen as you write this constructor on 4 lines of code as below.

+

Note the that internally the matrix constructed will be stored in a 16 element column major array to be consistent with OpenGL.

+ +
+
+ +

◆ Frustum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Matrix4 mingfx::Matrix4::Frustum (float left,
float right,
float bottom,
float top,
float near_plane_dist,
float far_plane_dist 
)
+
+static
+
+ +

Returns a projection matrix equivalent the one glFrustum creates.

+ +
+
+ +

◆ Inverse()

+ +
+
+ + + + + + + +
Matrix4 mingfx::Matrix4::Inverse () const
+
+ +

Returns the inverse of the 4x4 matrix if it is nonsingular. If it is singular, then returns the identity matrix.

+ +
+
+ +

◆ LookAt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Matrix4 mingfx::Matrix4::LookAt (Point3 eye,
Point3 target,
Vector3 up 
)
+
+static
+
+ +

Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the desired 'target' point with the top of the screen pointed as closely as possible in the direction of the 'up' vector.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool mingfx::Matrix4::operator!= (const Matrix4m2) const
+
+ +

Check for "inequality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
float& mingfx::Matrix4::operator() (const int row,
const int col 
)
+
+ +

Access an individual element of the array using the syntax: Matrix4 mat; mat(1,2) = 1.0;.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
float mingfx::Matrix4::operator() (const int row,
const int col 
) const
+
+ +

Access an individual element of the array using the syntax: Matrix4 mat; float row1col2 = mat(1,2);.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Matrix4& mingfx::Matrix4::operator= (const Matrix4m2)
+
+ +

Matrix assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool mingfx::Matrix4::operator== (const Matrix4m2) const
+
+ +

Check for "equality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
float& mingfx::Matrix4::operator[] (const int i)
+
+ +

Accesses the ith element of the raw data array used to store the matrix. This is a 1D array of 16-elements stored in column-major order.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
float mingfx::Matrix4::operator[] (const int i) const
+
+ +

Accesses the ith element of the raw data array used to store the matrix. This is a 1D array of 16-elements stored in column-major order.

+ +
+
+ +

◆ Orthonormal()

+ +
+
+ + + + + + + +
Matrix4 mingfx::Matrix4::Orthonormal () const
+
+ +

Returns an orthonormal version of the matrix, i.e., guarantees that the rotational component of the matrix is built from column vectors that are all unit vectors and orthogonal to each other.

+ +
+
+ +

◆ Perspective()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Matrix4 mingfx::Matrix4::Perspective (float fov_y_in_degrees,
float aspect_ratio,
float near_plane_dist,
float far_plane_dist 
)
+
+static
+
+ +

Returns a perspective projection matrix equivalent to the one gluPerspective creates.

+ +
+
+ +

◆ Rotation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Matrix4 mingfx::Matrix4::Rotation (const Point3p,
const Vector3v,
const float a 
)
+
+static
+
+ +

Returns the rotation matrix around the vector v placed at point p, rotate by angle a.

+ +
+
+ +

◆ RotationX()

+ +
+
+ + + + + +
+ + + + + + + + +
static Matrix4 mingfx::Matrix4::RotationX (const float radians)
+
+static
+
+ +

Returns the rotation matrix about the x axis by the specified angle.

+ +
+
+ +

◆ RotationY()

+ +
+
+ + + + + +
+ + + + + + + + +
static Matrix4 mingfx::Matrix4::RotationY (const float radians)
+
+static
+
+ +

Returns the rotation matrix about the y axis by the specified angle.

+ +
+
+ +

◆ RotationZ()

+ +
+
+ + + + + +
+ + + + + + + + +
static Matrix4 mingfx::Matrix4::RotationZ (const float radians)
+
+static
+
+ +

Returns the rotation matrix about the z axis by the specified angle.

+ +
+
+ +

◆ Scale()

+ +
+
+ + + + + +
+ + + + + + + + +
static Matrix4 mingfx::Matrix4::Scale (const Vector3v)
+
+static
+
+ +

Returns the scale matrix described by the vector.

+ +
+
+ +

◆ SubDeterminant()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float mingfx::Matrix4::SubDeterminant (int exclude_row,
int exclude_col 
) const
+
+ +

Returns the determinant of the 3x3 matrix formed by excluding the specified row and column from the 4x4 matrix.

+ +
+
+ +

◆ ToVector()

+ +
+
+ + + + + + + +
std::vector<float> mingfx::Matrix4::ToVector () const
+
+ +
+
+ +

◆ Translation()

+ +
+
+ + + + + +
+ + + + + + + + +
static Matrix4 mingfx::Matrix4::Translation (const Vector3v)
+
+static
+
+ +

Returns the translation matrix described by the vector.

+ +
+
+ +

◆ Transpose()

+ +
+
+ + + + + + + +
Matrix4 mingfx::Matrix4::Transpose () const
+
+ +

Returns the transpose of the matrix.

+ +
+
+ +

◆ value_ptr()

+ +
+
+ + + + + + + +
const float* mingfx::Matrix4::value_ptr () const
+
+ +

Returns a pointer to the raw data array used to store the matrix. This is a 1D array of 16-elements stored in column-major order.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_mesh-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_mesh-members.html new file mode 100644 index 0000000..614b6dc --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_mesh-members.html @@ -0,0 +1,127 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Mesh Member List
+
+
+ +

This is the complete list of members for mingfx::Mesh, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddTriangle(Point3 v1, Point3 v2, Point3 v3)mingfx::Mesh
BuildBVH()mingfx::Mesh
bvh_ptr()mingfx::Mesh
CalcPerFaceNormals()mingfx::Mesh
CalcPerVertexNormals()mingfx::Mesh
Draw()mingfx::Mesh
LoadFromOBJ(const std::string &filename)mingfx::Mesh
Mesh()mingfx::Mesh
Mesh(const Mesh &other)mingfx::Mesh
num_triangles() constmingfx::Mesh
num_vertices() constmingfx::Mesh
read_color_data(int vertex_id) constmingfx::Mesh
read_normal_data(int vertex_id) constmingfx::Mesh
read_tex_coords_data(int texture_unit, int vertex_id) constmingfx::Mesh
read_triangle_indices_data(int triangle_id) constmingfx::Mesh
read_vertex_data(int vertex_id) constmingfx::Mesh
SetColors(int triangle_id, Color c1, Color c2, Color c3)mingfx::Mesh
SetColors(const std::vector< Color > &colors)mingfx::Mesh
SetColors(float *colors_array, int num_colors)mingfx::Mesh
SetIndices(const std::vector< unsigned int > index_array)mingfx::Mesh
SetIndices(unsigned int *index_array, int num_indices)mingfx::Mesh
SetInstanceTransforms(const std::vector< Matrix4 > &xforms)mingfx::Mesh
SetNormals(int triangle_id, Vector3 n1, Vector3 n2, Vector3 n3)mingfx::Mesh
SetNormals(const std::vector< Vector3 > &norms)mingfx::Mesh
SetNormals(float *norms_array, int num_norms)mingfx::Mesh
SetTexCoords(int triangle_id, int texture_unit, Point2 uv1, Point2 uv2, Point2 uv3)mingfx::Mesh
SetTexCoords(int texture_unit, const std::vector< Point2 > &tex_coords)mingfx::Mesh
SetTexCoords(int texture_unit, float *tex_coords_array, int num_tex_coords)mingfx::Mesh
SetVertices(const std::vector< Point3 > &verts)mingfx::Mesh
SetVertices(float *verts_array, int num_verts)mingfx::Mesh
UpdateGPUMemory()mingfx::Mesh
UpdateTriangle(int triangle_id, Point3 v1, Point3 v2, Point3 v3)mingfx::Mesh
~Mesh()mingfx::Meshvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_mesh.html b/dev/MinGfx/docs/html/classmingfx_1_1_mesh.html new file mode 100644 index 0000000..785bff3 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_mesh.html @@ -0,0 +1,1131 @@ + + + + + + + +MinGfx Toolkit: mingfx::Mesh Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Mesh Class Reference
+
+
+

Detailed Description

+

A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.

+

The mesh can be created algorithmically by adding triangles one at a time or it can be loaded from an .obj file.

+

Vertices are required – you cannot have a mesh without vertices, but other attributes (normals, colors, texture coordinates) are optional. When Draw() is called the mesh will automatically set these other attributes if available.

+

Example of loading from a file:

// during initialization
+
Mesh m;
+
m.LoadFromOBJ(Platform::FindMinGfxDataFile("teapot.obj"));
+
// also create a shader to draw it.
+
DefaultShader s;
+
+
+
// later to draw
+
Matrix4 M;
+
Matrix4 V = Matrix4::LookAt(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0));
+
Matrix4 P = Matrix4::Perspective(60.0, aspect_ratio(), 0.1, 10.0);
+
s.Draw(M, V, P, m, DefaultShader::MaterialProperties());
+
static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)
Returns a perspective projection matrix equivalent to the one gluPerspective creates.
+
static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)
Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...
+
Mesh()
Creates an empty mesh.
+
static std::string FindMinGfxDataFile(const std::string &basename)
Searches for a data file that ships with MinGfx.
+

Example of creating a mesh algorithmically:

Mesh mesh1;
+
int tri_id;
+
// add a first triangle
+
tri_id = mesh1.AddTriangle(Point3(0,0,0), Point3(1,0,0), Point3(1,1,0));
+
// set attributes for the vertices
+
mesh1.SetNormals(tri_id, Vector3(0,0,1), Vector3(0,0,1), Vector3(0,0,1));
+
mesh1.SetTexCoords(tri_id, 0, Point2(0,1), Point2(1,1), Point2(1,0));
+
+
// add a second triangle and attributes
+
tri_id = mesh1.AddTriangle(Point3(0,0,0), Point3(1,1,0), Point3(0,1,0));
+
mesh1.SetNormals(tri_id, Vector3(0,0,1), Vector3(0,0,1), Vector3(0,0,1));
+
mesh1.SetTexCoords(tri_id, 0, Point2(0,1), Point2(1,0), Point2(0,0));
+
+
// call this when done to save to the GPU
+
mesh1.UpdateGPUMemory();
+
+
// then you can draw the same way as in the previous example.
+

In the mode used above where you add one triangle at a time there is no way to reuse vertices in multiple triangles. If you need to do this for efficiency or other reasons, then you can use an indexed faces mode where you set the mesh data structures directly.

+

Example of creating a mesh that renders in an indexed faces mode:

std::vector<unsigned int> indices;
+
std::vector<Point3> vertices;
+
std::vector<Vector3> normals;
+
std::vector<Point2> texcoords;
+
+
// four vertices, each requires 3 floats: (x,y,z)
+
vertices.push_back(Point3(0,0,0));
+
vertices.push_back(Point3(1,0,0));
+
vertices.push_back(Point3(1,1,0));
+
vertices.push_back(Point3(0,1,0));
+
+
// four normals, each requires 3 floats: (x,y,z)
+
normals.push_back(Vector3(0,0,1));
+
normals.push_back(Vector3(0,0,1));
+
normals.push_back(Vector3(0,0,1));
+
normals.push_back(Vector3(0,0,1));
+
+
// four texture coords, each requires 2 floats: (u,v)
+
texcoords.push_back(Point2(0,1));
+
texcoords.push_back(Point2(1,1));
+
texcoords.push_back(Point2(1,0));
+
texcoords.push_back(Point2(0,0));
+
+
// indices into the arrays above for the first triangle
+
indices.push_back(0);
+
indices.push_back(1);
+
indices.push_back(2);
+
+
// indices for the second triangle, note some are reused
+
indices.push_back(0);
+
indices.push_back(2);
+
indices.push_back(3);
+
+
Mesh mesh1;
+
mesh1.SetVertices(vertices);
+
mesh1.SetNormals(normals);
+
mesh1.SetTexCoords(0, texcoords);
+
mesh1.SetIndices(indices);
+
mesh1.UpdateGPUMemory();
+
+
// then you can draw the same way as in the previous example.
+
+

Definition at line 127 of file mesh.h.

+
+

#include <mesh.h>

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

+Public Member Functions

 Mesh ()
 Creates an empty mesh. More...
 
 Mesh (const Mesh &other)
 Copies all data and sets GPU dirty bit for the new mesh. More...
 
virtual ~Mesh ()
 
void LoadFromOBJ (const std::string &filename)
 This reads a mesh stored in the common Wavefront Obj file format. More...
 
int AddTriangle (Point3 v1, Point3 v2, Point3 v3)
 Adds a triangle to the mesh datastructure and returns a triangle ID. More...
 
void UpdateTriangle (int triangle_id, Point3 v1, Point3 v2, Point3 v3)
 Updates the vertex positions for a triangle that has already been added to the mesh. More...
 
void SetNormals (int triangle_id, Vector3 n1, Vector3 n2, Vector3 n3)
 Sets the normals for the three vertices of a triangle that has already been added to the mesh. More...
 
void SetColors (int triangle_id, Color c1, Color c2, Color c3)
 Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh. More...
 
void SetTexCoords (int triangle_id, int texture_unit, Point2 uv1, Point2 uv2, Point2 uv3)
 Sets the texture coordinates for the three vertices of a triangle that has already been added to the mesh. More...
 
void SetVertices (const std::vector< Point3 > &verts)
 Sets the vertex array for the mesh directly. More...
 
void SetNormals (const std::vector< Vector3 > &norms)
 Sets the normal array for the mesh directly. More...
 
void SetColors (const std::vector< Color > &colors)
 Sets the per-vertex colors array for the mesh directly. More...
 
void SetTexCoords (int texture_unit, const std::vector< Point2 > &tex_coords)
 Sets a texture coordinates array for the mesh directly. More...
 
void SetIndices (const std::vector< unsigned int > index_array)
 Sets the indices into the vertex array to use to create the triangles. Each consecutive set of 3 indices forms one triangle: (v1,v2,v3), (v1,v2,v3), (v1,v2,v3), ... More...
 
void SetInstanceTransforms (const std::vector< Matrix4 > &xforms)
 
void SetVertices (float *verts_array, int num_verts)
 Sets the vertex array for the mesh directly. Vertices are stored as (x,y,z), (x,y,z), (x,y,z), ... This version of the function accepts a C-style array rather than std::vector<> More...
 
void SetNormals (float *norms_array, int num_norms)
 Sets the normal array for the mesh directly. Normals are stored as (x,y,z), (x,y,z), (x,y,z), ... following the same ordering as was used for SetVertices(). This version of the function accepts a C-style array rather than std::vector<> More...
 
void SetColors (float *colors_array, int num_colors)
 Sets the per-vertex colors array for the mesh directly. Colors are stored as (r,g,b,a), (r,g,b,a), (r,g,b,a), ... following the same ordering as was used for SetVertices(). This version of the function accepts a C-style array rather than std::vector<> More...
 
void SetTexCoords (int texture_unit, float *tex_coords_array, int num_tex_coords)
 Sets a texture coordinates array for the mesh directly. Tex coords are stored as (u,v), (u,v), (u,v), ... following the same ordering as was used for SetVertices(). This version of the function accepts a C-style array rather than std::vector<> More...
 
void SetIndices (unsigned int *index_array, int num_indices)
 Sets the indices into the vertex array to use to create the triangles. Each consecutive set of 3 indices forms one triangle: (v1,v2,v3), (v1,v2,v3), (v1,v2,v3), ... This version of the function accepts a C-style array rather than std::vector<> More...
 
void UpdateGPUMemory ()
 This copies the entire mesh data structure to a vertex array in GPU memory, which must happen before you can draw the mesh. More...
 
void Draw ()
 This sends the mesh vertices and attributes down the graphics pipe using glDrawArrays() for the non-indexed mode and glDrawElements() for the indexed mode. More...
 
void CalcPerFaceNormals ()
 This (re)calculates the normals for the mesh and stores them with the mesh data structure. More...
 
void CalcPerVertexNormals ()
 This (re)calculates the normals for the mesh and stores them with the mesh data structure. More...
 
void BuildBVH ()
 This (re)calculates a Bounding Volume Hierarchy for the mesh, which can be used together with Ray::FastIntersectMesh() to do faster ray-mesh intersection testing. More...
 
BVHbvh_ptr ()
 Returns a pointer to the underlying BVH data structure. More...
 
int num_vertices () const
 The total number of vertices in the mesh. More...
 
Point3 read_vertex_data (int vertex_id) const
 Read only access to the vertex position data. Data are returned as a Point3. Indexed by vertex number. Also see num_vertices(). Use the SetVertices() function to set (or edit) vertex data. More...
 
Vector3 read_normal_data (int vertex_id) const
 Read only access to per-vertex normal data. Data are returned as a Vector3. Indexed by vertex number. Also see num_vertices(). Use the SetNormals() function to set (or edit) per-vertex normal data. More...
 
Color read_color_data (int vertex_id) const
 Read only access to per-vertex color data. Data are returned as a Color. Indexed by vertex number. Also see num_vertices(). Use the SetColors() function to set (or edit) per-vertex color data. More...
 
Point2 read_tex_coords_data (int texture_unit, int vertex_id) const
 Read only access to per-vertex texture coordinates data. Data are returned as a Point2. Indexed by vertex number. Also see num_vertices(). Use the SetTexCoords() function to set (or edit) per-vertex tex coords. More...
 
int num_triangles () const
 The total number of triangles in the mesh. More...
 
std::vector< unsigned int > read_triangle_indices_data (int triangle_id) const
 Read only access to the indices that make up a particular triangle. Data are returned as a 3-element array. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Mesh() [1/2]

+ +
+
+ + + + + + + +
mingfx::Mesh::Mesh ()
+
+ +

Creates an empty mesh.

+ +
+
+ +

◆ Mesh() [2/2]

+ +
+
+ + + + + + + + +
mingfx::Mesh::Mesh (const Meshother)
+
+ +

Copies all data and sets GPU dirty bit for the new mesh.

+ +
+
+ +

◆ ~Mesh()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Mesh::~Mesh ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ AddTriangle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int mingfx::Mesh::AddTriangle (Point3 v1,
Point3 v2,
Point3 v3 
)
+
+ +

Adds a triangle to the mesh datastructure and returns a triangle ID.

+

The ID should then be used as the first argument for follow-on calls to SetNormals(), SetColors(), and SetTexCoords(). The vertices must be specified in counter-clockwise order so that the normal of the triangle can be determined following the right-hand rule.

+ +
+
+ +

◆ BuildBVH()

+ +
+
+ + + + + + + +
void mingfx::Mesh::BuildBVH ()
+
+ +

This (re)calculates a Bounding Volume Hierarchy for the mesh, which can be used together with Ray::FastIntersectMesh() to do faster ray-mesh intersection testing.

+ +
+
+ +

◆ bvh_ptr()

+ +
+
+ + + + + + + +
BVH* mingfx::Mesh::bvh_ptr ()
+
+ +

Returns a pointer to the underlying BVH data structure.

+

If the data struture has not yet been build or needs to be updated due to a change in the geometry of the mesh, then the BVH is recalculated before returning the pointer.

+ +
+
+ +

◆ CalcPerFaceNormals()

+ +
+
+ + + + + + + +
void mingfx::Mesh::CalcPerFaceNormals ()
+
+ +

This (re)calculates the normals for the mesh and stores them with the mesh data structure.

+

It assumes a faceted mesh, like a cube, where each triangle has separate vertices. The normal is calculated for each triangle face and then the result is associated with each vertex that makes up the triangle. If you have a smooth mesh where vertices are shared between multiple faces then use CalcPerVertexNormals() instead.

+ +
+
+ +

◆ CalcPerVertexNormals()

+ +
+
+ + + + + + + +
void mingfx::Mesh::CalcPerVertexNormals ()
+
+ +

This (re)calculates the normals for the mesh and stores them with the mesh data structure.

+

It assumes a smooth mesh, like a sphere, where each vertex belongs to one or more triangles. Each vertex normal is calculated as a weighted sum of the face normals for adjacent faces. The weighting is based upon the relative areas of the neighboring faces (i.e., a large neighboring triangle contributes more to the vertex normal than a small one).

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + + + +
void mingfx::Mesh::Draw ()
+
+ +

This sends the mesh vertices and attributes down the graphics pipe using glDrawArrays() for the non-indexed mode and glDrawElements() for the indexed mode.

+

This is just the geometry – for anything to show up on the screen, you must already have a ShaderProgram enabled before calling this function.

+ +
+
+ +

◆ LoadFromOBJ()

+ +
+
+ + + + + + + + +
void mingfx::Mesh::LoadFromOBJ (const std::string & filename)
+
+ +

This reads a mesh stored in the common Wavefront Obj file format.

+

The loader here is simplistic and not guaranteed to work on all valid .obj files, but it should work on many simple ones. UpdateGPUMemory() is called automatically after the model is loaded.

+ +
+
+ +

◆ num_triangles()

+ +
+
+ + + + + + + +
int mingfx::Mesh::num_triangles () const
+
+ +

The total number of triangles in the mesh.

+ +
+
+ +

◆ num_vertices()

+ +
+
+ + + + + + + +
int mingfx::Mesh::num_vertices () const
+
+ +

The total number of vertices in the mesh.

+ +
+
+ +

◆ read_color_data()

+ +
+
+ + + + + + + + +
Color mingfx::Mesh::read_color_data (int vertex_id) const
+
+ +

Read only access to per-vertex color data. Data are returned as a Color. Indexed by vertex number. Also see num_vertices(). Use the SetColors() function to set (or edit) per-vertex color data.

+ +
+
+ +

◆ read_normal_data()

+ +
+
+ + + + + + + + +
Vector3 mingfx::Mesh::read_normal_data (int vertex_id) const
+
+ +

Read only access to per-vertex normal data. Data are returned as a Vector3. Indexed by vertex number. Also see num_vertices(). Use the SetNormals() function to set (or edit) per-vertex normal data.

+ +
+
+ +

◆ read_tex_coords_data()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Point2 mingfx::Mesh::read_tex_coords_data (int texture_unit,
int vertex_id 
) const
+
+ +

Read only access to per-vertex texture coordinates data. Data are returned as a Point2. Indexed by vertex number. Also see num_vertices(). Use the SetTexCoords() function to set (or edit) per-vertex tex coords.

+ +
+
+ +

◆ read_triangle_indices_data()

+ +
+
+ + + + + + + + +
std::vector<unsigned int> mingfx::Mesh::read_triangle_indices_data (int triangle_id) const
+
+ +

Read only access to the indices that make up a particular triangle. Data are returned as a 3-element array.

+ +
+
+ +

◆ read_vertex_data()

+ +
+
+ + + + + + + + +
Point3 mingfx::Mesh::read_vertex_data (int vertex_id) const
+
+ +

Read only access to the vertex position data. Data are returned as a Point3. Indexed by vertex number. Also see num_vertices(). Use the SetVertices() function to set (or edit) vertex data.

+ +
+
+ +

◆ SetColors() [1/3]

+ +
+
+ + + + + + + + +
void mingfx::Mesh::SetColors (const std::vector< Color > & colors)
+
+ +

Sets the per-vertex colors array for the mesh directly.

+ +
+
+ +

◆ SetColors() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetColors (float * colors_array,
int num_colors 
)
+
+ +

Sets the per-vertex colors array for the mesh directly. Colors are stored as (r,g,b,a), (r,g,b,a), (r,g,b,a), ... following the same ordering as was used for SetVertices(). This version of the function accepts a C-style array rather than std::vector<>

+ +
+
+ +

◆ SetColors() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetColors (int triangle_id,
Color c1,
Color c2,
Color c3 
)
+
+ +

Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh.

+ +
+
+ +

◆ SetIndices() [1/2]

+ +
+
+ + + + + + + + +
void mingfx::Mesh::SetIndices (const std::vector< unsigned int > index_array)
+
+ +

Sets the indices into the vertex array to use to create the triangles. Each consecutive set of 3 indices forms one triangle: (v1,v2,v3), (v1,v2,v3), (v1,v2,v3), ...

+ +
+
+ +

◆ SetIndices() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetIndices (unsigned int * index_array,
int num_indices 
)
+
+ +

Sets the indices into the vertex array to use to create the triangles. Each consecutive set of 3 indices forms one triangle: (v1,v2,v3), (v1,v2,v3), (v1,v2,v3), ... This version of the function accepts a C-style array rather than std::vector<>

+ +
+
+ +

◆ SetInstanceTransforms()

+ +
+
+ + + + + + + + +
void mingfx::Mesh::SetInstanceTransforms (const std::vector< Matrix4 > & xforms)
+
+ +
+
+ +

◆ SetNormals() [1/3]

+ +
+
+ + + + + + + + +
void mingfx::Mesh::SetNormals (const std::vector< Vector3 > & norms)
+
+ +

Sets the normal array for the mesh directly.

+ +
+
+ +

◆ SetNormals() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetNormals (float * norms_array,
int num_norms 
)
+
+ +

Sets the normal array for the mesh directly. Normals are stored as (x,y,z), (x,y,z), (x,y,z), ... following the same ordering as was used for SetVertices(). This version of the function accepts a C-style array rather than std::vector<>

+ +
+
+ +

◆ SetNormals() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetNormals (int triangle_id,
Vector3 n1,
Vector3 n2,
Vector3 n3 
)
+
+ +

Sets the normals for the three vertices of a triangle that has already been added to the mesh.

+ +
+
+ +

◆ SetTexCoords() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetTexCoords (int texture_unit,
const std::vector< Point2 > & tex_coords 
)
+
+ +

Sets a texture coordinates array for the mesh directly.

+ +
+
+ +

◆ SetTexCoords() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetTexCoords (int texture_unit,
float * tex_coords_array,
int num_tex_coords 
)
+
+ +

Sets a texture coordinates array for the mesh directly. Tex coords are stored as (u,v), (u,v), (u,v), ... following the same ordering as was used for SetVertices(). This version of the function accepts a C-style array rather than std::vector<>

+ +
+
+ +

◆ SetTexCoords() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetTexCoords (int triangle_id,
int texture_unit,
Point2 uv1,
Point2 uv2,
Point2 uv3 
)
+
+ +

Sets the texture coordinates for the three vertices of a triangle that has already been added to the mesh.

+

The first textureUnit is 0, and you should always use 0 for this parameter unless you are doing multi-texturing.

+ +
+
+ +

◆ SetVertices() [1/2]

+ +
+
+ + + + + + + + +
void mingfx::Mesh::SetVertices (const std::vector< Point3 > & verts)
+
+ +

Sets the vertex array for the mesh directly.

+ +
+
+ +

◆ SetVertices() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::SetVertices (float * verts_array,
int num_verts 
)
+
+ +

Sets the vertex array for the mesh directly. Vertices are stored as (x,y,z), (x,y,z), (x,y,z), ... This version of the function accepts a C-style array rather than std::vector<>

+ +
+
+ +

◆ UpdateGPUMemory()

+ +
+
+ + + + + + + +
void mingfx::Mesh::UpdateGPUMemory ()
+
+ +

This copies the entire mesh data structure to a vertex array in GPU memory, which must happen before you can draw the mesh.

+

For large meshes, this can take some time, so you may want to call this during initialization immediately after generating the mesh. If you do not, it will be called automatically for you the first time Draw() is called. If the mesh contains normals, per- vertex colors and/or texture coordinates these are added as attributes within the vertex array.

+ +
+
+ +

◆ UpdateTriangle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::Mesh::UpdateTriangle (int triangle_id,
Point3 v1,
Point3 v2,
Point3 v3 
)
+
+ +

Updates the vertex positions for a triangle that has already been added to the mesh.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_platform-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_platform-members.html new file mode 100644 index 0000000..8f34046 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_platform-members.html @@ -0,0 +1,99 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Platform Member List
+
+
+ +

This is the complete list of members for mingfx::Platform, including all inherited members.

+ + + + + + +
FileExists(const std::string &filename)mingfx::Platformstatic
FindFile(const std::string &basename, const std::vector< std::string > &searchpath)mingfx::Platformstatic
FindFile(const std::string &basename, const std::string &searchpath)mingfx::Platformstatic
FindMinGfxDataFile(const std::string &basename)mingfx::Platformstatic
FindMinGfxShaderFile(const std::string &basename)mingfx::Platformstatic
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_platform.html b/dev/MinGfx/docs/html/classmingfx_1_1_platform.html new file mode 100644 index 0000000..924da10 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_platform.html @@ -0,0 +1,289 @@ + + + + + + + +MinGfx Toolkit: mingfx::Platform Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Platform Class Reference
+
+
+

Detailed Description

+

Provides access to the underlying file system and other platform-specific routines.

+ +

Definition at line 26 of file platform.h.

+
+

#include <platform.h>

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

+Static Public Member Functions

static bool FileExists (const std::string &filename)
 True if filename is found and can be opened for reading on the system. More...
 
static std::string FindFile (const std::string &basename, const std::vector< std::string > &searchpath)
 
static std::string FindFile (const std::string &basename, const std::string &searchpath)
 
static std::string FindMinGfxDataFile (const std::string &basename)
 Searches for a data file that ships with MinGfx. More...
 
static std::string FindMinGfxShaderFile (const std::string &basename)
 Searches for a shader file that ships with MinGfx. More...
 
+

Member Function Documentation

+ +

◆ FileExists()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool mingfx::Platform::FileExists (const std::string & filename)
+
+static
+
+ +

True if filename is found and can be opened for reading on the system.

+ +
+
+ +

◆ FindFile() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static std::string mingfx::Platform::FindFile (const std::string & basename,
const std::string & searchpath 
)
+
+static
+
+ +
+
+ +

◆ FindFile() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static std::string mingfx::Platform::FindFile (const std::string & basename,
const std::vector< std::string > & searchpath 
)
+
+static
+
+ +
+
+ +

◆ FindMinGfxDataFile()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string mingfx::Platform::FindMinGfxDataFile (const std::string & basename)
+
+static
+
+ +

Searches for a data file that ships with MinGfx.

+

This will look in the following locations in order:

    +
  1. the current working directory.
  2. +
  3. a subdirectory called data within the current working directory.
  4. +
  5. the installed data directory INSTALL_PREFIX/share/MinGfx-1.0/data.
  6. +
  7. the data directory in the MinGfx build tree. If the file is found, the full path is returned, else basename is returned.
  8. +
+ +
+
+ +

◆ FindMinGfxShaderFile()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string mingfx::Platform::FindMinGfxShaderFile (const std::string & basename)
+
+static
+
+ +

Searches for a shader file that ships with MinGfx.

+

This will look in the following locations in order:

    +
  1. the current working directory.
  2. +
  3. a subdirectory called shaders within the current working directory.
  4. +
  5. the installed shaders directory INSTALL_PREFIX/share/MinGfx-1.0/shaders.
  6. +
  7. the shaders directory in the MinGfx build tree. If the file is found, the full path is returned, else basename is returned.
  8. +
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_point2-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_point2-members.html new file mode 100644 index 0000000..12e0b99 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_point2-members.html @@ -0,0 +1,113 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Point2 Member List
+
+
+ +

This is the complete list of members for mingfx::Point2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
Lerp(const Point2 &b, float alpha) constmingfx::Point2
Lerp(const Point2 &a, const Point2 &b, float alpha)mingfx::Point2static
One()mingfx::Point2static
operator!=(const Point2 &p) constmingfx::Point2
operator=(const Point2 &p)mingfx::Point2
operator==(const Point2 &p) constmingfx::Point2
operator[](const int i) constmingfx::Point2
operator[](const int i)mingfx::Point2
Origin()mingfx::Point2static
Point2()mingfx::Point2
Point2(float x, float y)mingfx::Point2
Point2(float *p)mingfx::Point2
Point2(const Point2 &p)mingfx::Point2
value_ptr() constmingfx::Point2
w() constmingfx::Point2inline
x() constmingfx::Point2inline
y() constmingfx::Point2inline
Zero()mingfx::Point2static
~Point2()mingfx::Point2virtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_point2.html b/dev/MinGfx/docs/html/classmingfx_1_1_point2.html new file mode 100644 index 0000000..4d53aa7 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_point2.html @@ -0,0 +1,650 @@ + + + + + + + +MinGfx Toolkit: mingfx::Point2 Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Point2 Class Reference
+
+
+

Detailed Description

+

A 2D Point with floating point coordinates, used for storing 2D texture coordinates, screen-space graphics, and mouse input.

+ +

Definition at line 28 of file point2.h.

+
+

#include <point2.h>

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

+Public Member Functions

 Point2 ()
 Default point at the origin. More...
 
 Point2 (float x, float y)
 Constructs a point given (x,y,1), where the 1 comes from the use of homogeneous coordinates in computer graphics. More...
 
 Point2 (float *p)
 Constructs a point given a pointer to x,y data. More...
 
 Point2 (const Point2 &p)
 Copy constructor for point. More...
 
virtual ~Point2 ()
 Point destructor. More...
 
bool operator== (const Point2 &p) const
 Check for "equality", taking floating point imprecision into account. More...
 
bool operator!= (const Point2 &p) const
 Check for "inequality", taking floating point imprecision into account. More...
 
Point2operator= (const Point2 &p)
 Assignment operator. More...
 
float operator[] (const int i) const
 Read only access to the ith coordinate of the point. More...
 
float & operator[] (const int i)
 Returns a reference to the ith coordinate of the point. Use this accessor if you wish to set the coordinate rather than just request its value. Example: More...
 
float x () const
 Read only access to the x coordinate. Can also use my_point[0]. Use the my_point[0] = 1.0; form if you need to set the value. More...
 
float y () const
 Read only access to the y coordinate. Can also use my_point[1]. Use the my_point[1] = 1.0; form if you need to set the value. More...
 
float w () const
 In homogeneous coordinates, the w coordinate for all points is 1.0. More...
 
const float * value_ptr () const
 Returns a const pointer to the raw data array. More...
 
Point2 Lerp (const Point2 &b, float alpha) const
 Linear interpolation between this point and another. Alpha=0.0 returns this point, and alpha=1.0 returns the other point, other values blend between the two. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static const Point2Origin ()
 (0,0) - a shortcut for a special point that is frequently needed More...
 
static const Point2Zero ()
 (0,0) - a shortcut for a special point that is frequently needed More...
 
static const Point2One ()
 (1,1) - a shortcut for a special point that is frequently needed More...
 
static Point2 Lerp (const Point2 &a, const Point2 &b, float alpha)
 Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Point2() [1/4]

+ +
+
+ + + + + + + +
mingfx::Point2::Point2 ()
+
+ +

Default point at the origin.

+ +
+
+ +

◆ Point2() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
mingfx::Point2::Point2 (float x,
float y 
)
+
+ +

Constructs a point given (x,y,1), where the 1 comes from the use of homogeneous coordinates in computer graphics.

+ +
+
+ +

◆ Point2() [3/4]

+ +
+
+ + + + + + + + +
mingfx::Point2::Point2 (float * p)
+
+ +

Constructs a point given a pointer to x,y data.

+ +
+
+ +

◆ Point2() [4/4]

+ +
+
+ + + + + + + + +
mingfx::Point2::Point2 (const Point2p)
+
+ +

Copy constructor for point.

+ +
+
+ +

◆ ~Point2()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Point2::~Point2 ()
+
+virtual
+
+ +

Point destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Lerp() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Point2 mingfx::Point2::Lerp (const Point2a,
const Point2b,
float alpha 
)
+
+static
+
+ +

Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two.

+ +
+
+ +

◆ Lerp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Point2 mingfx::Point2::Lerp (const Point2b,
float alpha 
) const
+
+ +

Linear interpolation between this point and another. Alpha=0.0 returns this point, and alpha=1.0 returns the other point, other values blend between the two.

+ +
+
+ +

◆ One()

+ +
+
+ + + + + +
+ + + + + + + +
static const Point2& mingfx::Point2::One ()
+
+static
+
+ +

(1,1) - a shortcut for a special point that is frequently needed

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool mingfx::Point2::operator!= (const Point2p) const
+
+ +

Check for "inequality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Point2& mingfx::Point2::operator= (const Point2p)
+
+ +

Assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool mingfx::Point2::operator== (const Point2p) const
+
+ +

Check for "equality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
float& mingfx::Point2::operator[] (const int i)
+
+ +

Returns a reference to the ith coordinate of the point. Use this accessor if you wish to set the coordinate rather than just request its value. Example:

+
+
a[0] = 5.0; // set the x-coordinate of the point
+
Point2()
Default point at the origin.
+
+
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
float mingfx::Point2::operator[] (const int i) const
+
+ +

Read only access to the ith coordinate of the point.

+ +
+
+ +

◆ Origin()

+ +
+
+ + + + + +
+ + + + + + + +
static const Point2& mingfx::Point2::Origin ()
+
+static
+
+ +

(0,0) - a shortcut for a special point that is frequently needed

+ +
+
+ +

◆ value_ptr()

+ +
+
+ + + + + + + +
const float* mingfx::Point2::value_ptr () const
+
+ +

Returns a const pointer to the raw data array.

+ +
+
+ +

◆ w()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Point2::w () const
+
+inline
+
+ +

In homogeneous coordinates, the w coordinate for all points is 1.0.

+ +

Definition at line 76 of file point2.h.

+ +
+
+ +

◆ x()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Point2::x () const
+
+inline
+
+ +

Read only access to the x coordinate. Can also use my_point[0]. Use the my_point[0] = 1.0; form if you need to set the value.

+ +

Definition at line 69 of file point2.h.

+ +
+
+ +

◆ y()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Point2::y () const
+
+inline
+
+ +

Read only access to the y coordinate. Can also use my_point[1]. Use the my_point[1] = 1.0; form if you need to set the value.

+ +

Definition at line 73 of file point2.h.

+ +
+
+ +

◆ Zero()

+ +
+
+ + + + + +
+ + + + + + + +
static const Point2& mingfx::Point2::Zero ()
+
+static
+
+ +

(0,0) - a shortcut for a special point that is frequently needed

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_point3-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_point3-members.html new file mode 100644 index 0000000..4aa7e82 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_point3-members.html @@ -0,0 +1,117 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Point3 Member List
+
+
+ +

This is the complete list of members for mingfx::Point3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
ClosestPoint(const std::vector< Point3 > &point_list)mingfx::Point3
ClosestPointOnPlane(const Point3 &plane_origin, const Vector3 &plane_normal)mingfx::Point3
DistanceToPlane(const Point3 &plane_origin, const Vector3 &plane_normal)mingfx::Point3
Lerp(const Point3 &b, float alpha) constmingfx::Point3
Lerp(const Point3 &a, const Point3 &b, float alpha)mingfx::Point3static
One()mingfx::Point3static
operator!=(const Point3 &p) constmingfx::Point3
operator=(const Point3 &p)mingfx::Point3
operator==(const Point3 &p) constmingfx::Point3
operator[](const int i) constmingfx::Point3
operator[](const int i)mingfx::Point3
Origin()mingfx::Point3static
Point3()mingfx::Point3
Point3(float x, float y, float z)mingfx::Point3
Point3(float *p)mingfx::Point3
Point3(const Point3 &p)mingfx::Point3
value_ptr() constmingfx::Point3
w() constmingfx::Point3inline
x() constmingfx::Point3inline
y() constmingfx::Point3inline
z() constmingfx::Point3inline
Zero()mingfx::Point3static
~Point3()mingfx::Point3virtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_point3.html b/dev/MinGfx/docs/html/classmingfx_1_1_point3.html new file mode 100644 index 0000000..2166d0e --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_point3.html @@ -0,0 +1,795 @@ + + + + + + + +MinGfx Toolkit: mingfx::Point3 Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Point3 Class Reference
+
+
+

Detailed Description

+

A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graphics operations.

+

Point3s can be transformed by a Matrix4. Example:

Point3 a(0,0,1);
+
std::cout << a << std::endl;
+
+
Matrix4 M = Matrix4::Translation(Vector3(0,0,-1));
+
Point3 b = M * a;
+
std::cout << b << std::endl;
+
+
// you can access the individual components of the point in two ways:
+
Point3 p(1,2,3);
+
float option1 = p.x();
+
float option2 = p[0];
+
+
// to set an individual component of the point use the [] operator:
+
Point3 p2;
+
p2[0] = 0.4;
+
p2[1] = 1.2;
+
p2[2] = 3.1;
+
static Matrix4 Translation(const Vector3 &v)
Returns the translation matrix described by the vector.
+
Point3()
Default point at the origin.
+
+

Definition at line 52 of file point3.h.

+
+

#include <point3.h>

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

+Public Member Functions

 Point3 ()
 Default point at the origin. More...
 
 Point3 (float x, float y, float z)
 Constructs a point given (x,y,z,1), where the 1 comes from the use of homogeneous coordinates in computer graphics. More...
 
 Point3 (float *p)
 Constructs a point given a pointer to x,y,z data. More...
 
 Point3 (const Point3 &p)
 Copy constructor for point. More...
 
virtual ~Point3 ()
 Point destructor. More...
 
bool operator== (const Point3 &p) const
 Check for "equality", taking floating point imprecision into account. More...
 
bool operator!= (const Point3 &p) const
 Check for "inequality", taking floating point imprecision into account. More...
 
Point3operator= (const Point3 &p)
 Assignment operator. More...
 
float operator[] (const int i) const
 Read only access to the ith coordinate of the point. More...
 
float & operator[] (const int i)
 Returns a reference to the ith coordinate of the point. Use this accessor if you wish to set the coordinate rather than just request its value. Example: More...
 
float x () const
 Read only access to the x coordinate. Can also use my_point[0]. Use the my_point[0] = 1.0; form if you need to set the value. More...
 
float y () const
 Read only access to the y coordinate. Can also use my_point[1]. Use the my_point[1] = 1.0; form if you need to set the value. More...
 
float z () const
 Read only access to the z coordinate. Can also use my_point[2]. Use the my_point[2] = 1.0; form if you need to set the value. More...
 
float w () const
 In homogeneous coordinates, the w coordinate for all points is 1.0. More...
 
const float * value_ptr () const
 Returns a const pointer to the raw data array. More...
 
Point3 Lerp (const Point3 &b, float alpha) const
 Linear interpolation between this point and another. Alpha=0.0 returns this point, and alpha=1.0 returns the other point, other values blend between the two. More...
 
float DistanceToPlane (const Point3 &plane_origin, const Vector3 &plane_normal)
 Returns the shortest (i.e., perpendicular) distance from this point to a plane defined by a point and a normal. More...
 
Point3 ClosestPointOnPlane (const Point3 &plane_origin, const Vector3 &plane_normal)
 Returns the perpendicular projection of this point onto a plane defined by a point and a normal. More...
 
Point3 ClosestPoint (const std::vector< Point3 > &point_list)
 Given a list of points, returns the closest in the last to the current point. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static const Point3Origin ()
 (0,0,0) - a shortcut for a special point that is frequently needed More...
 
static const Point3Zero ()
 (0,0,0) - a shortcut for a special point that is frequently needed More...
 
static const Point3One ()
 (1,1,1) - a shortcut for a special point that is frequently needed More...
 
static Point3 Lerp (const Point3 &a, const Point3 &b, float alpha)
 Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Point3() [1/4]

+ +
+
+ + + + + + + +
mingfx::Point3::Point3 ()
+
+ +

Default point at the origin.

+ +
+
+ +

◆ Point3() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
mingfx::Point3::Point3 (float x,
float y,
float z 
)
+
+ +

Constructs a point given (x,y,z,1), where the 1 comes from the use of homogeneous coordinates in computer graphics.

+ +
+
+ +

◆ Point3() [3/4]

+ +
+
+ + + + + + + + +
mingfx::Point3::Point3 (float * p)
+
+ +

Constructs a point given a pointer to x,y,z data.

+ +
+
+ +

◆ Point3() [4/4]

+ +
+
+ + + + + + + + +
mingfx::Point3::Point3 (const Point3p)
+
+ +

Copy constructor for point.

+ +
+
+ +

◆ ~Point3()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Point3::~Point3 ()
+
+virtual
+
+ +

Point destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ClosestPoint()

+ +
+
+ + + + + + + + +
Point3 mingfx::Point3::ClosestPoint (const std::vector< Point3 > & point_list)
+
+ +

Given a list of points, returns the closest in the last to the current point.

+ +
+
+ +

◆ ClosestPointOnPlane()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Point3 mingfx::Point3::ClosestPointOnPlane (const Point3plane_origin,
const Vector3plane_normal 
)
+
+ +

Returns the perpendicular projection of this point onto a plane defined by a point and a normal.

+ +
+
+ +

◆ DistanceToPlane()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float mingfx::Point3::DistanceToPlane (const Point3plane_origin,
const Vector3plane_normal 
)
+
+ +

Returns the shortest (i.e., perpendicular) distance from this point to a plane defined by a point and a normal.

+ +
+
+ +

◆ Lerp() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Point3 mingfx::Point3::Lerp (const Point3a,
const Point3b,
float alpha 
)
+
+static
+
+ +

Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two.

+ +
+
+ +

◆ Lerp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Point3 mingfx::Point3::Lerp (const Point3b,
float alpha 
) const
+
+ +

Linear interpolation between this point and another. Alpha=0.0 returns this point, and alpha=1.0 returns the other point, other values blend between the two.

+ +
+
+ +

◆ One()

+ +
+
+ + + + + +
+ + + + + + + +
static const Point3& mingfx::Point3::One ()
+
+static
+
+ +

(1,1,1) - a shortcut for a special point that is frequently needed

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool mingfx::Point3::operator!= (const Point3p) const
+
+ +

Check for "inequality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Point3& mingfx::Point3::operator= (const Point3p)
+
+ +

Assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool mingfx::Point3::operator== (const Point3p) const
+
+ +

Check for "equality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
float& mingfx::Point3::operator[] (const int i)
+
+ +

Returns a reference to the ith coordinate of the point. Use this accessor if you wish to set the coordinate rather than just request its value. Example:

+
+
a[0] = 5.0; // set the x-coordinate of the point
+
+
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
float mingfx::Point3::operator[] (const int i) const
+
+ +

Read only access to the ith coordinate of the point.

+ +
+
+ +

◆ Origin()

+ +
+
+ + + + + +
+ + + + + + + +
static const Point3& mingfx::Point3::Origin ()
+
+static
+
+ +

(0,0,0) - a shortcut for a special point that is frequently needed

+ +
+
+ +

◆ value_ptr()

+ +
+
+ + + + + + + +
const float* mingfx::Point3::value_ptr () const
+
+ +

Returns a const pointer to the raw data array.

+ +
+
+ +

◆ w()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Point3::w () const
+
+inline
+
+ +

In homogeneous coordinates, the w coordinate for all points is 1.0.

+ +

Definition at line 104 of file point3.h.

+ +
+
+ +

◆ x()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Point3::x () const
+
+inline
+
+ +

Read only access to the x coordinate. Can also use my_point[0]. Use the my_point[0] = 1.0; form if you need to set the value.

+ +

Definition at line 93 of file point3.h.

+ +
+
+ +

◆ y()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Point3::y () const
+
+inline
+
+ +

Read only access to the y coordinate. Can also use my_point[1]. Use the my_point[1] = 1.0; form if you need to set the value.

+ +

Definition at line 97 of file point3.h.

+ +
+
+ +

◆ z()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Point3::z () const
+
+inline
+
+ +

Read only access to the z coordinate. Can also use my_point[2]. Use the my_point[2] = 1.0; form if you need to set the value.

+ +

Definition at line 101 of file point3.h.

+ +
+
+ +

◆ Zero()

+ +
+
+ + + + + +
+ + + + + + + +
static const Point3& mingfx::Point3::Zero ()
+
+static
+
+ +

(0,0,0) - a shortcut for a special point that is frequently needed

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_quaternion-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_quaternion-members.html new file mode 100644 index 0000000..4015421 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_quaternion-members.html @@ -0,0 +1,119 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Quaternion Member List
+
+
+ +

This is the complete list of members for mingfx::Quaternion, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Conjugate() constmingfx::Quaternion
Dot(const Quaternion &q) constmingfx::Quaternion
FromAxisAngle(const Vector3 &axis, float angle)mingfx::Quaternionstatic
FromEulerAnglesZYX(const Vector3 &angles)mingfx::Quaternionstatic
Length() constmingfx::Quaternion
Normalize()mingfx::Quaternion
operator!=(const Quaternion &q) constmingfx::Quaternion
operator=(const Quaternion &q)mingfx::Quaternion
operator==(const Quaternion &q) constmingfx::Quaternion
operator[](const int i) constmingfx::Quaternion
operator[](const int i)mingfx::Quaternion
Quaternion()mingfx::Quaternion
Quaternion(float qx, float qy, float qz, float qw)mingfx::Quaternion
Quaternion(float *ptr)mingfx::Quaternion
Quaternion(const Quaternion &other)mingfx::Quaternion
Slerp(const Quaternion &other, float alpha) constmingfx::Quaternion
Slerp(const Quaternion &a, const Quaternion &b, float alpha)mingfx::Quaternionstatic
ToEulerAnglesZYX() constmingfx::Quaternion
ToUnit() constmingfx::Quaternion
value_ptr() constmingfx::Quaternion
w() constmingfx::Quaternioninline
x() constmingfx::Quaternioninline
y() constmingfx::Quaternioninline
z() constmingfx::Quaternioninline
~Quaternion()mingfx::Quaternionvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_quaternion.html b/dev/MinGfx/docs/html/classmingfx_1_1_quaternion.html new file mode 100644 index 0000000..3bce21e --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_quaternion.html @@ -0,0 +1,818 @@ + + + + + + + +MinGfx Toolkit: mingfx::Quaternion Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Quaternion Class Reference
+
+
+

Detailed Description

+

A quaternion to represent rotations in 3D space.

+

The main use of quaternions within the library is to support smooth interpolation between rotations, since this is not possible using Euler angles or rotation matrices. The class includes a Slerp routine for spherical interpolation between rotations. Example use:

// find a rotation 1/2 way between r1 and r2, both originally expressed in Euler angles
+
+
Vector3 euler1 = GfxMath::ToRadians(Vector3(0,0,60));
+
Vector3 euler2 = GfxMath::ToRadians(Vector3(45,45,60));
+
+ + +
+
float alpha = 0.5;
+
Quaternion q_half_way = q1.Slerp(q2, alpha);
+
Vector3 new_euler_angles = GfxMath::ToDegrees(q_half_way.ToEulerAnglesZYX());
+
static float ToRadians(float degrees)
+
static float ToDegrees(float radians)
+
static Quaternion FromEulerAnglesZYX(const Vector3 &angles)
Creates a new quaternion from a rotation defined in Euler angles.
+
Quaternion()
Creates a quat with the identity rotation.
+
+

Definition at line 41 of file quaternion.h.

+
+

#include <quaternion.h>

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

+Public Member Functions

 Quaternion ()
 Creates a quat with the identity rotation. More...
 
 Quaternion (float qx, float qy, float qz, float qw)
 Creates a quat from the 4 parameters. More...
 
 Quaternion (float *ptr)
 Creates a quate from a pointer to 4 floating point numbers in the order qx, qy, qz, qw. More...
 
 Quaternion (const Quaternion &other)
 Copy constructor. More...
 
virtual ~Quaternion ()
 
bool operator== (const Quaternion &q) const
 Check for "equality", taking floating point imprecision into account. More...
 
bool operator!= (const Quaternion &q) const
 Check for "inequality", taking floating point imprecision into account. More...
 
Quaternionoperator= (const Quaternion &q)
 Assignment operator. More...
 
float operator[] (const int i) const
 Read only access to the ith coordinate of the quaternion (qx, qy, qz, qw). More...
 
float & operator[] (const int i)
 Writable access the ith coordinate of the quaternion (qx, qy, qz, qw). More...
 
float x () const
 Read only access to the x coordinate of the imaginary part of the quaternion. More...
 
float y () const
 Read only access to the y coordinate of the imaginary part of the quaternion. More...
 
float z () const
 Read only access to the z coordinate of the imaginary part of the quaternion. More...
 
float w () const
 Read only access to the w, real part, of the quaternion. More...
 
const float * value_ptr () const
 Returns a const pointer to the raw data array, stored in the order qx, qy, qz, qw. More...
 
float Dot (const Quaternion &q) const
 Returns the dot product of this quaternion with another. More...
 
float Length () const
 Returns the length of the quaternion. More...
 
void Normalize ()
 Normalizes the quat by making it unit length. More...
 
Quaternion ToUnit () const
 Returns a normalized (i.e., unit length) version of the quaternion without modifying the original. More...
 
Quaternion Conjugate () const
 Returns the conjugate of the quaternion. More...
 
Vector3 ToEulerAnglesZYX () const
 Converts the rotation specified by the quaternion into Euler angles. More...
 
Quaternion Slerp (const Quaternion &other, float alpha) const
 Uses spherical interpolation to interpoloate between the rotation stored in this quaternion and the rotation stored in another. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static Quaternion FromAxisAngle (const Vector3 &axis, float angle)
 Creates a new quaternion that describes a rotation by angle radians about. More...
 
static Quaternion FromEulerAnglesZYX (const Vector3 &angles)
 Creates a new quaternion from a rotation defined in Euler angles. More...
 
static Quaternion Slerp (const Quaternion &a, const Quaternion &b, float alpha)
 Uses spherical interpolation to interpoloate between the rotations specified by two quaternions. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Quaternion() [1/4]

+ +
+
+ + + + + + + +
mingfx::Quaternion::Quaternion ()
+
+ +

Creates a quat with the identity rotation.

+ +
+
+ +

◆ Quaternion() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
mingfx::Quaternion::Quaternion (float qx,
float qy,
float qz,
float qw 
)
+
+ +

Creates a quat from the 4 parameters.

+ +
+
+ +

◆ Quaternion() [3/4]

+ +
+
+ + + + + + + + +
mingfx::Quaternion::Quaternion (float * ptr)
+
+ +

Creates a quate from a pointer to 4 floating point numbers in the order qx, qy, qz, qw.

+ +
+
+ +

◆ Quaternion() [4/4]

+ +
+
+ + + + + + + + +
mingfx::Quaternion::Quaternion (const Quaternionother)
+
+ +

Copy constructor.

+ +
+
+ +

◆ ~Quaternion()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Quaternion::~Quaternion ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ Conjugate()

+ +
+
+ + + + + + + +
Quaternion mingfx::Quaternion::Conjugate () const
+
+ +

Returns the conjugate of the quaternion.

+ +
+
+ +

◆ Dot()

+ +
+
+ + + + + + + + +
float mingfx::Quaternion::Dot (const Quaternionq) const
+
+ +

Returns the dot product of this quaternion with another.

+ +
+
+ +

◆ FromAxisAngle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Quaternion mingfx::Quaternion::FromAxisAngle (const Vector3axis,
float angle 
)
+
+static
+
+ +

Creates a new quaternion that describes a rotation by angle radians about.

+ +
+
+ +

◆ FromEulerAnglesZYX()

+ +
+
+ + + + + +
+ + + + + + + + +
static Quaternion mingfx::Quaternion::FromEulerAnglesZYX (const Vector3angles)
+
+static
+
+ +

Creates a new quaternion from a rotation defined in Euler angles.

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + + + +
float mingfx::Quaternion::Length () const
+
+ +

Returns the length of the quaternion.

+ +
+
+ +

◆ Normalize()

+ +
+
+ + + + + + + +
void mingfx::Quaternion::Normalize ()
+
+ +

Normalizes the quat by making it unit length.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool mingfx::Quaternion::operator!= (const Quaternionq) const
+
+ +

Check for "inequality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Quaternion& mingfx::Quaternion::operator= (const Quaternionq)
+
+ +

Assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool mingfx::Quaternion::operator== (const Quaternionq) const
+
+ +

Check for "equality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
float& mingfx::Quaternion::operator[] (const int i)
+
+ +

Writable access the ith coordinate of the quaternion (qx, qy, qz, qw).

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
float mingfx::Quaternion::operator[] (const int i) const
+
+ +

Read only access to the ith coordinate of the quaternion (qx, qy, qz, qw).

+ +
+
+ +

◆ Slerp() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Quaternion mingfx::Quaternion::Slerp (const Quaterniona,
const Quaternionb,
float alpha 
)
+
+static
+
+ +

Uses spherical interpolation to interpoloate between the rotations specified by two quaternions.

+ +
+
+ +

◆ Slerp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Quaternion mingfx::Quaternion::Slerp (const Quaternionother,
float alpha 
) const
+
+ +

Uses spherical interpolation to interpoloate between the rotation stored in this quaternion and the rotation stored in another.

+ +
+
+ +

◆ ToEulerAnglesZYX()

+ +
+
+ + + + + + + +
Vector3 mingfx::Quaternion::ToEulerAnglesZYX () const
+
+ +

Converts the rotation specified by the quaternion into Euler angles.

+ +
+
+ +

◆ ToUnit()

+ +
+
+ + + + + + + +
Quaternion mingfx::Quaternion::ToUnit () const
+
+ +

Returns a normalized (i.e., unit length) version of the quaternion without modifying the original.

+ +
+
+ +

◆ value_ptr()

+ +
+
+ + + + + + + +
const float* mingfx::Quaternion::value_ptr () const
+
+ +

Returns a const pointer to the raw data array, stored in the order qx, qy, qz, qw.

+ +
+
+ +

◆ w()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Quaternion::w () const
+
+inline
+
+ +

Read only access to the w, real part, of the quaternion.

+ +

Definition at line 83 of file quaternion.h.

+ +
+
+ +

◆ x()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Quaternion::x () const
+
+inline
+
+ +

Read only access to the x coordinate of the imaginary part of the quaternion.

+ +

Definition at line 74 of file quaternion.h.

+ +
+
+ +

◆ y()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Quaternion::y () const
+
+inline
+
+ +

Read only access to the y coordinate of the imaginary part of the quaternion.

+ +

Definition at line 77 of file quaternion.h.

+ +
+
+ +

◆ z()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Quaternion::z () const
+
+inline
+
+ +

Read only access to the z coordinate of the imaginary part of the quaternion.

+ +

Definition at line 80 of file quaternion.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes-members.html new file mode 100644 index 0000000..6b52b39 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes-members.html @@ -0,0 +1,111 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::QuickShapes Member List
+
+
+ +

This is the complete list of members for mingfx::QuickShapes, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
default_shader()mingfx::QuickShapes
DrawArrow(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, Point3 p, Vector3 dir, float radius)mingfx::QuickShapes
DrawAxes(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix)mingfx::QuickShapes
DrawBrush(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)mingfx::QuickShapes
DrawCone(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)mingfx::QuickShapes
DrawCube(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)mingfx::QuickShapes
DrawCylinder(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)mingfx::QuickShapes
DrawFullscreenTexture(const Color &color, const Texture2D &texture)mingfx::QuickShapes
DrawLines(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const std::vector< Point3 > &points, LinesType linesType, float radius)mingfx::QuickShapes
DrawLineSegment(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const Point3 &p1, const Point3 &p2, float radius)mingfx::QuickShapes
DrawSphere(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)mingfx::QuickShapes
DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)mingfx::QuickShapes
DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const Texture2D &texture)mingfx::QuickShapes
LinesType enum namemingfx::QuickShapes
material()mingfx::QuickShapes
QuickShapes()mingfx::QuickShapes
~QuickShapes()mingfx::QuickShapesvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes.html b/dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes.html new file mode 100644 index 0000000..f499aff --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_quick_shapes.html @@ -0,0 +1,844 @@ + + + + + + + +MinGfx Toolkit: mingfx::QuickShapes Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::QuickShapes Class Reference
+
+
+

Detailed Description

+

This class provides a quick way to draw shapes for use in debugging or simple scenes.

+

You can specify the color for each shape as part of the Draw...() call. Other lighting parameters (the intensity of the light, advanced material properties) are pre-set to reasonable defaults that apply to all of the shapes drawn. You can edit these if you wish, but note that the intent of this class is just to provide a quick way to draw shapes – this is not the right tool to use if you wish to do quality renderings and use multiple types of materials.

+

Example usage: ~~~ define a new QuickShapes object during initialization, or as a class member variable QuickShapes quick_shapes;

+

void DrawUsingOpenGL() { later, in your draw routine, use it to draw shapes Matrix4 view = Matrix4::LookAt(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0)); Matrix4 proj = Matrix4::Perspective(60.0, aspect_ratio(), 0.1, 10.0);

+

Matrix4 m_cube = Matrix4::Translation(Vector3(-2.5,0,0)) * Matrix4::Scale(Vector3(0.5, 0.5, 0.5)); quick_shapes.DrawCube(m_cube, view, proj, Color(1,1,1));

+

Matrix4 m_sphere = Matrix4::Scale(Vector3(2.5, 2.5, 2.5)); quick_shapes.DrawSphere(m_sphere, view, proj, Color(1,1,1));

+

Matrix4 m_loop; std::vector<Point3> loop; loop.push_back(Point3( 4.0, 4.0, -4.0)); loop.push_back(Point3(-4.0, 4.0, -4.0)); loop.push_back(Point3(-4.0, 4.0, 4.0)); loop.push_back(Point3( 4.0, 4.0, 4.0)); quick_shapes.DrawLines(m_loop, view, proj, Color(1,1,1), loop, QuickShapes::LinesType::LINE_LOOP, 0.1); } ~~~

+ +

Definition at line 69 of file quick_shapes.h.

+
+

#include <quick_shapes.h>

+ + + + +

+Public Types

enum class  LinesType { LINES +, LINE_STRIP +, LINE_LOOP + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 QuickShapes ()
 
virtual ~QuickShapes ()
 
void DrawCube (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
 Draws a cube with extents -1 to 1 given the model, view, and projection matrices provided and using the supplied color as a material property. More...
 
void DrawCylinder (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
 Draws a cylinder with radius 1 and height y=-1 to 1 given the model, view, and projection matrices provided and using the supplied color as a material property. More...
 
void DrawCone (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
 Draws a cone with radius 1 and height y=-1 to 1 given the model, view, and projection matrices provided and using the supplied color as a material property. More...
 
void DrawSphere (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
 Draws a sphere with radius 1 given the model, view, and projection matrices provided and using the supplied color as a material property. More...
 
void DrawBrush (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
 Draws the classic 3D paintbrush cursor from the 2001 Keefe et al. More...
 
void DrawLineSegment (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const Point3 &p1, const Point3 &p2, float radius)
 Draws a cylinder between the two points. More...
 
void DrawLines (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const std::vector< Point3 > &points, LinesType linesType, float radius)
 Draws a series of line segments. More...
 
void DrawArrow (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, Point3 p, Vector3 dir, float radius)
 Draws an arrow originating at point p and extending in the direction and length specified by dir. More...
 
void DrawAxes (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix)
 Draws a right handed set of axes at the coordinate frame specified by the modelMatrix. More...
 
void DrawSquare (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
 Draws a square in the X-Y plane with extents -1 to 1 and normal in the +Y direction. More...
 
void DrawSquare (const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const Texture2D &texture)
 Draws a square, which you can deform into some other shape by adjusting the model matrix, and applies a texture to it. More...
 
void DrawFullscreenTexture (const Color &color, const Texture2D &texture)
 Draws a background texture across the whole screen. More...
 
DefaultShaderdefault_shader ()
 Returns a pointer to the default shader used internally by the Draw class so that you may change the default lighting properties if you wish. More...
 
DefaultShader::MaterialPropertiesmaterial ()
 Returns a pointer to the default material properties for the shapes so that you may adjust the reflectance properties used by all the shapes if needed. More...
 
+

Member Enumeration Documentation

+ +

◆ LinesType

+ +
+
+ + + + + +
+ + + + +
enum mingfx::QuickShapes::LinesType
+
+strong
+
+ + + + +
Enumerator
LINES 
LINE_STRIP 
LINE_LOOP 
+ +

Definition at line 134 of file quick_shapes.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ QuickShapes()

+ +
+
+ + + + + + + +
mingfx::QuickShapes::QuickShapes ()
+
+ +
+
+ +

◆ ~QuickShapes()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::QuickShapes::~QuickShapes ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ default_shader()

+ +
+
+ + + + + + + +
DefaultShader* mingfx::QuickShapes::default_shader ()
+
+ +

Returns a pointer to the default shader used internally by the Draw class so that you may change the default lighting properties if you wish.

+ +
+
+ +

◆ DrawArrow()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawArrow (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor,
Point3 p,
Vector3 dir,
float radius 
)
+
+ +

Draws an arrow originating at point p and extending in the direction and length specified by dir.

+

radius is the radius of the cylinder used to draw the shaft of the arrow.

+ +
+
+ +

◆ DrawAxes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawAxes (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix 
)
+
+ +

Draws a right handed set of axes at the coordinate frame specified by the modelMatrix.

+

The arrows are 1 unit in length and colored based on the axis: X=red, Y=green, Z=blue.

+ +
+
+ +

◆ DrawBrush()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawBrush (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor 
)
+
+ +

Draws the classic 3D paintbrush cursor from the 2001 Keefe et al.

+

CavePainting paper. The tip of the brush is at (0,0,0), the front flat edge runs along the X axis, and the handle runs in the +Z direction.

+ +
+
+ +

◆ DrawCone()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawCone (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor 
)
+
+ +

Draws a cone with radius 1 and height y=-1 to 1 given the model, view, and projection matrices provided and using the supplied color as a material property.

+ +
+
+ +

◆ DrawCube()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawCube (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor 
)
+
+ +

Draws a cube with extents -1 to 1 given the model, view, and projection matrices provided and using the supplied color as a material property.

+ +
+
+ +

◆ DrawCylinder()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawCylinder (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor 
)
+
+ +

Draws a cylinder with radius 1 and height y=-1 to 1 given the model, view, and projection matrices provided and using the supplied color as a material property.

+ +
+
+ +

◆ DrawFullscreenTexture()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawFullscreenTexture (const Colorcolor,
const Texture2Dtexture 
)
+
+ +

Draws a background texture across the whole screen.

+

Typically, you will want to do this before any other draw calls.

+ +
+
+ +

◆ DrawLines()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawLines (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor,
const std::vector< Point3 > & points,
LinesType linesType,
float radius 
)
+
+ +

Draws a series of line segments.

+

Using linesType=LINES connects each consecutive pair of points in the points array with a line. A linesType=LINE_STRIP will connect each point to the next. And, a linesType=LINE_LOOP will connect each point to the next and in addition connect the last to the first. Example:

Matrix4 model;
+
Matrix4 view = Matrix4::LookAt(Point3(0,0,3), Point3(0,0,0), Vector3(0,1,0));
+
Matrix4 proj = Matrix4::Perspective(60.0, aspect_ratio(), 0.1, 10.0);
+
std::vector<Point3> loop;
+
loop.push_back(Point3( 4.0, 4.0, -4.0));
+
loop.push_back(Point3(-4.0, 4.0, -4.0));
+
loop.push_back(Point3(-4.0, 4.0, 4.0));
+
loop.push_back(Point3( 4.0, 4.0, 4.0));
+
quick_shapes.DrawLines(model, view, proj, Color(1,1,1), loop, QuickShapes::LinesType::LINE_LOOP, 0.1);
+
static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)
Returns a perspective projection matrix equivalent to the one gluPerspective creates.
+
static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)
Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...
+ +
+
+
+ +

◆ DrawLineSegment()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawLineSegment (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor,
const Point3p1,
const Point3p2,
float radius 
)
+
+ +

Draws a cylinder between the two points.

+ +
+
+ +

◆ DrawSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawSphere (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor 
)
+
+ +

Draws a sphere with radius 1 given the model, view, and projection matrices provided and using the supplied color as a material property.

+ +
+
+ +

◆ DrawSquare() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawSquare (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor 
)
+
+ +

Draws a square in the X-Y plane with extents -1 to 1 and normal in the +Y direction.

+

Uses the model, view, and projection matrices provided and the supplied color as a material property.

+ +
+
+ +

◆ DrawSquare() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::QuickShapes::DrawSquare (const Matrix4modelMatrix,
const Matrix4viewMatrix,
const Matrix4projectionMatrix,
const Colorcolor,
const Texture2Dtexture 
)
+
+ +

Draws a square, which you can deform into some other shape by adjusting the model matrix, and applies a texture to it.

+

The texture must already be bound to the OpenGL textureID provided. The square lies in the X-Y plane with extents -1 to 1 and normal in the +Y direction. No lighting is applied.

+ +
+
+ +

◆ material()

+ +
+
+ + + + + + + +
DefaultShader::MaterialProperties* mingfx::QuickShapes::material ()
+
+ +

Returns a pointer to the default material properties for the shapes so that you may adjust the reflectance properties used by all the shapes if needed.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_ray-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_ray-members.html new file mode 100644 index 0000000..f27cee9 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_ray-members.html @@ -0,0 +1,110 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Ray Member List
+
+
+ +

This is the complete list of members for mingfx::Ray, including all inherited members.

+ + + + + + + + + + + + + + + + + +
direction() constmingfx::Ray
FastIntersectMesh(Mesh *mesh, float *iTime, Point3 *iPoint, int *iTriangleID) constmingfx::Ray
IntersectAABB(const AABB &box, float *iTime) constmingfx::Ray
IntersectMesh(const Mesh &mesh, float *iTime, Point3 *iPoint, int *iTriangleID) constmingfx::Ray
IntersectPlane(const Point3 &planePt, const Vector3 &planeNormal, float *iTime, Point3 *iPoint) constmingfx::Ray
IntersectQuad(const Point3 &v1, const Point3 &v2, const Point3 &v3, const Point3 &v4, float *iTime, Point3 *iPoint) constmingfx::Ray
IntersectSphere(const Point3 &center, float radius, float *iTime, Point3 *iPoint) constmingfx::Ray
IntersectTriangle(const Point3 &v1, const Point3 &v2, const Point3 &v3, float *iTime, Point3 *iPoint) constmingfx::Ray
Length() constmingfx::Ray
operator!=(const Ray &other) constmingfx::Ray
operator==(const Ray &other) constmingfx::Ray
origin() constmingfx::Ray
Ray()mingfx::Ray
Ray(const Point3 &origin, const Vector3 &direction)mingfx::Ray
set(Point3 newOrigin, Vector3 newDir)mingfx::Ray
~Ray()mingfx::Rayvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_ray.html b/dev/MinGfx/docs/html/classmingfx_1_1_ray.html new file mode 100644 index 0000000..0c5b500 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_ray.html @@ -0,0 +1,689 @@ + + + + + + + +MinGfx Toolkit: mingfx::Ray Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Ray Class Reference
+
+
+

Detailed Description

+

Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a direction (a unit 3D vector).

+

Rays can intersect a variety of other computer graphics objects, such as planes, triangles, spheres, 3D meshes, etc. These intersections can be tested with the Intersect...() methods. The Ray can also be transformed by a Matrix4. Example:

// Create a pick ray from the mouse position
+
void MyGraphicsApp::OnLeftMouseDown(const Point2 &pos) {
+
Point2 mouse_xy = PixelsToNormalizedDeviceCoords(pos);
+
float mouse_z = ReadZValueAtPixel(pos);
+
Point3 mouse_3d = GfxMath::ScreenToNearPlane(view_matrix, proj_matrix, mouse_xy, mouse_z);
+
Matrix4 camera_matrix = view_matrix.Inverse();
+
Point3 eye = camera_matrix.ColumnToPoint3(3);
+
+
Ray pick_ray(eye, mouse_3d - eye);
+
+
// check to see if the ray intersects a sphere
+
float t;
+
Point3 p;
+
if (pick_ray.IntersectSphere(Point3(0,0,0), 2.0, &t, &p)) {
+
std::cout << "Mouse pointing at sphere! Intersection point = " << p << std::endl;
+
}
+
}
+
static Point3 ScreenToNearPlane(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt)
Converts a 2D point on the filmplane represented in Normalized Device Coorindates,...
+
Ray()
Defaults to a ray at the origin and pointing in the -Z direction.
+
+

Definition at line 54 of file ray.h.

+
+

#include <ray.h>

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

+Public Member Functions

 Ray ()
 Defaults to a ray at the origin and pointing in the -Z direction. More...
 
 Ray (const Point3 &origin, const Vector3 &direction)
 Creates a ray from a 3D origin and direction. More...
 
virtual ~Ray ()
 Ray destructor. More...
 
bool operator== (const Ray &other) const
 Check for "equality", taking floating point imprecision into account. More...
 
bool operator!= (const Ray &other) const
 Check for "inequality", taking floating point imprecision into account. More...
 
float Length () const
 Returns the length of the direction vector. More...
 
bool IntersectPlane (const Point3 &planePt, const Vector3 &planeNormal, float *iTime, Point3 *iPoint) const
 Checks to see if the ray intersects a plane defined by a point and a normal. More...
 
bool IntersectTriangle (const Point3 &v1, const Point3 &v2, const Point3 &v3, float *iTime, Point3 *iPoint) const
 Checks to see if the ray intersects a triangle defined by the vertices v1, v2, and v3. More...
 
bool IntersectQuad (const Point3 &v1, const Point3 &v2, const Point3 &v3, const Point3 &v4, float *iTime, Point3 *iPoint) const
 Checks to see if the ray intersects a quad defined by the vertices v1, v2, v3, and v4. More...
 
bool IntersectSphere (const Point3 &center, float radius, float *iTime, Point3 *iPoint) const
 Checks to see if the ray intersects a sphere defined by a center point and a radius. More...
 
bool IntersectMesh (const Mesh &mesh, float *iTime, Point3 *iPoint, int *iTriangleID) const
 Checks to see if the ray intersects a triangle mesh. More...
 
bool FastIntersectMesh (Mesh *mesh, float *iTime, Point3 *iPoint, int *iTriangleID) const
 Checks to see if the ray intersects a triangle mesh. More...
 
bool IntersectAABB (const AABB &box, float *iTime) const
 Checks to see if the ray intersects an AABB (Axis-Aligned Bounding Box). More...
 
Point3 origin () const
 Returns the origin. More...
 
Vector3 direction () const
 Returns the direction. More...
 
void set (Point3 newOrigin, Vector3 newDir)
 Sets a new origin and direction. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Ray() [1/2]

+ +
+
+ + + + + + + +
mingfx::Ray::Ray ()
+
+ +

Defaults to a ray at the origin and pointing in the -Z direction.

+ +
+
+ +

◆ Ray() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
mingfx::Ray::Ray (const Point3origin,
const Vector3direction 
)
+
+ +

Creates a ray from a 3D origin and direction.

+ +
+
+ +

◆ ~Ray()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Ray::~Ray ()
+
+virtual
+
+ +

Ray destructor.

+ +
+
+

Member Function Documentation

+ +

◆ direction()

+ +
+
+ + + + + + + +
Vector3 mingfx::Ray::direction () const
+
+ +

Returns the direction.

+ +
+
+ +

◆ FastIntersectMesh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool mingfx::Ray::FastIntersectMesh (Meshmesh,
float * iTime,
Point3iPoint,
int * iTriangleID 
) const
+
+ +

Checks to see if the ray intersects a triangle mesh.

+

This uses a BVH (Bounding Volume Hierarchy) to accelerate the ray-triangle intersection tests. Each mesh can optionally store a BVH. If a BVH has already been calculated for the mesh (done with Mesh::CalculateBVH()), then this function will be much faster than the brute-force IntersectMesh() function. If a BVH has not already been calculated for the mesh, the first call to FastIntersectMesh() will trigger the mesh to create a BVH (not a fast operation) but then subsequent calls to FastIntersectMesh() will be fast.

+ +
+
+ +

◆ IntersectAABB()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool mingfx::Ray::IntersectAABB (const AABBbox,
float * iTime 
) const
+
+ +

Checks to see if the ray intersects an AABB (Axis-Aligned Bounding Box).

+

Typically, this is the first step of a more detailed intersection test and we don't care about the actual point of intersection, just whether it intersects or not. So, we don't bother calculating the iPoint. We get the iTime for free though, so we do return that. You can calc the iPoint if you want using:

float t;
+
if (ray.IntersectAABB(box, &t)) {
+
Point3 iPoint = ray.origin() + t*ray.direction();
+
}
+
+
+
+ +

◆ IntersectMesh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool mingfx::Ray::IntersectMesh (const Meshmesh,
float * iTime,
Point3iPoint,
int * iTriangleID 
) const
+
+ +

Checks to see if the ray intersects a triangle mesh.

+

This is a brute-force check over each triangle in the mesh. If there was an intersection, true is returned, iTime is set to the intersection time, iPoint is set to the intersection point, and iTriangleID is set to the ID of the closest intersected triangle along the ray.

+ +
+
+ +

◆ IntersectPlane()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool mingfx::Ray::IntersectPlane (const Point3planePt,
const Vector3planeNormal,
float * iTime,
Point3iPoint 
) const
+
+ +

Checks to see if the ray intersects a plane defined by a point and a normal.

+

If there was an intersection, true is returned, iTime is set to the intersection time, and iPoint is set to the intersection point. The plane is considered to be 1-sided. That is the intersection will only occur if the ray hits the plane from its front side as determined by the plane's normal.

+ +
+
+ +

◆ IntersectQuad()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool mingfx::Ray::IntersectQuad (const Point3v1,
const Point3v2,
const Point3v3,
const Point3v4,
float * iTime,
Point3iPoint 
) const
+
+ +

Checks to see if the ray intersects a quad defined by the vertices v1, v2, v3, and v4.

+

The vertices must be provided in counter-clockwise order so that the normal of the triangle can be determined via the right-hand rule. The intersection will only happen if the ray hits the front side of the triangle. If there was an intersection, true is returned, iTime is set to the intersection time, and iPoint is set to the intersection point.

+ +
+
+ +

◆ IntersectSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool mingfx::Ray::IntersectSphere (const Point3center,
float radius,
float * iTime,
Point3iPoint 
) const
+
+ +

Checks to see if the ray intersects a sphere defined by a center point and a radius.

+

If there was an intersection, true is returned, iTime is set to the intersection time, and iPoint is set to the intersection point.

+ +
+
+ +

◆ IntersectTriangle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool mingfx::Ray::IntersectTriangle (const Point3v1,
const Point3v2,
const Point3v3,
float * iTime,
Point3iPoint 
) const
+
+ +

Checks to see if the ray intersects a triangle defined by the vertices v1, v2, and v3.

+

The vertices must be provided in counter-clockwise order so that the normal of the triangle can be determined via the right-hand rule. The intersection will only happen if the ray hits the front side of the triangle. If there was an intersection, true is returned, iTime is set to the intersection time, and iPoint is set to the intersection point.

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + + + +
float mingfx::Ray::Length () const
+
+ +

Returns the length of the direction vector.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool mingfx::Ray::operator!= (const Rayother) const
+
+ +

Check for "inequality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool mingfx::Ray::operator== (const Rayother) const
+
+ +

Check for "equality", taking floating point imprecision into account.

+ +
+
+ +

◆ origin()

+ +
+
+ + + + + + + +
Point3 mingfx::Ray::origin () const
+
+ +

Returns the origin.

+ +
+
+ +

◆ set()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::Ray::set (Point3 newOrigin,
Vector3 newDir 
)
+
+ +

Sets a new origin and direction.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_shader_program-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_shader_program-members.html new file mode 100644 index 0000000..1964ba3 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_shader_program-members.html @@ -0,0 +1,127 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::ShaderProgram Member List
+
+
+ +

This is the complete list of members for mingfx::ShaderProgram, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddFragmentShaderFromFile(const std::string &file)mingfx::ShaderProgram
AddFragmentShaderFromSource(const std::string &code)mingfx::ShaderProgram
AddVertexShaderFromFile(const std::string &file)mingfx::ShaderProgram
AddVertexShaderFromSource(const std::string &code)mingfx::ShaderProgram
BindTexture(const std::string &name, const Texture2D &tex)mingfx::ShaderProgram
BindTexture(const std::string &name, const Texture2D &tex, int texUnit)mingfx::ShaderProgram
initialized()mingfx::ShaderProgram
LinkProgram()mingfx::ShaderProgram
SetUniform(const std::string &name, const Point2 &p)mingfx::ShaderProgram
SetUniform(const std::string &name, const Vector2 &v)mingfx::ShaderProgram
SetUniform(const std::string &name, const Point3 &p)mingfx::ShaderProgram
SetUniform(const std::string &name, const Vector3 &v)mingfx::ShaderProgram
SetUniform(const std::string &name, const Matrix4 &m)mingfx::ShaderProgram
SetUniform(const std::string &name, const Color &c)mingfx::ShaderProgram
SetUniform(const std::string &name, int i)mingfx::ShaderProgram
SetUniform(const std::string &name, unsigned int ui)mingfx::ShaderProgram
SetUniform(const std::string &name, float f)mingfx::ShaderProgram
SetUniformArray1(const std::string &name, int *i, int count)mingfx::ShaderProgram
SetUniformArray1(const std::string &name, unsigned int *ui, int count)mingfx::ShaderProgram
SetUniformArray1(const std::string &name, float *f, int count)mingfx::ShaderProgram
SetUniformArray2(const std::string &name, int *i, int count)mingfx::ShaderProgram
SetUniformArray2(const std::string &name, unsigned int *ui, int count)mingfx::ShaderProgram
SetUniformArray2(const std::string &name, float *f, int count)mingfx::ShaderProgram
SetUniformArray3(const std::string &name, int *i, int count)mingfx::ShaderProgram
SetUniformArray3(const std::string &name, unsigned int *ui, int count)mingfx::ShaderProgram
SetUniformArray3(const std::string &name, float *f, int count)mingfx::ShaderProgram
SetUniformArray4(const std::string &name, int *i, int count)mingfx::ShaderProgram
SetUniformArray4(const std::string &name, unsigned int *ui, int count)mingfx::ShaderProgram
SetUniformArray4(const std::string &name, float *f, int count)mingfx::ShaderProgram
ShaderProgram()mingfx::ShaderProgram
StopProgram()mingfx::ShaderProgram
UseProgram()mingfx::ShaderProgram
~ShaderProgram()mingfx::ShaderProgramvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html b/dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html new file mode 100644 index 0000000..26f8de9 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html @@ -0,0 +1,1202 @@ + + + + + + + +MinGfx Toolkit: mingfx::ShaderProgram Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::ShaderProgram Class Reference
+
+
+

Detailed Description

+

A wrapper around GLSL shader programs.

+

This class supports loading vertex and fragment shaders from files or strings, compiling them, and then linking them into a shader program. Uniform variables within the shader programs can be set in order to pass parameters from C++ code into the shader program. Textures can also be bound to the shader. Example usage:

ShaderProgram shader_prog;
+
+
void MyGraphicsApp::InitOpenGL() {
+
shader_prog.AddVertexShaderFromFile(Platform::findFile("my_shader.vert", searchPath));
+
shader_prog.AddFragmentShaderFromFile(Platform::findFile("my_shader.frag", searchPath));
+
shader_prog.LinkProgram();
+
}
+
+
void MyGraphicsApp::DrawUsingOpenGL() {
+
// Activate the shader program
+
shader_prog.UseProgram();
+
+
// Pass uniforms and textures from C++ to the GPU Shader Program
+
shader_prog.SetUniform("ModelMatrix", modelMat);
+
shader_prog.SetUniform("ViewMatrix", viewMat);
+
shader_prog.SetUniform("ProjectionMatrix", projMat);
+
shader_prog.SetUniform("LightPosition", Point3(2,2,2));
+
shader_prog.BindTexture("SurfaceTexture", my_tex);
+
+
// Draw whatever geometry you want now
+
mesh1.Draw();
+
mesh2.Draw();
+
+
// Deactivate the shader program
+
shader_prog.StopProgram();
+
}
+
ShaderProgram()
Creates an empty ShaderProgram object.
+
+

Definition at line 66 of file shader_program.h.

+
+

#include <shader_program.h>

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

+Public Member Functions

 ShaderProgram ()
 Creates an empty ShaderProgram object. More...
 
virtual ~ShaderProgram ()
 
bool AddVertexShaderFromFile (const std::string &file)
 Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL()). This loads the shader from the file and compiles it. An error will be printed to stderr if there are any compilation errors. More...
 
bool AddVertexShaderFromSource (const std::string &code)
 This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. More...
 
bool AddFragmentShaderFromFile (const std::string &file)
 Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL()). This loads the shader from the file and compiles it. An error will be printed to stderr if there are any compilation errors. More...
 
bool AddFragmentShaderFromSource (const std::string &code)
 This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. More...
 
bool LinkProgram ()
 Call this after adding vertex and fragment shaders in order to link them together to create the full shader program. An error will be printed to stderr if there are any linking errors. More...
 
void UseProgram ()
 Call this first to make the shader program active, then call SetUniform() to pass data from your C++ program into the shader code via the named uniform variables that appear in the code. Then render whatever geometry you wish with your own glDrawArrays() call(s). Finally, call StopProgram() to turn off the shader program. More...
 
void SetUniform (const std::string &name, const Point2 &p)
 Passes the x,y values of point p to the shader program and stores the result in the shader variable named name, which should be of type vec2. More...
 
void SetUniform (const std::string &name, const Vector2 &v)
 Passes the x,y values of vector v to the shader program and stores the result in the shader variable named name, which should be of type vec2. More...
 
void SetUniform (const std::string &name, const Point3 &p)
 Passes the x,y,z,1 values of point p to the shader program and stores the result in the shader variable named name, which should be of type vec4. More...
 
void SetUniform (const std::string &name, const Vector3 &v)
 Passes the x,y,z,0 values of vector v to the shader program and stores the result in the shader variable named name, which should be of type vec4. More...
 
void SetUniform (const std::string &name, const Matrix4 &m)
 Passes the column-major 16 float values of matrix m to the shader program and stores the result in the shader variable named name, which should be of type mat4. More...
 
void SetUniform (const std::string &name, const Color &c)
 Passes the r,g,b,a values of color c to the shader program and stores the result in the shader variable named name, which should be of type vec4. More...
 
void SetUniform (const std::string &name, int i)
 Passes the int to the shader program and stores the result in the shader variable named name, which should be of type int. More...
 
void SetUniform (const std::string &name, unsigned int ui)
 Passes the unsigned int to the shader program and stores the result in the shader variable named name, which should be of type uint. More...
 
void SetUniform (const std::string &name, float f)
 Passes the float to the shader program and stores the result in the shader variable named name, which should be of type float. More...
 
void SetUniformArray1 (const std::string &name, int *i, int count)
 Passes an array of count ints to the shader program and stores the result in the shader variable named name, which should be of type int name[count]. More...
 
void SetUniformArray1 (const std::string &name, unsigned int *ui, int count)
 Passes an array of count unsigned ints to the shader program and stores the result in the shader variable named name, which should be of type uint name[count]. More...
 
void SetUniformArray1 (const std::string &name, float *f, int count)
 Passes an array of count floats to the shader program and stores the result in the shader variable named name, which should be of type float name[count]. More...
 
void SetUniformArray2 (const std::string &name, int *i, int count)
 Passes an array of count 2D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec2 name[count]. More...
 
void SetUniformArray2 (const std::string &name, unsigned int *ui, int count)
 Passes an array of count 2D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec2 name[count]. More...
 
void SetUniformArray2 (const std::string &name, float *f, int count)
 Passes an array of count 2D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec2 name[count]. More...
 
void SetUniformArray3 (const std::string &name, int *i, int count)
 Passes an array of count 3D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec3 name[count]. More...
 
void SetUniformArray3 (const std::string &name, unsigned int *ui, int count)
 Passes an array of count 3D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec3 name[count]. More...
 
void SetUniformArray3 (const std::string &name, float *f, int count)
 Passes an array of count 3D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec3 name[count]. More...
 
void SetUniformArray4 (const std::string &name, int *i, int count)
 Passes an array of count 4D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec4 name[count]. More...
 
void SetUniformArray4 (const std::string &name, unsigned int *ui, int count)
 Passes an array of count 4D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec4 name[count]. More...
 
void SetUniformArray4 (const std::string &name, float *f, int count)
 Passes an array of count 4D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec4 name[count]. More...
 
void BindTexture (const std::string &name, const Texture2D &tex)
 Binds a Texture2D to a sampler2D in the shader program. This version automatically selects an available texture unit, i.e., one not already used by this shader program. More...
 
void BindTexture (const std::string &name, const Texture2D &tex, int texUnit)
 Binds a Texture2D to a sampler2D in the shader program. This version allows you to specify the texture unit to use. More...
 
void StopProgram ()
 Call this after rendering geometry to deactivate the shader. More...
 
bool initialized ()
 Returns true if the shader program has been successfully compiled and linked. More...
 
+

Constructor & Destructor Documentation

+ +

◆ ShaderProgram()

+ +
+
+ + + + + + + +
mingfx::ShaderProgram::ShaderProgram ()
+
+ +

Creates an empty ShaderProgram object.

+ +
+
+ +

◆ ~ShaderProgram()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::ShaderProgram::~ShaderProgram ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ AddFragmentShaderFromFile()

+ +
+
+ + + + + + + + +
bool mingfx::ShaderProgram::AddFragmentShaderFromFile (const std::string & file)
+
+ +

Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL()). This loads the shader from the file and compiles it. An error will be printed to stderr if there are any compilation errors.

+ +
+
+ +

◆ AddFragmentShaderFromSource()

+ +
+
+ + + + + + + + +
bool mingfx::ShaderProgram::AddFragmentShaderFromSource (const std::string & code)
+
+ +

This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors.

+ +
+
+ +

◆ AddVertexShaderFromFile()

+ +
+
+ + + + + + + + +
bool mingfx::ShaderProgram::AddVertexShaderFromFile (const std::string & file)
+
+ +

Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL()). This loads the shader from the file and compiles it. An error will be printed to stderr if there are any compilation errors.

+ +
+
+ +

◆ AddVertexShaderFromSource()

+ +
+
+ + + + + + + + +
bool mingfx::ShaderProgram::AddVertexShaderFromSource (const std::string & code)
+
+ +

This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors.

+ +
+
+ +

◆ BindTexture() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::BindTexture (const std::string & name,
const Texture2Dtex 
)
+
+ +

Binds a Texture2D to a sampler2D in the shader program. This version automatically selects an available texture unit, i.e., one not already used by this shader program.

+ +
+
+ +

◆ BindTexture() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::BindTexture (const std::string & name,
const Texture2Dtex,
int texUnit 
)
+
+ +

Binds a Texture2D to a sampler2D in the shader program. This version allows you to specify the texture unit to use.

+ +
+
+ +

◆ initialized()

+ +
+
+ + + + + + + +
bool mingfx::ShaderProgram::initialized ()
+
+ +

Returns true if the shader program has been successfully compiled and linked.

+ +
+
+ +

◆ LinkProgram()

+ +
+
+ + + + + + + +
bool mingfx::ShaderProgram::LinkProgram ()
+
+ +

Call this after adding vertex and fragment shaders in order to link them together to create the full shader program. An error will be printed to stderr if there are any linking errors.

+ +
+
+ +

◆ SetUniform() [1/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
const Colorc 
)
+
+ +

Passes the r,g,b,a values of color c to the shader program and stores the result in the shader variable named name, which should be of type vec4.

+ +
+
+ +

◆ SetUniform() [2/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
const Matrix4m 
)
+
+ +

Passes the column-major 16 float values of matrix m to the shader program and stores the result in the shader variable named name, which should be of type mat4.

+ +
+
+ +

◆ SetUniform() [3/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
const Point2p 
)
+
+ +

Passes the x,y values of point p to the shader program and stores the result in the shader variable named name, which should be of type vec2.

+ +
+
+ +

◆ SetUniform() [4/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
const Point3p 
)
+
+ +

Passes the x,y,z,1 values of point p to the shader program and stores the result in the shader variable named name, which should be of type vec4.

+ +
+
+ +

◆ SetUniform() [5/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
const Vector2v 
)
+
+ +

Passes the x,y values of vector v to the shader program and stores the result in the shader variable named name, which should be of type vec2.

+ +
+
+ +

◆ SetUniform() [6/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
const Vector3v 
)
+
+ +

Passes the x,y,z,0 values of vector v to the shader program and stores the result in the shader variable named name, which should be of type vec4.

+ +
+
+ +

◆ SetUniform() [7/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
float f 
)
+
+ +

Passes the float to the shader program and stores the result in the shader variable named name, which should be of type float.

+ +
+
+ +

◆ SetUniform() [8/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
int i 
)
+
+ +

Passes the int to the shader program and stores the result in the shader variable named name, which should be of type int.

+ +
+
+ +

◆ SetUniform() [9/9]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniform (const std::string & name,
unsigned int ui 
)
+
+ +

Passes the unsigned int to the shader program and stores the result in the shader variable named name, which should be of type uint.

+ +
+
+ +

◆ SetUniformArray1() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray1 (const std::string & name,
float * f,
int count 
)
+
+ +

Passes an array of count floats to the shader program and stores the result in the shader variable named name, which should be of type float name[count].

+ +
+
+ +

◆ SetUniformArray1() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray1 (const std::string & name,
int * i,
int count 
)
+
+ +

Passes an array of count ints to the shader program and stores the result in the shader variable named name, which should be of type int name[count].

+ +
+
+ +

◆ SetUniformArray1() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray1 (const std::string & name,
unsigned int * ui,
int count 
)
+
+ +

Passes an array of count unsigned ints to the shader program and stores the result in the shader variable named name, which should be of type uint name[count].

+ +
+
+ +

◆ SetUniformArray2() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray2 (const std::string & name,
float * f,
int count 
)
+
+ +

Passes an array of count 2D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec2 name[count].

+ +
+
+ +

◆ SetUniformArray2() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray2 (const std::string & name,
int * i,
int count 
)
+
+ +

Passes an array of count 2D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec2 name[count].

+ +
+
+ +

◆ SetUniformArray2() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray2 (const std::string & name,
unsigned int * ui,
int count 
)
+
+ +

Passes an array of count 2D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec2 name[count].

+ +
+
+ +

◆ SetUniformArray3() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray3 (const std::string & name,
float * f,
int count 
)
+
+ +

Passes an array of count 3D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec3 name[count].

+ +
+
+ +

◆ SetUniformArray3() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray3 (const std::string & name,
int * i,
int count 
)
+
+ +

Passes an array of count 3D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec3 name[count].

+ +
+
+ +

◆ SetUniformArray3() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray3 (const std::string & name,
unsigned int * ui,
int count 
)
+
+ +

Passes an array of count 3D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec3 name[count].

+ +
+
+ +

◆ SetUniformArray4() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray4 (const std::string & name,
float * f,
int count 
)
+
+ +

Passes an array of count 4D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec4 name[count].

+ +
+
+ +

◆ SetUniformArray4() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray4 (const std::string & name,
int * i,
int count 
)
+
+ +

Passes an array of count 4D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec4 name[count].

+ +
+
+ +

◆ SetUniformArray4() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::ShaderProgram::SetUniformArray4 (const std::string & name,
unsigned int * ui,
int count 
)
+
+ +

Passes an array of count 4D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec4 name[count].

+ +
+
+ +

◆ StopProgram()

+ +
+
+ + + + + + + +
void mingfx::ShaderProgram::StopProgram ()
+
+ +

Call this after rendering geometry to deactivate the shader.

+ +
+
+ +

◆ UseProgram()

+ +
+
+ + + + + + + +
void mingfx::ShaderProgram::UseProgram ()
+
+ +

Call this first to make the shader program active, then call SetUniform() to pass data from your C++ program into the shader code via the named uniform variables that appear in the code. Then render whatever geometry you wish with your own glDrawArrays() call(s). Finally, call StopProgram() to turn off the shader program.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_text_shader-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_text_shader-members.html new file mode 100644 index 0000000..d8cbc90 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_text_shader-members.html @@ -0,0 +1,102 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::TextShader Member List
+
+
+ +

This is the complete list of members for mingfx::TextShader, including all inherited members.

+ + + + + + + + + +
Draw3D(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, const std::string &text, TextFormat format, bool cache=false)mingfx::TextShader
HorizAlign enum namemingfx::TextShader
Init(const std::string &font_file, int native_font_size)mingfx::TextShader
native_font_size()mingfx::TextShader
TextExtents(const std::string &text, TextFormat format, bool cache=false)mingfx::TextShader
TextShader()mingfx::TextShader
VertAlign enum namemingfx::TextShader
~TextShader()mingfx::TextShadervirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_text_shader.html b/dev/MinGfx/docs/html/classmingfx_1_1_text_shader.html new file mode 100644 index 0000000..deef67e --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_text_shader.html @@ -0,0 +1,377 @@ + + + + + + + +MinGfx Toolkit: mingfx::TextShader Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::TextShader Class Reference
+
+
+

Detailed Description

+
+

Definition at line 36 of file text_shader.h.

+
+

#include <text_shader.h>

+ + + + +

+Classes

class  TextFormat
 
+ + + + + +

+Public Types

enum class  HorizAlign { HORIZ_ALIGN_LEFT +, HORIZ_ALIGN_CENTER +, HORIZ_ALIGN_RIGHT + }
 
enum class  VertAlign { VERT_ALIGN_TOP +, VERT_ALIGN_CENTER +, VERT_ALIGN_BASELINE +, VERT_ALIGN_BOTTOM + }
 
+ + + + + + + + + + + + + + +

+Public Member Functions

 TextShader ()
 
virtual ~TextShader ()
 
bool Init (const std::string &font_file, int native_font_size)
 Call this from within the InitOpenGL() function since it will initialize not just the Font's internal data but also an OpenGL texture to be stored on the graphics card. Internally, this uses the stb_truetype library to load true type fonts (files with a .ttf extension). More...
 
void Draw3D (const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, const std::string &text, TextFormat format, bool cache=false)
 
Vector2 TextExtents (const std::string &text, TextFormat format, bool cache=false)
 
float native_font_size ()
 
+

Member Enumeration Documentation

+ +

◆ HorizAlign

+ +
+
+ + + + + +
+ + + + +
enum mingfx::TextShader::HorizAlign
+
+strong
+
+ + + + +
Enumerator
HORIZ_ALIGN_LEFT 
HORIZ_ALIGN_CENTER 
HORIZ_ALIGN_RIGHT 
+ +

Definition at line 47 of file text_shader.h.

+ +
+
+ +

◆ VertAlign

+ +
+
+ + + + + +
+ + + + +
enum mingfx::TextShader::VertAlign
+
+strong
+
+ + + + + +
Enumerator
VERT_ALIGN_TOP 
VERT_ALIGN_CENTER 
VERT_ALIGN_BASELINE 
VERT_ALIGN_BOTTOM 
+ +

Definition at line 53 of file text_shader.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ TextShader()

+ +
+
+ + + + + + + +
mingfx::TextShader::TextShader ()
+
+ +
+
+ +

◆ ~TextShader()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::TextShader::~TextShader ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ Draw3D()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mingfx::TextShader::Draw3D (const Matrix4model,
const Matrix4view,
const Matrix4projection,
const std::string & text,
TextFormat format,
bool cache = false 
)
+
+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool mingfx::TextShader::Init (const std::string & font_file,
int native_font_size 
)
+
+ +

Call this from within the InitOpenGL() function since it will initialize not just the Font's internal data but also an OpenGL texture to be stored on the graphics card. Internally, this uses the stb_truetype library to load true type fonts (files with a .ttf extension).

+ +
+
+ +

◆ native_font_size()

+ +
+
+ + + + + + + +
float mingfx::TextShader::native_font_size ()
+
+ +
+
+ +

◆ TextExtents()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vector2 mingfx::TextShader::TextExtents (const std::string & text,
TextFormat format,
bool cache = false 
)
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format-members.html new file mode 100644 index 0000000..83a6563 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format-members.html @@ -0,0 +1,99 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::TextShader::TextFormat Member List
+
+
+ +

This is the complete list of members for mingfx::TextShader::TextFormat, including all inherited members.

+ + + + + + +
colormingfx::TextShader::TextFormat
h_alignmingfx::TextShader::TextFormat
sizemingfx::TextShader::TextFormat
TextFormat()mingfx::TextShader::TextFormatinline
v_alignmingfx::TextShader::TextFormat
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format.html b/dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format.html new file mode 100644 index 0000000..2a238e2 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_text_shader_1_1_text_format.html @@ -0,0 +1,213 @@ + + + + + + + +MinGfx Toolkit: mingfx::TextShader::TextFormat Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::TextShader::TextFormat Class Reference
+
+
+

Detailed Description

+
+

Definition at line 60 of file text_shader.h.

+
+

#include <text_shader.h>

+ + + + +

+Public Member Functions

 TextFormat ()
 
+ + + + + + + + + +

+Public Attributes

float size
 
Color color
 
HorizAlign h_align
 
VertAlign v_align
 
+

Constructor & Destructor Documentation

+ +

◆ TextFormat()

+ +
+
+ + + + + +
+ + + + + + + +
mingfx::TextShader::TextFormat::TextFormat ()
+
+inline
+
+ +

Definition at line 63 of file text_shader.h.

+ +
+
+

Member Data Documentation

+ +

◆ color

+ +
+
+ + + + +
Color mingfx::TextShader::TextFormat::color
+
+ +

Definition at line 70 of file text_shader.h.

+ +
+
+ +

◆ h_align

+ +
+
+ + + + +
HorizAlign mingfx::TextShader::TextFormat::h_align
+
+ +

Definition at line 71 of file text_shader.h.

+ +
+
+ +

◆ size

+ +
+
+ + + + +
float mingfx::TextShader::TextFormat::size
+
+ +

Definition at line 69 of file text_shader.h.

+ +
+
+ +

◆ v_align

+ +
+
+ + + + +
VertAlign mingfx::TextShader::TextFormat::v_align
+
+ +

Definition at line 72 of file text_shader.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_texture2_d-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_texture2_d-members.html new file mode 100644 index 0000000..b5e46ec --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_texture2_d-members.html @@ -0,0 +1,110 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Texture2D Member List
+
+
+ +

This is the complete list of members for mingfx::Texture2D, including all inherited members.

+ + + + + + + + + + + + + + + + + +
filter_mode() constmingfx::Texture2D
height() constmingfx::Texture2D
InitFromBytes(int width, int height, const unsigned char *data)mingfx::Texture2D
InitFromFile(const std::string &filename)mingfx::Texture2D
InitFromFloats(int width, int height, const float *data)mingfx::Texture2D
initialized() constmingfx::Texture2D
opengl_id() constmingfx::Texture2D
Pixel(int x, int y) constmingfx::Texture2D
set_filter_mode(GLenum filterMode)mingfx::Texture2D
set_wrap_mode(GLenum wrapMode)mingfx::Texture2D
Texture2D(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR)mingfx::Texture2D
UpdateFromBytes(const unsigned char *data)mingfx::Texture2D
UpdateFromFloats(const float *data)mingfx::Texture2D
width() constmingfx::Texture2D
wrap_mode() constmingfx::Texture2D
~Texture2D()mingfx::Texture2Dvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_texture2_d.html b/dev/MinGfx/docs/html/classmingfx_1_1_texture2_d.html new file mode 100644 index 0000000..a72804d --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_texture2_d.html @@ -0,0 +1,540 @@ + + + + + + + +MinGfx Toolkit: mingfx::Texture2D Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Texture2D Class Reference
+
+
+

Detailed Description

+

A wrapper around a 2D texture that supports loading images from files or setting texture color data directly.

+

Example:

Texture2D tex1;
+
Texture2D tex2(GL_CLAMP_TO_EDGE);
+
+
void MyGraphicsApp::InitOpenGL() {
+
std::vector<std::string> search_path;
+
search_path.push_back(".");
+
search_path.push_back("./data");
+
search_path.push_back("./shaders");
+
tex1.InitFromFile(Platform::FindFile("earth-2k.png", search_path));
+
tex2.InitFromFile(Platform::FindFile("toon-ramp.png", search_path));
+
}
+
static std::string FindFile(const std::string &basename, const std::vector< std::string > &searchpath)
+
Texture2D(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR)
Creates an empty texture. Optional parameters can be provided to set the texture wrap mode and filter...
+
+

Definition at line 42 of file texture2d.h.

+
+

#include <texture2d.h>

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

+Public Member Functions

 Texture2D (GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR)
 Creates an empty texture. Optional parameters can be provided to set the texture wrap mode and filter mode. More...
 
virtual ~Texture2D ()
 
bool InitFromFile (const std::string &filename)
 Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's internal data but also an OpenGL texture to be stored on the graphics card. Internally, this uses the stbi library to load images. It supports png, jpg, bmp, and other file formats. More...
 
bool InitFromBytes (int width, int height, const unsigned char *data)
 Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's internal data but also an OpenGL texture to be stored on the graphics card. With this version of Init, you may pass in your own pointer to color data. The data argument must point to an array of 4-channel color data stored as unsigned chars in RGBA format. You are responsible for managing the memory for this array. If you will never call Pixel(), then it is safe to free data as soon as this function returns. Otherwise, you need to make sure data does not change in memory until you destroy the Texture2D object. More...
 
bool InitFromFloats (int width, int height, const float *data)
 Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's internal data but also an OpenGL texture to be stored on the graphics card. With this version of Init, you may pass in your own pointer to color data. The data argument must point to an array of 4-channel color data stored as floats in RGBA format. You are responsible for managing the memory for this array. If you will never call Pixel(), then it is safe to free data as soon as this function returns. Otherwise, you need to make sure data does not change in memory until you destroy the Texture2D object. More...
 
bool UpdateFromBytes (const unsigned char *data)
 This function may be called to re-read the texture data from an array formated the same as in InitFromBytes. The width and height of the texture must remain the same. More...
 
bool UpdateFromFloats (const float *data)
 This function may be called to re-read the texture data from an array formated the same as in InitFromFloats. The width and height of the texture must remain the same. More...
 
bool initialized () const
 Returns true if the texture data has been successfully transferred to OpenGL. More...
 
int width () const
 Returns the width in pixels of the texture. More...
 
int height () const
 Returns the height in pixels of the texture. More...
 
GLuint opengl_id () const
 Returns the unsigned int used as the texture handle by OpenGL. More...
 
GLenum wrap_mode () const
 Returns an enumerated constant for the OpenGL wrap mode used by the texture. More...
 
GLenum filter_mode () const
 Returns an enumerated constant for the OpenGL filter mode used by the texture. More...
 
void set_wrap_mode (GLenum wrapMode)
 Uses the OpenGL texture wrap mode arguments. More...
 
void set_filter_mode (GLenum filterMode)
 Uses the OpenGL texture filter mode arguments. More...
 
Color Pixel (int x, int y) const
 Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom right is (width()-1, height()-1). More...
 
+

Constructor & Destructor Documentation

+ +

◆ Texture2D()

+ +
+
+ + + + + + + + + + + + + + + + + + +
mingfx::Texture2D::Texture2D (GLenum wrapMode = GL_REPEAT,
GLenum filterMode = GL_LINEAR 
)
+
+ +

Creates an empty texture. Optional parameters can be provided to set the texture wrap mode and filter mode.

+ +
+
+ +

◆ ~Texture2D()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Texture2D::~Texture2D ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ filter_mode()

+ +
+
+ + + + + + + +
GLenum mingfx::Texture2D::filter_mode () const
+
+ +

Returns an enumerated constant for the OpenGL filter mode used by the texture.

+ +
+
+ +

◆ height()

+ +
+
+ + + + + + + +
int mingfx::Texture2D::height () const
+
+ +

Returns the height in pixels of the texture.

+ +
+
+ +

◆ InitFromBytes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool mingfx::Texture2D::InitFromBytes (int width,
int height,
const unsigned char * data 
)
+
+ +

Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's internal data but also an OpenGL texture to be stored on the graphics card. With this version of Init, you may pass in your own pointer to color data. The data argument must point to an array of 4-channel color data stored as unsigned chars in RGBA format. You are responsible for managing the memory for this array. If you will never call Pixel(), then it is safe to free data as soon as this function returns. Otherwise, you need to make sure data does not change in memory until you destroy the Texture2D object.

+ +
+
+ +

◆ InitFromFile()

+ +
+
+ + + + + + + + +
bool mingfx::Texture2D::InitFromFile (const std::string & filename)
+
+ +

Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's internal data but also an OpenGL texture to be stored on the graphics card. Internally, this uses the stbi library to load images. It supports png, jpg, bmp, and other file formats.

+ +
+
+ +

◆ InitFromFloats()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool mingfx::Texture2D::InitFromFloats (int width,
int height,
const float * data 
)
+
+ +

Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's internal data but also an OpenGL texture to be stored on the graphics card. With this version of Init, you may pass in your own pointer to color data. The data argument must point to an array of 4-channel color data stored as floats in RGBA format. You are responsible for managing the memory for this array. If you will never call Pixel(), then it is safe to free data as soon as this function returns. Otherwise, you need to make sure data does not change in memory until you destroy the Texture2D object.

+ +
+
+ +

◆ initialized()

+ +
+
+ + + + + + + +
bool mingfx::Texture2D::initialized () const
+
+ +

Returns true if the texture data has been successfully transferred to OpenGL.

+ +
+
+ +

◆ opengl_id()

+ +
+
+ + + + + + + +
GLuint mingfx::Texture2D::opengl_id () const
+
+ +

Returns the unsigned int used as the texture handle by OpenGL.

+ +
+
+ +

◆ Pixel()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Color mingfx::Texture2D::Pixel (int x,
int y 
) const
+
+ +

Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom right is (width()-1, height()-1).

+ +
+
+ +

◆ set_filter_mode()

+ +
+
+ + + + + + + + +
void mingfx::Texture2D::set_filter_mode (GLenum filterMode)
+
+ +

Uses the OpenGL texture filter mode arguments.

+ +
+
+ +

◆ set_wrap_mode()

+ +
+
+ + + + + + + + +
void mingfx::Texture2D::set_wrap_mode (GLenum wrapMode)
+
+ +

Uses the OpenGL texture wrap mode arguments.

+ +
+
+ +

◆ UpdateFromBytes()

+ +
+
+ + + + + + + + +
bool mingfx::Texture2D::UpdateFromBytes (const unsigned char * data)
+
+ +

This function may be called to re-read the texture data from an array formated the same as in InitFromBytes. The width and height of the texture must remain the same.

+ +
+
+ +

◆ UpdateFromFloats()

+ +
+
+ + + + + + + + +
bool mingfx::Texture2D::UpdateFromFloats (const float * data)
+
+ +

This function may be called to re-read the texture data from an array formated the same as in InitFromFloats. The width and height of the texture must remain the same.

+ +
+
+ +

◆ width()

+ +
+
+ + + + + + + +
int mingfx::Texture2D::width () const
+
+ +

Returns the width in pixels of the texture.

+ +
+
+ +

◆ wrap_mode()

+ +
+
+ + + + + + + +
GLenum mingfx::Texture2D::wrap_mode () const
+
+ +

Returns an enumerated constant for the OpenGL wrap mode used by the texture.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_uni_cam-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_uni_cam-members.html new file mode 100644 index 0000000..152a39d --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_uni_cam-members.html @@ -0,0 +1,107 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::UniCam Member List
+
+
+ +

This is the complete list of members for mingfx::UniCam, including all inherited members.

+ + + + + + + + + + + + + + +
AdvanceAnimation(double dt)mingfx::UniCam
Draw(const Matrix4 &projectionMatrix)mingfx::UniCam
eye()mingfx::UniCam
look()mingfx::UniCam
OnButtonDown(const Point2 &normalizedMousePos, float mouseZ)mingfx::UniCam
OnButtonUp(const Point2 &normalizedMousePos)mingfx::UniCam
OnDrag(const Point2 &normalizedMousePos)mingfx::UniCam
set_default_depth(float d)mingfx::UniCam
set_view_matrix(Matrix4 viewMatrix)mingfx::UniCam
UniCam()mingfx::UniCam
UniCam(const Matrix4 &initialViewMatrix)mingfx::UniCam
view_matrix()mingfx::UniCam
~UniCam()mingfx::UniCamvirtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_uni_cam.html b/dev/MinGfx/docs/html/classmingfx_1_1_uni_cam.html new file mode 100644 index 0000000..ad46944 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_uni_cam.html @@ -0,0 +1,482 @@ + + + + + + + +MinGfx Toolkit: mingfx::UniCam Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::UniCam Class Reference
+
+
+

Detailed Description

+

This implements a user interface for controlling the camera with the mouse.

+

It is a special interface inspired by the "Unicam" technique developed by Zeleznik et al.
+

+

The key feature is that this interface makes it possible to control camera pan, dolly, and rotation with only a single mouse button. That is quite useful because it leaves the other mouse buttons free for pointing, sketching, or other interaction techniques.

+

The only downside of this technique is that it can take some time to learn. In order to enjoy it, you will need to read these brief instructions on how to Pan, Dolly, Rotate, and Spin:

+
    +
  • Pan: Click and drag horizontally with the mouse. Once you make an initial horizontal movement you can than pan up and down as well, but the key to entering pan mode is to start with a horizontal movement.
  • +
  • Dolly: Click and drag vertically with the mouse. The initial movement must be vertical. If you click on some object in the scene, then the speed of dollying is set so that the object will come all the up to the camera lens if you drag the mouse to the bottom of the screen.
  • +
  • Rotate: Start with a quick click and release to set the center of rotation.
    + This is most useful if you click on some object in the scene. You will see a black dot appear to mark the center of rotation. If you click on the background then a center of rotation will be selected for you. It will be a point straight ahead and at a depth 4.0 units away. The depth can be adjusted for your application with set_default_depth(). Once your center of rotation is established, move your mouse away a bit and then click and drag to do a trackball rotatation of the scene around this point. Come to a stop before letting go of the mouse button in order to avoid entering the spin state!
  • +
  • Spin: For some fun, try "throwing" the scene so that it continues to rotate even after you let go. To do this, start a rotation and then let go of the mouse button while your mouse is still moving. To stop spinning just click and release the mouse once to "catch" the scene.
  • +
+

Example usage:

// Create a global or member variable in your MyGraphicsApp class:
+
UniCam unicam_;
+
+
+
void MyGraphicsApp::OnLeftMouseDown(const Point2 &pos) {
+
Point2 mouse_xy = PixelsToNormalizedDeviceCoords(pos);
+
float mouse_z = ReadZValueAtPixel(pos);
+
unicam_.OnButtonDown(mouse_xy, mouse_z);
+
}
+
+
void MyGraphicsApp::OnLeftMouseDrag(const Point2 &pos, const Vector2 &delta) {
+
Point2 mouse_xy = PixelsToNormalizedDeviceCoords(pos);
+
unicam_.OnDrag(mouse_xy);
+
}
+
+
void MyGraphicsApp::OnLeftMouseUp(const Point2 &pos) {
+
Point2 mouse_xy = PixelsToNormalizedDeviceCoords(pos);
+
unicam_.OnButtonUp(mouse_xy);
+
}
+
+
void MyGraphicsApp::InitOpenGL() {
+
projMatrix_ = Matrix4::perspective(30, aspect_ratio(), 1, 20);
+
unicam_.set_view_matrix(Matrix4::lookAt(Point3(2.5,1,2.5), Point3(0,0,0), Vector3(0,1,0)););
+
}
+
+
void MyGraphicsApp::DrawOpenGL() {
+
// draw your scene using the view matrix from UniCam
+
Matrix4 proj_matrix = Matrix4::Perspective(60, aspect_ratio(), 0.001, 10);;
+
Matrix4 view_matrix = uniCam.view_matrix();
+
Matrix4 model_matrix = Matrix4::RotateY(to_radians(45.0));
+
quickShapes.DrawCube(model_matrix, view_matirx, proj_matrix, Color(1,1,1));
+
+
// tell unicam to draw itself (i.e., the small sphere that marks the center of
+
// rotation when in rotation mode)
+
unicam_.Draw(proj_matrix);
+
}
+
static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)
Returns a perspective projection matrix equivalent to the one gluPerspective creates.
+
UniCam()
Creates a UniCam object with an initial view matrix = identity.
+
Matrix4 view_matrix()
Access the camera view matrix created by the UniCam interactions via this method and use it to draw t...
+
+

Definition at line 105 of file unicam.h.

+
+

#include <unicam.h>

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

+Public Member Functions

 UniCam ()
 Creates a UniCam object with an initial view matrix = identity. More...
 
 UniCam (const Matrix4 &initialViewMatrix)
 Creates a UniCam object with the supplied initial view matrix. More...
 
virtual ~UniCam ()
 
void OnButtonDown (const Point2 &normalizedMousePos, float mouseZ)
 Attach this to whatever mouse button you wish, for example, call this from within GraphicsApp::OnRightMouseDown(). If your mousePos is reported in pixels, you will need to convert it to normalized device coordinates before passing it on to this routine. The depth buffer value for the pixel under the mouse is also needed. If you are using GraphicsApp, you can access both of these as follows: More...
 
void OnDrag (const Point2 &normalizedMousePos)
 Attach this to the corresponding mouse move event, for example, call this from within GraphicsApp::OnRightMouseDrag(). If your mousePos is reported in pixels, you will need to convert it to normalized device coordinates before passing it on to this routine. Within GraphicsApp, use: More...
 
void OnButtonUp (const Point2 &normalizedMousePos)
 Attach this to the corresponding button up event, for example, call this from within GraphicsApp::OnRightMouseUp(). If your mousePos is reported in pixels, you will need to convert it to normalized device coordinates before passing it on to this routine. Within GraphicsApp, use: More...
 
void AdvanceAnimation (double dt)
 Attach this to a callback that can be used to control animation. Within GraphicsApp::UpdateSimulation(), use: More...
 
void Draw (const Matrix4 &projectionMatrix)
 Finally, attach this to your draw callback routine. Within GraphicsApp::DrawUsingOpenGL(), use: More...
 
Matrix4 view_matrix ()
 Access the camera view matrix created by the UniCam interactions via this method and use it to draw the geometry in your scence. For example, within GraphicsApp::DrawUsingOpenGL(), you might have: More...
 
Point3 eye ()
 Returns the "eye" point (i.e., focal point) of the camera in world space coordinates. More...
 
Vector3 look ()
 Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates. More...
 
void set_view_matrix (Matrix4 viewMatrix)
 This is not required, but you may use this if you wish to set an initial view matrix or reset the view matrix. More...
 
void set_default_depth (float d)
 This sets the depth of the center of rotation for the case when the user's click does not intersect any geometry. It defaults to 4 units, but the right value to use depends very much on the current scene. For example, you could set a very good value by calculating the current centroid of your scene and the finding the depth of this point (the distance along the look vector) relative to the camera. More...
 
+

Constructor & Destructor Documentation

+ +

◆ UniCam() [1/2]

+ +
+
+ + + + + + + +
mingfx::UniCam::UniCam ()
+
+ +

Creates a UniCam object with an initial view matrix = identity.

+ +
+
+ +

◆ UniCam() [2/2]

+ +
+
+ + + + + + + + +
mingfx::UniCam::UniCam (const Matrix4initialViewMatrix)
+
+ +

Creates a UniCam object with the supplied initial view matrix.

+ +
+
+ +

◆ ~UniCam()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::UniCam::~UniCam ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ AdvanceAnimation()

+ +
+
+ + + + + + + + +
void mingfx::UniCam::AdvanceAnimation (double dt)
+
+ +

Attach this to a callback that can be used to control animation. Within GraphicsApp::UpdateSimulation(), use:

+
uniCam.AdvanceAnimation(dt);
+
+
+
+ +

◆ Draw()

+ +
+
+ + + + + + + + +
void mingfx::UniCam::Draw (const Matrix4projectionMatrix)
+
+ +

Finally, attach this to your draw callback routine. Within GraphicsApp::DrawUsingOpenGL(), use:

+
uniCam.Draw(projMatrix);
+
+
+
+ +

◆ eye()

+ +
+
+ + + + + + + +
Point3 mingfx::UniCam::eye ()
+
+ +

Returns the "eye" point (i.e., focal point) of the camera in world space coordinates.

+ +
+
+ +

◆ look()

+ +
+
+ + + + + + + +
Vector3 mingfx::UniCam::look ()
+
+ +

Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates.

+ +
+
+ +

◆ OnButtonDown()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void mingfx::UniCam::OnButtonDown (const Point2normalizedMousePos,
float mouseZ 
)
+
+ +

Attach this to whatever mouse button you wish, for example, call this from within GraphicsApp::OnRightMouseDown(). If your mousePos is reported in pixels, you will need to convert it to normalized device coordinates before passing it on to this routine. The depth buffer value for the pixel under the mouse is also needed. If you are using GraphicsApp, you can access both of these as follows:

+
Point2 mouse_xy = PixelsToNormalizedDeviceCoords(mouse_in_pixels);
+
float mouse_z = ReadZValueAtPixel(mouse_in_pixels);
+
uniCam.OnButtonDown(mouse_xy, mouse_z);
+
+
+
+ +

◆ OnButtonUp()

+ +
+
+ + + + + + + + +
void mingfx::UniCam::OnButtonUp (const Point2normalizedMousePos)
+
+ +

Attach this to the corresponding button up event, for example, call this from within GraphicsApp::OnRightMouseUp(). If your mousePos is reported in pixels, you will need to convert it to normalized device coordinates before passing it on to this routine. Within GraphicsApp, use:

+
Point2 mouse_xy = PixelsToNormalizedDeviceCoords(mouse_in_pixels);
+
uniCam.OnButtonUp(mouse_xy);
+
+
+
+ +

◆ OnDrag()

+ +
+
+ + + + + + + + +
void mingfx::UniCam::OnDrag (const Point2normalizedMousePos)
+
+ +

Attach this to the corresponding mouse move event, for example, call this from within GraphicsApp::OnRightMouseDrag(). If your mousePos is reported in pixels, you will need to convert it to normalized device coordinates before passing it on to this routine. Within GraphicsApp, use:

+
Point2 mouse_xy = PixelsToNormalizedDeviceCoords(mouse_in_pixels);
+
uniCam.OnDrag(mouse_xy);
+
+
+
+ +

◆ set_default_depth()

+ +
+
+ + + + + + + + +
void mingfx::UniCam::set_default_depth (float d)
+
+ +

This sets the depth of the center of rotation for the case when the user's click does not intersect any geometry. It defaults to 4 units, but the right value to use depends very much on the current scene. For example, you could set a very good value by calculating the current centroid of your scene and the finding the depth of this point (the distance along the look vector) relative to the camera.

+ +
+
+ +

◆ set_view_matrix()

+ +
+
+ + + + + + + + +
void mingfx::UniCam::set_view_matrix (Matrix4 viewMatrix)
+
+ +

This is not required, but you may use this if you wish to set an initial view matrix or reset the view matrix.

+ +
+
+ +

◆ view_matrix()

+ +
+
+ + + + + + + +
Matrix4 mingfx::UniCam::view_matrix ()
+
+ +

Access the camera view matrix created by the UniCam interactions via this method and use it to draw the geometry in your scence. For example, within GraphicsApp::DrawUsingOpenGL(), you might have:

+
Matrix4 P = Matrix4::Perspective(30, aspect_ratio(), 1, 20);
+
Matrix4 V = unicam.view_matrix();
+
Matrix4 M = Matrix4::RotateY(GfxMath::ToRadians(45.0));
+
quick_shapes.DrawCube(M, V, P, Color(1,1,1));
+
static float ToRadians(float degrees)
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_vector2-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_vector2-members.html new file mode 100644 index 0000000..8a54e22 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_vector2-members.html @@ -0,0 +1,120 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Vector2 Member List
+
+
+ +

This is the complete list of members for mingfx::Vector2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dot(const Vector2 &v) constmingfx::Vector2
Dot(const Vector2 &v1, const Vector2 &v2)mingfx::Vector2static
Length() constmingfx::Vector2
Lerp(const Vector2 &b, float alpha) constmingfx::Vector2
Lerp(const Vector2 &a, const Vector2 &b, float alpha)mingfx::Vector2static
Normalize()mingfx::Vector2
Normalize(const Vector2 &v)mingfx::Vector2static
One()mingfx::Vector2static
operator!=(const Vector2 &v) constmingfx::Vector2
operator=(const Vector2 &v)mingfx::Vector2
operator==(const Vector2 &v) constmingfx::Vector2
operator[](const int i) constmingfx::Vector2
operator[](const int i)mingfx::Vector2
ToUnit() constmingfx::Vector2
UnitX()mingfx::Vector2static
UnitY()mingfx::Vector2static
value_ptr() constmingfx::Vector2
Vector2()mingfx::Vector2
Vector2(float x, float y)mingfx::Vector2
Vector2(float *v)mingfx::Vector2
Vector2(const Vector2 &v)mingfx::Vector2
w() constmingfx::Vector2inline
x() constmingfx::Vector2inline
y() constmingfx::Vector2inline
Zero()mingfx::Vector2static
~Vector2()mingfx::Vector2virtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_vector2.html b/dev/MinGfx/docs/html/classmingfx_1_1_vector2.html new file mode 100644 index 0000000..48f9e60 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_vector2.html @@ -0,0 +1,841 @@ + + + + + + + +MinGfx Toolkit: mingfx::Vector2 Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Vector2 Class Reference
+
+
+

Detailed Description

+

A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements, and screen-space vectors.

+ +

Definition at line 28 of file vector2.h.

+
+

#include <vector2.h>

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

+Public Member Functions

 Vector2 ()
 Default constructor to create zero vector. More...
 
 Vector2 (float x, float y)
 Constructs a vector (x,y,0), where the 0 comes from the use of homogeneous coordinates in computer graphics. More...
 
 Vector2 (float *v)
 Constructs a vector given a pointer to x,y,z data. More...
 
 Vector2 (const Vector2 &v)
 Copy constructor for vector. More...
 
virtual ~Vector2 ()
 Vector destructor. More...
 
bool operator== (const Vector2 &v) const
 Check for "equality", taking floating point imprecision into account. More...
 
bool operator!= (const Vector2 &v) const
 Check for "inequality", taking floating point imprecision into account. More...
 
Vector2operator= (const Vector2 &v)
 Vector assignment operator. More...
 
float operator[] (const int i) const
 Read only access to the ith coordinate of the vector. More...
 
float & operator[] (const int i)
 Returns a reference to the ith coordinate of the vector. Use this accessor if you wish to set the coordinate rather than just request its value. Example: More...
 
float x () const
 Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1.0; form if you need to set the value. More...
 
float y () const
 Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1.0; form if you need to set the value. More...
 
float w () const
 In homogeneous coordinates, the w coordinate for all vectors is 0.0. More...
 
float Dot (const Vector2 &v) const
 Returns "this dot v". More...
 
float Length () const
 Returns the length of the vector. More...
 
void Normalize ()
 Normalizes the vector by making it unit length. More...
 
Vector2 ToUnit () const
 Returns a normalized (i.e., unit length) version of the vector without modifying the original ('this') vector. More...
 
Vector2 Lerp (const Vector2 &b, float alpha) const
 Linear interpolation between this vector and another. Alpha=0.0 returns this vector, and alpha=1.0 returns the other vector, other values blend between the two. More...
 
const float * value_ptr () const
 Returns a const pointer to the raw data array. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static Vector2 Normalize (const Vector2 &v)
 Returns a new vector that is the unit version of v. More...
 
static float Dot (const Vector2 &v1, const Vector2 &v2)
 Returns v1 dot v2. More...
 
static const Vector2Zero ()
 (0,0) - a shortcut for a special vector that is frequently needed More...
 
static const Vector2One ()
 (1,1) - a shortcut for a special vector that is frequently needed More...
 
static const Vector2UnitX ()
 (1,0) - a shortcut for a special vector that is frequently needed More...
 
static const Vector2UnitY ()
 (0,1) - a shortcut for a special vector that is frequently needed More...
 
static Vector2 Lerp (const Vector2 &a, const Vector2 &b, float alpha)
 Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Vector2() [1/4]

+ +
+
+ + + + + + + +
mingfx::Vector2::Vector2 ()
+
+ +

Default constructor to create zero vector.

+ +
+
+ +

◆ Vector2() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
mingfx::Vector2::Vector2 (float x,
float y 
)
+
+ +

Constructs a vector (x,y,0), where the 0 comes from the use of homogeneous coordinates in computer graphics.

+ +
+
+ +

◆ Vector2() [3/4]

+ +
+
+ + + + + + + + +
mingfx::Vector2::Vector2 (float * v)
+
+ +

Constructs a vector given a pointer to x,y,z data.

+ +
+
+ +

◆ Vector2() [4/4]

+ +
+
+ + + + + + + + +
mingfx::Vector2::Vector2 (const Vector2v)
+
+ +

Copy constructor for vector.

+ +
+
+ +

◆ ~Vector2()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Vector2::~Vector2 ()
+
+virtual
+
+ +

Vector destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Dot() [1/2]

+ +
+
+ + + + + + + + +
float mingfx::Vector2::Dot (const Vector2v) const
+
+ +

Returns "this dot v".

+ +
+
+ +

◆ Dot() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static float mingfx::Vector2::Dot (const Vector2v1,
const Vector2v2 
)
+
+static
+
+ +

Returns v1 dot v2.

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + + + +
float mingfx::Vector2::Length () const
+
+ +

Returns the length of the vector.

+ +
+
+ +

◆ Lerp() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Vector2 mingfx::Vector2::Lerp (const Vector2a,
const Vector2b,
float alpha 
)
+
+static
+
+ +

Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two.

+ +
+
+ +

◆ Lerp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vector2 mingfx::Vector2::Lerp (const Vector2b,
float alpha 
) const
+
+ +

Linear interpolation between this vector and another. Alpha=0.0 returns this vector, and alpha=1.0 returns the other vector, other values blend between the two.

+ +
+
+ +

◆ Normalize() [1/2]

+ +
+
+ + + + + + + +
void mingfx::Vector2::Normalize ()
+
+ +

Normalizes the vector by making it unit length.

+ +
+
+ +

◆ Normalize() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static Vector2 mingfx::Vector2::Normalize (const Vector2v)
+
+static
+
+ +

Returns a new vector that is the unit version of v.

+ +
+
+ +

◆ One()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector2& mingfx::Vector2::One ()
+
+static
+
+ +

(1,1) - a shortcut for a special vector that is frequently needed

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool mingfx::Vector2::operator!= (const Vector2v) const
+
+ +

Check for "inequality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Vector2& mingfx::Vector2::operator= (const Vector2v)
+
+ +

Vector assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool mingfx::Vector2::operator== (const Vector2v) const
+
+ +

Check for "equality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
float& mingfx::Vector2::operator[] (const int i)
+
+ +

Returns a reference to the ith coordinate of the vector. Use this accessor if you wish to set the coordinate rather than just request its value. Example:

+
+
a[0] = 5.0; // set the x-coordinate of the vector
+
Vector2()
Default constructor to create zero vector.
+
+
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
float mingfx::Vector2::operator[] (const int i) const
+
+ +

Read only access to the ith coordinate of the vector.

+ +
+
+ +

◆ ToUnit()

+ +
+
+ + + + + + + +
Vector2 mingfx::Vector2::ToUnit () const
+
+ +

Returns a normalized (i.e., unit length) version of the vector without modifying the original ('this') vector.

+ +
+
+ +

◆ UnitX()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector2& mingfx::Vector2::UnitX ()
+
+static
+
+ +

(1,0) - a shortcut for a special vector that is frequently needed

+ +
+
+ +

◆ UnitY()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector2& mingfx::Vector2::UnitY ()
+
+static
+
+ +

(0,1) - a shortcut for a special vector that is frequently needed

+ +
+
+ +

◆ value_ptr()

+ +
+
+ + + + + + + +
const float* mingfx::Vector2::value_ptr () const
+
+ +

Returns a const pointer to the raw data array.

+ +
+
+ +

◆ w()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Vector2::w () const
+
+inline
+
+ +

In homogeneous coordinates, the w coordinate for all vectors is 0.0.

+ +

Definition at line 77 of file vector2.h.

+ +
+
+ +

◆ x()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Vector2::x () const
+
+inline
+
+ +

Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1.0; form if you need to set the value.

+ +

Definition at line 70 of file vector2.h.

+ +
+
+ +

◆ y()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Vector2::y () const
+
+inline
+
+ +

Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1.0; form if you need to set the value.

+ +

Definition at line 74 of file vector2.h.

+ +
+
+ +

◆ Zero()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector2& mingfx::Vector2::Zero ()
+
+static
+
+ +

(0,0) - a shortcut for a special vector that is frequently needed

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_vector3-members.html b/dev/MinGfx/docs/html/classmingfx_1_1_vector3-members.html new file mode 100644 index 0000000..bbcf674 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_vector3-members.html @@ -0,0 +1,124 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mingfx::Vector3 Member List
+
+
+ +

This is the complete list of members for mingfx::Vector3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cross(const Vector3 &v) constmingfx::Vector3
Cross(const Vector3 &v1, const Vector3 &v2)mingfx::Vector3static
Dot(const Vector3 &v) constmingfx::Vector3
Dot(const Vector3 &v1, const Vector3 &v2)mingfx::Vector3static
Length() constmingfx::Vector3
Lerp(const Vector3 &b, float alpha) constmingfx::Vector3
Lerp(const Vector3 &a, const Vector3 &b, float alpha)mingfx::Vector3static
Normalize()mingfx::Vector3
Normalize(const Vector3 &v)mingfx::Vector3static
One()mingfx::Vector3static
operator!=(const Vector3 &v) constmingfx::Vector3
operator=(const Vector3 &v)mingfx::Vector3
operator==(const Vector3 &v) constmingfx::Vector3
operator[](const int i) constmingfx::Vector3
operator[](const int i)mingfx::Vector3
ToUnit() constmingfx::Vector3
UnitX()mingfx::Vector3static
UnitY()mingfx::Vector3static
UnitZ()mingfx::Vector3static
value_ptr() constmingfx::Vector3
Vector3()mingfx::Vector3
Vector3(float x, float y, float z)mingfx::Vector3
Vector3(float *v)mingfx::Vector3
Vector3(const Vector3 &v)mingfx::Vector3
w() constmingfx::Vector3inline
x() constmingfx::Vector3inline
y() constmingfx::Vector3inline
z() constmingfx::Vector3inline
Zero()mingfx::Vector3static
~Vector3()mingfx::Vector3virtual
+ + + + + diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_vector3.html b/dev/MinGfx/docs/html/classmingfx_1_1_vector3.html new file mode 100644 index 0000000..e46afd3 --- /dev/null +++ b/dev/MinGfx/docs/html/classmingfx_1_1_vector3.html @@ -0,0 +1,1018 @@ + + + + + + + +MinGfx Toolkit: mingfx::Vector3 Class Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mingfx::Vector3 Class Reference
+
+
+

Detailed Description

+

A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graphics operations.

+

Vector3s can be transformed by a Matrix4, and a Vector3 can be created by subtracting two Point3s. Example:

// subtracting two points creates a vector
+
Point3 a(0,0,0);
+
Point3 b(2,0,0);
+
Vector3 c = b - a;
+
+
// vectors can be transformed by Matrix4s
+
Vector3 dir = c.ToUnit();
+
Matrix4 M = Matrix4::RotateX(GfxMath::ToDegrees(30.0));
+
Vector3 dir_transformed = M * dir;
+
+
// vectors can be added and subtracted
+
Vector3 d(1,0,0);
+
Vector3 e = c + d;
+
+
// and we can do the usual dot products and cross products too
+
float f = d.Dot(e);
+
Vector3 g = b.Cross(d);
+
+
// you can access the individual components of the vector in two ways:
+
Vector3 v(1,2,3);
+
float option1 = v.x();
+
float option2 = v[0];
+
+
// to set an individual component of the vector use the [] operator:
+ +
w[0] = 0.4;
+
w[1] = 1.2;
+
w[2] = 3.1;
+
+
// you can print the vector by sending it to stdout:
+
std::cout << v << std::endl;
+
static float ToDegrees(float radians)
+
float w() const
In homogeneous coordinates, the w coordinate for all vectors is 0.0.
Definition: vector3.h:115
+
Vector3()
Default constructor to create zero vector.
+
+

Definition at line 62 of file vector3.h.

+
+

#include <vector3.h>

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

+Public Member Functions

 Vector3 ()
 Default constructor to create zero vector. More...
 
 Vector3 (float x, float y, float z)
 Constructs a vector (x,y,z,0), where the 0 comes from the use of homogeneous coordinates in computer graphics. More...
 
 Vector3 (float *v)
 Constructs a vector given a pointer to x,y,z data. More...
 
 Vector3 (const Vector3 &v)
 Copy constructor for vector. More...
 
virtual ~Vector3 ()
 Vector destructor. More...
 
bool operator== (const Vector3 &v) const
 Check for "equality", taking floating point imprecision into account. More...
 
bool operator!= (const Vector3 &v) const
 Check for "inequality", taking floating point imprecision into account. More...
 
Vector3operator= (const Vector3 &v)
 Vector assignment operator. More...
 
float operator[] (const int i) const
 Read only access to the ith coordinate of the vector. More...
 
float & operator[] (const int i)
 Returns a reference to the ith coordinate of the vector. Use this accessor if you wish to set the coordinate rather than just request its value. Example: More...
 
float x () const
 Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1.0; form if you need to set the value. More...
 
float y () const
 Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1.0; form if you need to set the value. More...
 
float z () const
 Read only access to the z coordinate. Can also use my_vector[2]. Use the my_vector[2] = 1.0; form if you need to set the value. More...
 
float w () const
 In homogeneous coordinates, the w coordinate for all vectors is 0.0. More...
 
float Dot (const Vector3 &v) const
 Returns "this dot v", for example: More...
 
Vector3 Cross (const Vector3 &v) const
 Returns "this cross v", for example: More...
 
float Length () const
 Returns the length of the vector. More...
 
void Normalize ()
 Normalizes the vector by making it unit length. More...
 
Vector3 ToUnit () const
 Returns a normalized (i.e., unit length) version of the vector without modifying the original 'this' vector. More...
 
const float * value_ptr () const
 Returns a const pointer to the raw data array. More...
 
Vector3 Lerp (const Vector3 &b, float alpha) const
 Linear interpolation between this vector and another. Alpha=0.0 returns this vector, and alpha=1.0 returns the other vector, other values blend between the two. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static const Vector3Zero ()
 (0,0,0) - a shortcut for a special vector that is frequently needed More...
 
static const Vector3One ()
 (1,1,1) - a shortcut for a special vector that is frequently needed More...
 
static const Vector3UnitX ()
 (1,0,0) - a shortcut for a special vector that is frequently needed More...
 
static const Vector3UnitY ()
 (0,1,0) - a shortcut for a special vector that is frequently needed More...
 
static const Vector3UnitZ ()
 (0,0,1) - a shortcut for a special vector that is frequently needed More...
 
static Vector3 Normalize (const Vector3 &v)
 Returns a new vector that is the unit version of v. More...
 
static Vector3 Cross (const Vector3 &v1, const Vector3 &v2)
 Returns v1 cross v2. More...
 
static float Dot (const Vector3 &v1, const Vector3 &v2)
 Returns v1 dot v2. More...
 
static Vector3 Lerp (const Vector3 &a, const Vector3 &b, float alpha)
 Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two. More...
 
+

Constructor & Destructor Documentation

+ +

◆ Vector3() [1/4]

+ +
+
+ + + + + + + +
mingfx::Vector3::Vector3 ()
+
+ +

Default constructor to create zero vector.

+ +
+
+ +

◆ Vector3() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
mingfx::Vector3::Vector3 (float x,
float y,
float z 
)
+
+ +

Constructs a vector (x,y,z,0), where the 0 comes from the use of homogeneous coordinates in computer graphics.

+ +
+
+ +

◆ Vector3() [3/4]

+ +
+
+ + + + + + + + +
mingfx::Vector3::Vector3 (float * v)
+
+ +

Constructs a vector given a pointer to x,y,z data.

+ +
+
+ +

◆ Vector3() [4/4]

+ +
+
+ + + + + + + + +
mingfx::Vector3::Vector3 (const Vector3v)
+
+ +

Copy constructor for vector.

+ +
+
+ +

◆ ~Vector3()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mingfx::Vector3::~Vector3 ()
+
+virtual
+
+ +

Vector destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Cross() [1/2]

+ +
+
+ + + + + + + + +
Vector3 mingfx::Vector3::Cross (const Vector3v) const
+
+ +

Returns "this cross v", for example:

+
Vector3 x(1,0,0);
+
Vector3 y(0,1,0);
+
Vector3 z = x.Cross(y);
+
float z() const
Read only access to the z coordinate. Can also use my_vector[2]. Use the my_vector[2] = 1....
Definition: vector3.h:112
+
float x() const
Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1....
Definition: vector3.h:104
+
float y() const
Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1....
Definition: vector3.h:108
+
+
+
+ +

◆ Cross() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Vector3 mingfx::Vector3::Cross (const Vector3v1,
const Vector3v2 
)
+
+static
+
+ +

Returns v1 cross v2.

+

This is just an alternative syntax for Cross(). Example: ~~~ Vector3 x(1,0,0); Vector3 y(0,1,0); Vector3 z1 = Vector3::Cross(x,y); Vector3 z2 = x.Cross(y); z1 and z2 are the same. ~~~

+ +
+
+ +

◆ Dot() [1/2]

+ +
+
+ + + + + + + + +
float mingfx::Vector3::Dot (const Vector3v) const
+
+ +

Returns "this dot v", for example:

+
Vector3 a(1,0,0);
+
Vector3 b(0.5,0,0);
+
float c = a.Dot(b);
+
+
+
+ +

◆ Dot() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static float mingfx::Vector3::Dot (const Vector3v1,
const Vector3v2 
)
+
+static
+
+ +

Returns v1 dot v2.

+

This is just an alternative syntax for Dot(). Example: ~~~ Vector3 a(1,0,0); Vector3 b(0.5,0,0); Vector3 c1 = a.Dot(b); Vector3 c2 = Vector3::Dot(a,b); c1 and c2 are the same. ~~~

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + + + +
float mingfx::Vector3::Length () const
+
+ +

Returns the length of the vector.

+ +
+
+ +

◆ Lerp() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Vector3 mingfx::Vector3::Lerp (const Vector3a,
const Vector3b,
float alpha 
)
+
+static
+
+ +

Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b', other values blend between the two.

+ +
+
+ +

◆ Lerp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vector3 mingfx::Vector3::Lerp (const Vector3b,
float alpha 
) const
+
+ +

Linear interpolation between this vector and another. Alpha=0.0 returns this vector, and alpha=1.0 returns the other vector, other values blend between the two.

+ +
+
+ +

◆ Normalize() [1/2]

+ +
+
+ + + + + + + +
void mingfx::Vector3::Normalize ()
+
+ +

Normalizes the vector by making it unit length.

+ +
+
+ +

◆ Normalize() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static Vector3 mingfx::Vector3::Normalize (const Vector3v)
+
+static
+
+ +

Returns a new vector that is the unit version of v.

+

This is just an alternative syntax for ToUnit(). Example: ~~~ Vector3 a(100,150,80); Vector3 b = Vector3::Normalize(a); Vector3 c = a.ToUnit(); b and c are the same. ~~~

+ +
+
+ +

◆ One()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector3& mingfx::Vector3::One ()
+
+static
+
+ +

(1,1,1) - a shortcut for a special vector that is frequently needed

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool mingfx::Vector3::operator!= (const Vector3v) const
+
+ +

Check for "inequality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
Vector3& mingfx::Vector3::operator= (const Vector3v)
+
+ +

Vector assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool mingfx::Vector3::operator== (const Vector3v) const
+
+ +

Check for "equality", taking floating point imprecision into account.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + + + + +
float& mingfx::Vector3::operator[] (const int i)
+
+ +

Returns a reference to the ith coordinate of the vector. Use this accessor if you wish to set the coordinate rather than just request its value. Example:

+
+
a[0] = 5.0; // set the x-coordinate of the vector
+
+
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + + + + +
float mingfx::Vector3::operator[] (const int i) const
+
+ +

Read only access to the ith coordinate of the vector.

+ +
+
+ +

◆ ToUnit()

+ +
+
+ + + + + + + +
Vector3 mingfx::Vector3::ToUnit () const
+
+ +

Returns a normalized (i.e., unit length) version of the vector without modifying the original 'this' vector.

+ +
+
+ +

◆ UnitX()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector3& mingfx::Vector3::UnitX ()
+
+static
+
+ +

(1,0,0) - a shortcut for a special vector that is frequently needed

+ +
+
+ +

◆ UnitY()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector3& mingfx::Vector3::UnitY ()
+
+static
+
+ +

(0,1,0) - a shortcut for a special vector that is frequently needed

+ +
+
+ +

◆ UnitZ()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector3& mingfx::Vector3::UnitZ ()
+
+static
+
+ +

(0,0,1) - a shortcut for a special vector that is frequently needed

+ +
+
+ +

◆ value_ptr()

+ +
+
+ + + + + + + +
const float* mingfx::Vector3::value_ptr () const
+
+ +

Returns a const pointer to the raw data array.

+ +
+
+ +

◆ w()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Vector3::w () const
+
+inline
+
+ +

In homogeneous coordinates, the w coordinate for all vectors is 0.0.

+ +

Definition at line 115 of file vector3.h.

+ +
+
+ +

◆ x()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Vector3::x () const
+
+inline
+
+ +

Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1.0; form if you need to set the value.

+ +

Definition at line 104 of file vector3.h.

+ +
+
+ +

◆ y()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Vector3::y () const
+
+inline
+
+ +

Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1.0; form if you need to set the value.

+ +

Definition at line 108 of file vector3.h.

+ +
+
+ +

◆ z()

+ +
+
+ + + + + +
+ + + + + + + +
float mingfx::Vector3::z () const
+
+inline
+
+ +

Read only access to the z coordinate. Can also use my_vector[2]. Use the my_vector[2] = 1.0; form if you need to set the value.

+ +

Definition at line 112 of file vector3.h.

+ +
+
+ +

◆ Zero()

+ +
+
+ + + + + +
+ + + + + + + +
static const Vector3& mingfx::Vector3::Zero ()
+
+static
+
+ +

(0,0,0) - a shortcut for a special vector that is frequently needed

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + + diff --git a/dev/MinGfx/docs/html/closed.png b/dev/MinGfx/docs/html/closed.png new file mode 100644 index 0000000..11c68ad Binary files /dev/null and b/dev/MinGfx/docs/html/closed.png differ diff --git a/dev/MinGfx/docs/html/color_8h.html b/dev/MinGfx/docs/html/color_8h.html new file mode 100644 index 0000000..5a00a99 --- /dev/null +++ b/dev/MinGfx/docs/html/color_8h.html @@ -0,0 +1,119 @@ + + + + + + + +MinGfx Toolkit: src/color.h File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
color.h File Reference
+
+
+
#include <iostream>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  mingfx::Color
 Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with OpenGL. More...
 
+ + + + +

+Namespaces

 mingfx
 Namespace for the MinGfx Toolkit.
 
+ + + + + +

+Functions

std::ostream & mingfx::operator<< (std::ostream &os, const Color &c)
 
std::istream & mingfx::operator>> (std::istream &is, Color &c)
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/color_8h_source.html b/dev/MinGfx/docs/html/color_8h_source.html new file mode 100644 index 0000000..b3c037f --- /dev/null +++ b/dev/MinGfx/docs/html/color_8h_source.html @@ -0,0 +1,177 @@ + + + + + + + +MinGfx Toolkit: src/color.h Source File + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
color.h
+
+
+Go to the documentation of this file.
1 /*
+
2  This file is part of the MinGfx Project.
+
3 
+
4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
+
5  All Rights Reserved.
+
6 
+
7  Original Author(s) of this File:
+
8  Dan Keefe, 2018, University of Minnesota
+
9 
+
10  Author(s) of Significant Updates/Modifications to the File:
+
11  ...
+
12  */
+
13 
+
14 #ifndef SRC_COLOR_H_
+
15 #define SRC_COLOR_H_
+
16 
+
17 #include <iostream>
+
18 #include <vector>
+
19 
+
20 namespace mingfx {
+
21 
+
22 
+
41 class Color {
+
42 public:
+
44  Color();
+
45 
+
47  Color(float red, float green, float blue, float alpha=1.0);
+
48 
+
50  Color(float *p);
+
51 
+
53  Color(const std::vector<float> &vals);
+
54 
+
56  Color(const Color& p);
+
57 
+
59  virtual ~Color();
+
60 
+
62  bool operator==(const Color& p) const;
+
63 
+
65  bool operator!=(const Color& p) const;
+
66 
+
68  Color& operator=(const Color& p);
+
69 
+
71  float operator[](const int i) const;
+
72 
+
74  float& operator[](const int i);
+
75 
+
77  const float * value_ptr() const;
+
78 
+
79  std::vector<float> ToVector() const;
+
80 
+
84  Color Lerp(const Color &b, float alpha) const;
+
85 
+
89  static Color Lerp(const Color &a, const Color &b, float alpha);
+
90 
+
91 
+
92 private:
+
93  float c[4];
+
94 };
+
95 
+
96 
+
97 std::ostream & operator<< ( std::ostream &os, const Color &c);
+
98 std::istream & operator>> ( std::istream &is, Color &c);
+
99 
+
100 
+
101 } // namespace
+
102 
+
103 #endif
+
Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...
Definition: color.h:41
+
float & operator[](const int i)
Accesses the ith coordinate of the color, stored in RGBA order.
+
bool operator==(const Color &p) const
Check for equality.
+
Color(const std::vector< float > &vals)
Constructs a point given a 3 or 4-element vector of floats.
+
Color(float red, float green, float blue, float alpha=1.0)
Constructs a color. Alpha defaults to 1.0 (completely opaque)
+
static Color Lerp(const Color &a, const Color &b, float alpha)
Linear interpolation between two colors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...
+
const float * value_ptr() const
Returns a const pointer to the raw data array.
+
float operator[](const int i) const
Accesses the ith component of the color, stored in RGBA order.
+
virtual ~Color()
Color destructor.
+
Color()
Defaults to black.
+
Color(float *p)
Constructs a point given a pointer to float array.
+
Color Lerp(const Color &b, float alpha) const
Linear interpolation between this color and another. Alpha=0.0 returns this color,...
+
Color(const Color &p)
Copy constructor.
+
bool operator!=(const Color &p) const
Check for inequality.
+
Color & operator=(const Color &p)
Assignment operator.
+
std::vector< float > ToVector() const
+
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+
std::ostream & operator<<(std::ostream &os, const Color &c)
+
std::istream & operator>>(std::istream &is, Color &c)
+
+ + + + + diff --git a/dev/MinGfx/docs/html/craft__cam_8h.html b/dev/MinGfx/docs/html/craft__cam_8h.html new file mode 100644 index 0000000..fd8beaf --- /dev/null +++ b/dev/MinGfx/docs/html/craft__cam_8h.html @@ -0,0 +1,112 @@ + + + + + + + +MinGfx Toolkit: src/craft_cam.h File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
craft_cam.h File Reference
+
+
+
#include "point2.h"
+#include "matrix4.h"
+#include "vector2.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  mingfx::CraftCam
 This implements a user interface for controlling the camera with the mouse. More...
 
+ + + + +

+Namespaces

 mingfx
 Namespace for the MinGfx Toolkit.
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/craft__cam_8h_source.html b/dev/MinGfx/docs/html/craft__cam_8h_source.html new file mode 100644 index 0000000..289eb02 --- /dev/null +++ b/dev/MinGfx/docs/html/craft__cam_8h_source.html @@ -0,0 +1,211 @@ + + + + + + + +MinGfx Toolkit: src/craft_cam.h Source File + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
craft_cam.h
+
+
+Go to the documentation of this file.
1 /*
+
2  This file is part of the MinGfx Project.
+
3 
+
4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
+
5  All Rights Reserved.
+
6 
+
7  Original Author(s) of this File:
+
8  Dan Keefe, 2018, University of Minnesota
+
9 
+
10  Author(s) of Significant Updates/Modifications to the File:
+
11  ...
+
12  */
+
13 
+
14 #ifndef SRC_CRAFT_CAM_H_
+
15 #define SRC_CRAFT_CAM_H_
+
16 
+
17 #include "point2.h"
+
18 #include "matrix4.h"
+
19 #include "vector2.h"
+
20 
+
21 
+
22 namespace mingfx {
+
23 
+
24 
+
79 class CraftCam {
+
80 public:
+
81 
+ +
84 
+
86  CraftCam(const Matrix4 &initial_view_matrix);
+
87 
+
88  virtual ~CraftCam();
+
89 
+
90 
+
91  // To make the interaction work, the following set of functions need to be
+
92  // called from your GraphicsApp or whatever main application class you use
+
93  // to receive user input events and a draw callback.
+
94 
+
104  void UpdateSimulation(double dt, GLFWwindow *window_ptr);
+
105 
+
106 
+
125  void OnMouseMove(const Vector2 &normalized_mouse_delta);
+
126 
+
127 
+ +
138 
+
139 
+ +
143 
+ +
147 
+
148 
+
153  void UpdateHeight(float new_y_value);
+
154 
+
155 
+
156  // -------------
+
157 
+ +
161 
+
162 
+ +
168 
+
173  void set_translation_scale(float s);
+
174 
+
179  float rotation_scale();
+
180 
+
185  void set_rotation_scale(float s);
+
186 
+
190  float look_scale();
+
191 
+
195  void set_look_scale(float s);
+
196 
+
197 private:
+
198 
+
199  void WalkForward(double dt);
+
200  void WalkBackward(double dt);
+
201  void RotateLeft(double dt);
+
202  void RotateRight(double dt);
+
203  void LookWithMouse(const Vector2 &mouse_delta);
+
204 
+
205  float t_scale_;
+
206  float r_scale_;
+
207  float l_scale_;
+
208  float yaw_;
+
209  float pitch_;
+
210  Matrix4 base_head_;
+
211  Matrix4 added_rot_;
+
212 };
+
213 
+
214 
+
215 } // end namespace
+
216 
+
217 #endif
+
218 
+
219 
+
This implements a user interface for controlling the camera with the mouse.
Definition: craft_cam.h:79
+
void set_look_scale(float s)
This is the scale factor used to speed up / slow down looking around when moving the head with the mo...
+
void set_translation_scale(float s)
This is the scale factor used to speed up / slow down forward/backward translation when walking for t...
+
void UpdateSimulation(double dt, GLFWwindow *window_ptr)
Call this from your app's UpdateSimulation() method. This tells the camera to simulate walking based ...
+
Vector3 look()
Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates.
+
void set_rotation_scale(float s)
This is the scale factor used to speed up / slow down left/right rotation when walking for the LEFT /...
+
void set_view_matrix(Matrix4 view_matrix)
This is not required, but you may use this if you wish to set an initial view matrix or reset the vie...
+
Point3 eye()
Returns the "eye" point (i.e., focal point) of the camera in world space coordinates.
+
void OnMouseMove(const Vector2 &normalized_mouse_delta)
Call this from your app's OnMouseMove() or On*MouseDrag() method. Use OnMouseMove() if you want to al...
+
virtual ~CraftCam()
+
float translation_scale()
This is the scale factor used to speed up / slow down forward/backward translation when walking for t...
+
float look_scale()
This is the scale factor used to speed up / slow down looking around when moving the head with the mo...
+
float rotation_scale()
This is the scale factor used to speed up / slow down left/right rotation when walking for the LEFT /...
+
CraftCam(const Matrix4 &initial_view_matrix)
Creates a CraftCam object with the supplied initial view matrix.
+
Matrix4 view_matrix()
Access the camera view matrix created by the CraftCam interactions via this method and use it to draw...
+
CraftCam()
Creates a CraftCam object with an initial view matrix = identity.
+
void UpdateHeight(float new_y_value)
Sets the y value of the camera (i.e., the height). If you want to set the entire view matrix,...
+
A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...
Definition: matrix4.h:50
+
A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
Definition: point3.h:52
+
A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...
Definition: vector2.h:28
+
A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
Definition: vector3.h:62
+ +
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+ + +
+ + + + + diff --git a/dev/MinGfx/docs/html/customdoxygen.css b/dev/MinGfx/docs/html/customdoxygen.css new file mode 100644 index 0000000..e1c976b --- /dev/null +++ b/dev/MinGfx/docs/html/customdoxygen.css @@ -0,0 +1,524 @@ +body, table, div, p, dl { + font: 400 14px/22px "Helvetica", "Arial", sans-serif; + text-decoration: none; + font-weight: normal; +} + +tr { + background-image: none; + background-color: #FFFFFF; +} + +h1.groupheader { + font-size: 100%; + text-decoration: none; + font-weight: normal; +} + +#titlearea +{ + padding: 10px; + margin: 0px; + width: 100%; + border-top: 5px solid black; + border-bottom: 5px solid black; +} + + +div.header +{ + background-image: none; + background-color: #FFFFFF; + margin: 0px; + border-bottom: none; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + + + +.title { + font: 400 14px/28px "Helvetica", "Arial", sans-serif; + font-size: 150%; + font-weight: normal; + margin: 10px 2px; + background-image: none; + background-color: white; + text-transform:uppercase; +} + + +h2.groupheader { + border-bottom: 1px solid black; + color: black; + font-size: 110%; + font-weight: normal; + text-transform:uppercase; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1 { + font-size: 150%; + background-color: rgb(26, 93, 117); + color: white; + padding: 4px; + margin-top: 60px; + margin-bottom: 0px; +} + +h2 { + font-size: 125%; + text-transform:uppercase; + margin-top: 50px; +} + +h3 { + font-size: 110%; + margin-top: 40px; +} + +h4 { + font-size: 100%; +} + +h5 { + font-size: 100%; +} + +h6 { + font-size: 100%; +} + + + +h1, h2, h3, h4, h5, h6 { + font-weight: normal; + -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: none; +} + +dt { + padding-top: 20px; + font-weight: normal; + text-decoration: underline; +} + + + + +.tabs, .tabs2, .tabs3 { + text-transform:uppercase; + font-weight:normal; + color:rgb(190,190,190); + background-image: none; + background-color: black; + width: 100%; + z-index: 101; + font-size: 14px; + font-family: "Helvetica", "Arial", sans-serif; + text-shadow: none; +} + +.tabs2 { + color: white; + border-top:1px solid rgb(150,150,150); + font-size: 10px; + text-shadow: none; +} +.tabs3 { + color: white; + font-size: 9px; + text-shadow: none; +} + +.tablist { + margin: 0; + padding: 0; + display: table; + background-color: black; + font-weight: normal; + text-shadow: none; +} + +.tablist li { + float: left; + display: table-cell; + background-image: none; + line-height: 30px; + list-style: none; + font-weight: normal; + text-shadow: none; +} + +.tablist a { + display: block; + padding: 0 30px; + font-weight: normal; + background-image: none; + color:rgb(150,150,150); + text-decoration: none; + outline: none; + text-shadow: none; +} + +.tabs3 .tablist a { + padding: 0 10px; + text-shadow: none; +} + +.tablist a:hover { + background-image: none; + background-repeat:repeat-x; + color:white; + text-decoration: none; + font-weight: normal; + text-shadow: none; + text-decoration: underline; +} + +.tablist li.current a { + background-image: none; + color: rgb(42, 153, 193); + text-shadow: none; +} + + +.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:white; + font-size: 12px; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: white; + 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:white; +} + + + +div.qindex, div.navpath { + width: 100%; + line-height: 100%; + border-top:1px solid rgb(150,150,150); + background-color: black; +} + +.navpath ul { + font-size: 11px; + background-image: none; + height: 20px; + line-height: 20px; + color: rgb(150,150,150); + border: none; + overflow: hidden; + margin: 0px; + padding: 0px; +} + +.navpath li { + padding-left:30px; +} + +.navpath li.navelem a { + height: 20px; + display: block; + text-decoration: none; + outline: none; + color: rgb(150,150,150); + font-family: "Helvetica", "Arial", sans-serif; + text-shadow: none; + text-decoration: none; +} + +.navpath li.navelem a:hover { + background-image: none; + background-repeat:repeat-x; + color: white; + text-decoration: none; + font-weight: normal; + text-shadow: none; + text-decoration: underline; +} + +a.el { + font-weight: normal; + color: rgb(42, 153, 193); +} + +hr { + height: 0px; + border: none; + border-top: 1px solid black; +} + +hr.footer { + border-top: 0px; +} + + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: white; + border: none; + margin: 0px; + padding: 0 0 0 0; +} + +.memItemLeft, .memItemRight { + padding-top: 8px; +} + + + +.memSeparator { + border-bottom: 1px solid #EEEEEE; + line-height: 1px; + padding: 8px 0 0 0; +} + + + + +pre.fragment { + border: none; + border-left: 3px solid rgb(42, 153, 193); + background-color: white; + padding: 4px 6px; + margin: 4px 2px 4px 30px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 100%; +} + +div.fragment { + border: none; + border-left: 3px solid rgb(42, 153, 193); + background-color: white; + padding: 4px 6px; + margin: 4px 2px 4px 30px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 100%; +} + +div.line { + font-family: monospace, fixed; + font-size: 100%; + 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; +} + +span.comment { + color: #800000; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #068000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: white; + border: none; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #EEEEEE; + border-left: 1px solid #EEEEEE; + border-right: 1px solid #EEEEEE; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: normal; + text-shadow: none; + background-image: none; + background-repeat:repeat-x; + background-color: white; + /* opera specific markup */ + box-shadow: none; + /* firefox specific markup */ + -moz-box-shadow: none; + /* webkit specific markup */ + -webkit-box-shadow: none; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #EEEEEE; + border-left: 1px solid #EEEEEE; + border-right: 1px solid #EEEEEE; + padding: 6px 10px 2px 10px; + background-color: white; + border-top-width: 0; + background-image: none; + background-repeat:repeat-x; + /* opera specific markup */ + box-shadow: none; + /* firefox specific markup */ + -moz-box-shadow: none; + /* webkit specific markup */ + -webkit-box-shadow: none; +} + +.paramname { + color: #148caf; + white-space: nowrap; +} + + +a { + color: rgb(42, 153, 193); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: rgb(42, 153, 193); +} + + +span.lineno { + width: 0px; + padding-right: 4px; + text-align: right; + border-right: 0px; + background-color: #E8E8E8; + white-space: pre; +} + +#MSearchBox { + margin-top: 2px; +} + + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; + width: 33%; +} + +table.doxtable td, table.doxtable th { + border: 0px solid #373737; + padding: 3px 7px 2px; + font-size: 110%; +} + +table.doxtable th { + background-color: white; + color: black; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + font-weight: normal; + text-transform: uppercase; + text-align: left; +} + +p code { + background-color: #E8E8E8; +} diff --git a/dev/MinGfx/docs/html/default__shader_8h.html b/dev/MinGfx/docs/html/default__shader_8h.html new file mode 100644 index 0000000..ada0c55 --- /dev/null +++ b/dev/MinGfx/docs/html/default__shader_8h.html @@ -0,0 +1,122 @@ + + + + + + + +MinGfx Toolkit: src/default_shader.h File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
default_shader.h File Reference
+
+
+
#include "color.h"
+#include "point3.h"
+#include "shader_program.h"
+#include "texture2d.h"
+#include "vector3.h"
+#include "matrix4.h"
+#include "mesh.h"
+
+

Go to the source code of this file.

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

+Classes

class  mingfx::DefaultShader
 A simple GLSL shader for textured per-fragment Phong shading with multiple light sources. More...
 
class  mingfx::DefaultShader::MaterialProperties
 Small data structure to hold properties of the material to be lit. More...
 
class  mingfx::DefaultShader::LightProperties
 Small data structure to hold per-light properties. More...
 
+ + + + +

+Namespaces

 mingfx
 Namespace for the MinGfx Toolkit.
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/default__shader_8h_source.html b/dev/MinGfx/docs/html/default__shader_8h_source.html new file mode 100644 index 0000000..374116c --- /dev/null +++ b/dev/MinGfx/docs/html/default__shader_8h_source.html @@ -0,0 +1,240 @@ + + + + + + + +MinGfx Toolkit: src/default_shader.h Source File + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
default_shader.h
+
+
+Go to the documentation of this file.
1 /*
+
2  This file is part of the MinGfx Project.
+
3 
+
4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
+
5  All Rights Reserved.
+
6 
+
7  Original Author(s) of this File:
+
8  Dan Keefe, 2018, University of Minnesota
+
9 
+
10  Author(s) of Significant Updates/Modifications to the File:
+
11  ...
+
12  */
+
13 
+
14 #ifndef SRC_DEFAULT_SHADER_H_
+
15 #define SRC_DEFAULT_SHADER_H_
+
16 
+
17 #include "color.h"
+
18 #include "point3.h"
+
19 #include "shader_program.h"
+
20 #include "texture2d.h"
+
21 #include "vector3.h"
+
22 #include "matrix4.h"
+
23 #include "mesh.h"
+
24 
+
25 
+
26 
+
27 namespace mingfx {
+
28 
+ +
63 public:
+
64 
+
66  static const unsigned int MAX_LIGHTS = 10;
+
67 
+
68 
+ +
71  public:
+ + + +
75  float shinniness;
+ +
77  // eventually, this might include a normal map, etc.
+
78 
+
79  // defaults
+ +
81  ambient_reflectance(0.25f, 0.25f, 0.25f),
+
82  diffuse_reflectance(0.6f, 0.6f, 0.6f),
+
83  specular_reflectance(0.4f, 0.4f, 0.4f),
+
84  shinniness(20.0f) {}
+
85  };
+
86 
+ +
89  public:
+ + + + +
94 
+
95  // defaults
+ +
97  position(10.0f, 10.0f, 10.0f),
+
98  ambient_intensity(0.25f, 0.25f, 0.25f),
+
99  diffuse_intensity(0.6f, 0.6f, 0.6f),
+
100  specular_intensity(0.6f, 0.6f, 0.6f) {}
+
101  };
+
102 
+
106  DefaultShader(bool add_default_light=true);
+
107 
+
108  virtual ~DefaultShader();
+
109 
+ +
113 
+ +
116 
+
117 
+
124  void Init();
+
125 
+
130  void Draw(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection,
+
131  Mesh *mesh, const MaterialProperties &material);
+
132 
+
133 
+
138  void UseProgram(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection,
+
139  const MaterialProperties &material);
+
140 
+
143  void StopProgram();
+
144 
+
145 
+
146  int num_lights();
+
147 
+ +
149 
+
150 
+
151 private:
+
152 
+
153  std::vector<LightProperties> lights_;
+
154 
+
155  // cached raw float arrays store data to send directly to the gpu
+
156  // GLSL requires fixed size arrays for these
+
157  float lightPositions_[3*MAX_LIGHTS];
+
158  float lightIas_[4*MAX_LIGHTS];
+
159  float lightIds_[4*MAX_LIGHTS];
+
160  float lightIss_[4*MAX_LIGHTS];
+
161  void update_light_arrays();
+
162 
+
163  ShaderProgram phongShader_;
+
164 };
+
165 
+
166 } // end namespace
+
167 
+
168 #endif
+
Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...
Definition: color.h:41
+
Small data structure to hold per-light properties.
+ + + + + +
Small data structure to hold properties of the material to be lit.
+ + + + + + +
A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.
+
void UseProgram(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, const MaterialProperties &material)
Only needed if you do not want to draw a Mesh. This does all of the same setup for drawing that the D...
+ +
static const unsigned int MAX_LIGHTS
If changed, this needs to also be changed in the glsl shader code.
+
void StopProgram()
Only needed if you do not want to draw a Mesh. Call this after UseProgram() and after drawing your ge...
+
void SetLight(int i, LightProperties light)
Changes the properties for a light that was already added.
+
void Init()
This loads vertex and fragment shaders from files, compiles them, and links them. So,...
+
void Draw(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, Mesh *mesh, const MaterialProperties &material)
This starts the shader and sets its uniform variables based upon the current set of lights,...
+
LightProperties light(int i)
+
DefaultShader(bool add_default_light=true)
The constructor defaults to adding a single white light to the scene at (10,10,10)....
+ +
void AddLight(LightProperties light)
Multiple lights are supported, this adds one to the end of the list. Up to MAX_LIGHTS can be added.
+
A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...
Definition: matrix4.h:50
+
A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.
Definition: mesh.h:127
+
A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
Definition: point3.h:52
+
A wrapper around GLSL shader programs.
+
A wrapper around a 2D texture that supports loading images from files or setting texture color data d...
Definition: texture2d.h:42
+ + + +
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+ + + + +
+ + + + + diff --git a/dev/MinGfx/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dev/MinGfx/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..af0d73f --- /dev/null +++ b/dev/MinGfx/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,146 @@ + + + + + + + +MinGfx Toolkit: src Directory Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  aabb.h [code]
 
file  bvh.h [code]
 
file  color.h [code]
 
file  craft_cam.h [code]
 
file  default_shader.h [code]
 
file  gfxmath.h [code]
 
file  graphics_app.h [code]
 
file  matrix4.h [code]
 
file  mesh.h [code]
 
file  mingfx.h [code]
 Includes the entire MinGfx library and calls using namespace mingfx.
 
file  mingfx_config.h [code]
 
file  opengl_headers.h [code]
 
file  platform.h [code]
 
file  point2.h [code]
 
file  point3.h [code]
 
file  quaternion.h [code]
 
file  quick_shapes.h [code]
 
file  ray.h [code]
 
file  shader_program.h [code]
 
file  stb_rect_pack.h [code]
 
file  text_shader.h [code]
 
file  texture2d.h [code]
 
file  unicam.h [code]
 
file  vector2.h [code]
 
file  vector3.h [code]
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/dir_e68e8157741866f444e17edd764ebbae.html b/dev/MinGfx/docs/html/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 0000000..d4e5a57 --- /dev/null +++ b/dev/MinGfx/docs/html/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,91 @@ + + + + + + + +MinGfx Toolkit: doc Directory Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
doc Directory Reference
+
+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/doc.png b/dev/MinGfx/docs/html/doc.png new file mode 100644 index 0000000..7728f70 Binary files /dev/null and b/dev/MinGfx/docs/html/doc.png differ diff --git a/dev/MinGfx/docs/html/doxygen.css b/dev/MinGfx/docs/html/doxygen.css new file mode 100644 index 0000000..a64c4bf --- /dev/null +++ b/dev/MinGfx/docs/html/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +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 #999999; + color: #444444; + 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, th p.intertd, th 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.navtab { + border-right: 1px solid #B0B0B0; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F9F9F9; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #505050; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #606060; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #606060; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #606060; +} + +/* @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 #CCCCCC; + background-color: #FCFCFC; + 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: #FCFCFC; + border: 1px solid #CCCCCC; +} + +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: #EEEEEE; + font-weight: bold; + border: 1px solid #CCCCCC; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EEEEEE; + border: 1px solid #CCCCCC; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #F0F0F0; +} + +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: #F8F8F8; + border-left: 2px solid #AAAAAA; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #AAAAAA; + 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 #B0B0B0; +} + +th.dirtab { + background: #EEEEEE; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #666666; +} + +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: #FAFAFA; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #E2E2E2; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #606060; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #B4B4B4; + border-left: 1px solid #B4B4B4; + border-right: 1px solid #B4B4B4; + 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: #E6E6E6; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EEEEEE; + border: 1px solid #B0B0B0; + 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 #B4B4B4; + border-left: 1px solid #B4B4B4; + border-right: 1px solid #B4B4B4; + padding: 6px 0px 6px 0px; + color: #2B2B2B; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #E3E3E3; + /* 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 #B4B4B4; + border-left: 1px solid #B4B4B4; + border-right: 1px solid #B4B4B4; + padding: 6px 10px 2px 10px; + background-color: #FCFCFC; + 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: #888888; + border-top:1px solid #707070; + border-left:1px solid #707070; + border-right:1px solid #CCCCCC; + border-bottom:1px solid #CCCCCC; + 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 #AAAAAA; + border-bottom: 1px solid #AAAAAA; + 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: #F8F8F8; +} + +.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: #505050; +} + +.arrow { + color: #AAAAAA; + -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: #888888; + 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: #333333; +} + +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 #373737; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #474747; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #B4B4B4; + 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 #B4B4B4; + border-bottom: 1px solid #B4B4B4; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #B4B4B4; + /*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: #E6E6E6; + font-size: 90%; + color: #2B2B2B; + 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 #B4B4B4; +} + + +.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:#9B9B9B; + border:solid 1px #CACACA; + 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:#454545; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #303030; + 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:#808080; +} + +.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:#454545; + 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: #FAFAFA; + margin: 0px; + border-bottom: 1px solid #CCCCCC; +} + +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 #707070; +} + +.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 #A0A0A0; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#404040; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F6F6F6; + border: 1px solid #DDDDDD; + 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: #606060; + 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; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.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 #373737; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #474747; + 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/dev/MinGfx/docs/html/doxygen.svg b/dev/MinGfx/docs/html/doxygen.svg new file mode 100644 index 0000000..ec0905b --- /dev/null +++ b/dev/MinGfx/docs/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/MinGfx/docs/html/dynsections.js b/dev/MinGfx/docs/html/dynsections.js new file mode 100644 index 0000000..88f2c27 --- /dev/null +++ b/dev/MinGfx/docs/html/dynsections.js @@ -0,0 +1,128 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +MinGfx Toolkit: File List + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
 doc
  src
 aabb.h
 bvh.h
 color.h
 craft_cam.h
 default_shader.h
 gfxmath.h
 graphics_app.h
 matrix4.h
 mesh.h
 mingfx.hIncludes the entire MinGfx library and calls using namespace mingfx
 mingfx_config.h
 opengl_headers.h
 platform.h
 point2.h
 point3.h
 quaternion.h
 quick_shapes.h
 ray.h
 shader_program.h
 stb_rect_pack.h
 text_shader.h
 texture2d.h
 unicam.h
 vector2.h
 vector3.h
+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/folderclosed.png b/dev/MinGfx/docs/html/folderclosed.png new file mode 100644 index 0000000..44c8755 Binary files /dev/null and b/dev/MinGfx/docs/html/folderclosed.png differ diff --git a/dev/MinGfx/docs/html/folderopen.png b/dev/MinGfx/docs/html/folderopen.png new file mode 100644 index 0000000..ed88e79 Binary files /dev/null and b/dev/MinGfx/docs/html/folderopen.png differ diff --git a/dev/MinGfx/docs/html/functions.html b/dev/MinGfx/docs/html/functions.html new file mode 100644 index 0000000..7f04684 --- /dev/null +++ b/dev/MinGfx/docs/html/functions.html @@ -0,0 +1,129 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_b.html b/dev/MinGfx/docs/html/functions_b.html new file mode 100644 index 0000000..b99bf1c --- /dev/null +++ b/dev/MinGfx/docs/html/functions_b.html @@ -0,0 +1,99 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- b -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_c.html b/dev/MinGfx/docs/html/functions_c.html new file mode 100644 index 0000000..6d7a3e6 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_c.html @@ -0,0 +1,132 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- c -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_d.html b/dev/MinGfx/docs/html/functions_d.html new file mode 100644 index 0000000..58286eb --- /dev/null +++ b/dev/MinGfx/docs/html/functions_d.html @@ -0,0 +1,163 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_e.html b/dev/MinGfx/docs/html/functions_e.html new file mode 100644 index 0000000..0125b04 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_e.html @@ -0,0 +1,94 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- e -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_enum.html b/dev/MinGfx/docs/html/functions_enum.html new file mode 100644 index 0000000..a963b42 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_enum.html @@ -0,0 +1,94 @@ + + + + + + + +MinGfx Toolkit: Class Members - Enumerations + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_f.html b/dev/MinGfx/docs/html/functions_f.html new file mode 100644 index 0000000..2b80c54 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_f.html @@ -0,0 +1,126 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- f -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func.html b/dev/MinGfx/docs/html/functions_func.html new file mode 100644 index 0000000..d0ce7f9 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func.html @@ -0,0 +1,117 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_b.html b/dev/MinGfx/docs/html/functions_func_b.html new file mode 100644 index 0000000..cb37680 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_b.html @@ -0,0 +1,99 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_c.html b/dev/MinGfx/docs/html/functions_func_c.html new file mode 100644 index 0000000..34df742 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_c.html @@ -0,0 +1,129 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_d.html b/dev/MinGfx/docs/html/functions_func_d.html new file mode 100644 index 0000000..8192d7f --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_d.html @@ -0,0 +1,157 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_e.html b/dev/MinGfx/docs/html/functions_func_e.html new file mode 100644 index 0000000..706b50e --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_e.html @@ -0,0 +1,91 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_f.html b/dev/MinGfx/docs/html/functions_func_f.html new file mode 100644 index 0000000..d7c92ad --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_f.html @@ -0,0 +1,123 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_g.html b/dev/MinGfx/docs/html/functions_func_g.html new file mode 100644 index 0000000..bc2d2b1 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_g.html @@ -0,0 +1,90 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_h.html b/dev/MinGfx/docs/html/functions_func_h.html new file mode 100644 index 0000000..ecc0de4 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_h.html @@ -0,0 +1,90 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_i.html b/dev/MinGfx/docs/html/functions_func_i.html new file mode 100644 index 0000000..0de5c8a --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_i.html @@ -0,0 +1,152 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_l.html b/dev/MinGfx/docs/html/functions_func_l.html new file mode 100644 index 0000000..bc8c345 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_l.html @@ -0,0 +1,123 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_m.html b/dev/MinGfx/docs/html/functions_func_m.html new file mode 100644 index 0000000..7a702cd --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_m.html @@ -0,0 +1,105 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_n.html b/dev/MinGfx/docs/html/functions_func_n.html new file mode 100644 index 0000000..b8ff31f --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_n.html @@ -0,0 +1,107 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_o.html b/dev/MinGfx/docs/html/functions_func_o.html new file mode 100644 index 0000000..117b733 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_o.html @@ -0,0 +1,208 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_p.html b/dev/MinGfx/docs/html/functions_func_p.html new file mode 100644 index 0000000..0c5d771 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_p.html @@ -0,0 +1,102 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_q.html b/dev/MinGfx/docs/html/functions_func_q.html new file mode 100644 index 0000000..bc614d6 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_q.html @@ -0,0 +1,93 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_r.html b/dev/MinGfx/docs/html/functions_func_r.html new file mode 100644 index 0000000..0d8c4ee --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_r.html @@ -0,0 +1,129 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_s.html b/dev/MinGfx/docs/html/functions_func_s.html new file mode 100644 index 0000000..aa2955b --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_s.html @@ -0,0 +1,179 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_t.html b/dev/MinGfx/docs/html/functions_func_t.html new file mode 100644 index 0000000..a2fff4e --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_t.html @@ -0,0 +1,126 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_u.html b/dev/MinGfx/docs/html/functions_func_u.html new file mode 100644 index 0000000..32ef019 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_u.html @@ -0,0 +1,127 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_v.html b/dev/MinGfx/docs/html/functions_func_v.html new file mode 100644 index 0000000..e3d1082 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_v.html @@ -0,0 +1,109 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_w.html b/dev/MinGfx/docs/html/functions_func_w.html new file mode 100644 index 0000000..83d8abd --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_w.html @@ -0,0 +1,109 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_func_x.html b/dev/MinGfx/docs/html/functions_func_x.html new file mode 100644 index 0000000..222055f --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_x.html @@ -0,0 +1,94 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/dev/MinGfx/docs/html/functions_func_y.html b/dev/MinGfx/docs/html/functions_func_y.html new file mode 100644 index 0000000..c75e688 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_y.html @@ -0,0 +1,94 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/dev/MinGfx/docs/html/functions_func_z.html b/dev/MinGfx/docs/html/functions_func_z.html new file mode 100644 index 0000000..da9279e --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_z.html @@ -0,0 +1,98 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/dev/MinGfx/docs/html/functions_func_~.html b/dev/MinGfx/docs/html/functions_func_~.html new file mode 100644 index 0000000..537d422 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_func_~.html @@ -0,0 +1,144 @@ + + + + + + + +MinGfx Toolkit: Class Members - Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- ~ -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_g.html b/dev/MinGfx/docs/html/functions_g.html new file mode 100644 index 0000000..40b9b2d --- /dev/null +++ b/dev/MinGfx/docs/html/functions_g.html @@ -0,0 +1,90 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- g -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_h.html b/dev/MinGfx/docs/html/functions_h.html new file mode 100644 index 0000000..2f010db --- /dev/null +++ b/dev/MinGfx/docs/html/functions_h.html @@ -0,0 +1,106 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- h -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_i.html b/dev/MinGfx/docs/html/functions_i.html new file mode 100644 index 0000000..1504c56 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_i.html @@ -0,0 +1,158 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- i -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_l.html b/dev/MinGfx/docs/html/functions_l.html new file mode 100644 index 0000000..cf3d91b --- /dev/null +++ b/dev/MinGfx/docs/html/functions_l.html @@ -0,0 +1,126 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- l -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_m.html b/dev/MinGfx/docs/html/functions_m.html new file mode 100644 index 0000000..8bb9d7d --- /dev/null +++ b/dev/MinGfx/docs/html/functions_m.html @@ -0,0 +1,108 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- m -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_n.html b/dev/MinGfx/docs/html/functions_n.html new file mode 100644 index 0000000..2b572fb --- /dev/null +++ b/dev/MinGfx/docs/html/functions_n.html @@ -0,0 +1,113 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- n -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_o.html b/dev/MinGfx/docs/html/functions_o.html new file mode 100644 index 0000000..b8fb50c --- /dev/null +++ b/dev/MinGfx/docs/html/functions_o.html @@ -0,0 +1,211 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- o -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_p.html b/dev/MinGfx/docs/html/functions_p.html new file mode 100644 index 0000000..f2c3c17 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_p.html @@ -0,0 +1,108 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- p -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_q.html b/dev/MinGfx/docs/html/functions_q.html new file mode 100644 index 0000000..cc25a2a --- /dev/null +++ b/dev/MinGfx/docs/html/functions_q.html @@ -0,0 +1,93 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- q -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_r.html b/dev/MinGfx/docs/html/functions_r.html new file mode 100644 index 0000000..a0d84bf --- /dev/null +++ b/dev/MinGfx/docs/html/functions_r.html @@ -0,0 +1,129 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- r -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_rela.html b/dev/MinGfx/docs/html/functions_rela.html new file mode 100644 index 0000000..b29d900 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_rela.html @@ -0,0 +1,88 @@ + + + + + + + +MinGfx Toolkit: Class Members - Related Functions + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_s.html b/dev/MinGfx/docs/html/functions_s.html new file mode 100644 index 0000000..6d5c357 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_s.html @@ -0,0 +1,194 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- s -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_t.html b/dev/MinGfx/docs/html/functions_t.html new file mode 100644 index 0000000..5ab26a1 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_t.html @@ -0,0 +1,129 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- t -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_u.html b/dev/MinGfx/docs/html/functions_u.html new file mode 100644 index 0000000..4ffce53 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_u.html @@ -0,0 +1,127 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- u -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_v.html b/dev/MinGfx/docs/html/functions_v.html new file mode 100644 index 0000000..13a6cda --- /dev/null +++ b/dev/MinGfx/docs/html/functions_v.html @@ -0,0 +1,115 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- v -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_vars.html b/dev/MinGfx/docs/html/functions_vars.html new file mode 100644 index 0000000..123e549 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_vars.html @@ -0,0 +1,248 @@ + + + + + + + +MinGfx Toolkit: Class Members - Variables + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+ + +

- x -

+ + +

- y -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_w.html b/dev/MinGfx/docs/html/functions_w.html new file mode 100644 index 0000000..e1e4f81 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_w.html @@ -0,0 +1,114 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- w -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_x.html b/dev/MinGfx/docs/html/functions_x.html new file mode 100644 index 0000000..b0d8f5e --- /dev/null +++ b/dev/MinGfx/docs/html/functions_x.html @@ -0,0 +1,96 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- x -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_y.html b/dev/MinGfx/docs/html/functions_y.html new file mode 100644 index 0000000..db734ed --- /dev/null +++ b/dev/MinGfx/docs/html/functions_y.html @@ -0,0 +1,96 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- y -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_z.html b/dev/MinGfx/docs/html/functions_z.html new file mode 100644 index 0000000..0349076 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_z.html @@ -0,0 +1,98 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- z -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/functions_~.html b/dev/MinGfx/docs/html/functions_~.html new file mode 100644 index 0000000..bda6078 --- /dev/null +++ b/dev/MinGfx/docs/html/functions_~.html @@ -0,0 +1,144 @@ + + + + + + + +MinGfx Toolkit: Class Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- ~ -

+
+ + + + + diff --git a/dev/MinGfx/docs/html/gfxmath_8h.html b/dev/MinGfx/docs/html/gfxmath_8h.html new file mode 100644 index 0000000..95d2bda --- /dev/null +++ b/dev/MinGfx/docs/html/gfxmath_8h.html @@ -0,0 +1,113 @@ + + + + + + + +MinGfx Toolkit: src/gfxmath.h File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gfxmath.h File Reference
+
+
+
#include "point2.h"
+#include "point3.h"
+#include "vector3.h"
+#include "matrix4.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  mingfx::GfxMath
 This class holds a variety of static math functions that are useful to have defined with creating graphics programs. More...
 
+ + + + +

+Namespaces

 mingfx
 Namespace for the MinGfx Toolkit.
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/gfxmath_8h_source.html b/dev/MinGfx/docs/html/gfxmath_8h_source.html new file mode 100644 index 0000000..b3150d9 --- /dev/null +++ b/dev/MinGfx/docs/html/gfxmath_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +MinGfx Toolkit: src/gfxmath.h Source File + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gfxmath.h
+
+
+Go to the documentation of this file.
1 /*
+
2  This file is part of the MinGfx Project.
+
3 
+
4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
+
5  All Rights Reserved.
+
6 
+
7  Original Author(s) of this File:
+
8  Dan Keefe, 2018, University of Minnesota
+
9 
+
10  Author(s) of Significant Updates/Modifications to the File:
+
11  ...
+
12  */
+
13 
+
14 #ifndef SRC_GFXMATH_H_
+
15 #define SRC_GFXMATH_H_
+
16 
+
17 #include "point2.h"
+
18 #include "point3.h"
+
19 #include "vector3.h"
+
20 #include "matrix4.h"
+
21 
+
22 namespace mingfx {
+
23 
+
24 
+
28 class GfxMath {
+
29 public:
+
30 
+
32  static float Clamp(float x, float a, float b);
+
33 
+
34  static float ToRadians(float degrees);
+
35 
+
36  static float ToDegrees(float radians);
+
37 
+
38  static Vector3 ToRadians(Vector3 degrees);
+
39 
+
40  static Vector3 ToDegrees(Vector3 radians);
+
41 
+
42  static float Lerp(float a, float b, float alpha);
+
43 
+
44  static int iLerp(int a, int b, float alpha);
+
45 
+
55  static Point3 ScreenToNearPlane(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt);
+
56 
+
60  static Point3 ScreenToDepthPlane(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt, float planeDepth);
+
61 
+
69  static Point3 ScreenToWorld(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt, float normalizedZ);
+
70 
+
71 
+
72  static const float PI;
+
73  static const float TWO_PI;
+
74  static const float HALF_PI;
+
75 };
+
76 
+
77 
+
78 
+
79 } // end namespace
+
80 
+
81 #endif
+
This class holds a variety of static math functions that are useful to have defined with creating gra...
Definition: gfxmath.h:28
+
static const float TWO_PI
Definition: gfxmath.h:73
+
static float ToRadians(float degrees)
+
static Point3 ScreenToNearPlane(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt)
Converts a 2D point on the filmplane represented in Normalized Device Coorindates,...
+
static Point3 ScreenToWorld(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt, float normalizedZ)
Converts a 2D point on the filmplane represented in Normalized Device Coorindates,...
+
static Vector3 ToRadians(Vector3 degrees)
+
static float ToDegrees(float radians)
+
static Vector3 ToDegrees(Vector3 radians)
+
static const float PI
Definition: gfxmath.h:72
+
static Point3 ScreenToDepthPlane(const Matrix4 &viewMatrix, const Matrix4 &projMatrix, const Point2 &normalizedScreenPt, float planeDepth)
Similar to filmplane2D_to_nearplane3D() but here rather than using the nearplane, you specify the dep...
+
static const float HALF_PI
Definition: gfxmath.h:74
+
static float Lerp(float a, float b, float alpha)
+
static float Clamp(float x, float a, float b)
Returns a if x is less than a and b if x is greater than b.
+
static int iLerp(int a, int b, float alpha)
+
A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...
Definition: matrix4.h:50
+
A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...
Definition: point2.h:28
+
A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
Definition: point3.h:52
+
A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
Definition: vector3.h:62
+ +
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+ + + +
+ + + + + diff --git a/dev/MinGfx/docs/html/globals.html b/dev/MinGfx/docs/html/globals.html new file mode 100644 index 0000000..2d170a0 --- /dev/null +++ b/dev/MinGfx/docs/html/globals.html @@ -0,0 +1,140 @@ + + + + + + + +MinGfx Toolkit: File Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+
+ + + + + diff --git a/dev/MinGfx/docs/html/globals_defs.html b/dev/MinGfx/docs/html/globals_defs.html new file mode 100644 index 0000000..e15c19b --- /dev/null +++ b/dev/MinGfx/docs/html/globals_defs.html @@ -0,0 +1,107 @@ + + + + + + + +MinGfx Toolkit: File Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/dev/MinGfx/docs/html/globals_eval.html b/dev/MinGfx/docs/html/globals_eval.html new file mode 100644 index 0000000..58a8beb --- /dev/null +++ b/dev/MinGfx/docs/html/globals_eval.html @@ -0,0 +1,94 @@ + + + + + + + +MinGfx Toolkit: File Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/dev/MinGfx/docs/html/globals_func.html b/dev/MinGfx/docs/html/globals_func.html new file mode 100644 index 0000000..4faf44b --- /dev/null +++ b/dev/MinGfx/docs/html/globals_func.html @@ -0,0 +1,97 @@ + + + + + + + +MinGfx Toolkit: File Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/dev/MinGfx/docs/html/globals_type.html b/dev/MinGfx/docs/html/globals_type.html new file mode 100644 index 0000000..930e8e7 --- /dev/null +++ b/dev/MinGfx/docs/html/globals_type.html @@ -0,0 +1,97 @@ + + + + + + + +MinGfx Toolkit: File Members + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/dev/MinGfx/docs/html/graphics__app_8h.html b/dev/MinGfx/docs/html/graphics__app_8h.html new file mode 100644 index 0000000..d790913 --- /dev/null +++ b/dev/MinGfx/docs/html/graphics__app_8h.html @@ -0,0 +1,113 @@ + + + + + + + +MinGfx Toolkit: src/graphics_app.h File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
graphics_app.h File Reference
+
+
+
#include <nanogui/nanogui.h>
+#include <iostream>
+#include "point2.h"
+#include "vector2.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  mingfx::GraphicsApp
 This is the main application base class for the MinGfx Toolkit. More...
 
+ + + + +

+Namespaces

 mingfx
 Namespace for the MinGfx Toolkit.
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/graphics__app_8h_source.html b/dev/MinGfx/docs/html/graphics__app_8h_source.html new file mode 100644 index 0000000..2353eb8 --- /dev/null +++ b/dev/MinGfx/docs/html/graphics__app_8h_source.html @@ -0,0 +1,358 @@ + + + + + + + +MinGfx Toolkit: src/graphics_app.h Source File + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
graphics_app.h
+
+
+Go to the documentation of this file.
1 /*
+
2  This file is part of the MinGfx Project.
+
3 
+
4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
+
5  All Rights Reserved.
+
6 
+
7  Original Author(s) of this File:
+
8  Dan Keefe, 2017, University of Minnesota
+
9 
+
10  Author(s) of Significant Updates/Modifications to the File:
+
11  ...
+
12  */
+
13 
+
14 
+
15 #ifndef SRC_GRAPHICS_APP_H_
+
16 #define SRC_GRAPHICS_APP_H_
+
17 
+
18 // disable warnings for this 3rd party code
+
19 #pragma warning ( push, 0 )
+
20 #include <nanogui/nanogui.h>
+
21 #pragma warning ( pop )
+
22 
+
23 #include <iostream>
+
24 
+
25 #include "point2.h"
+
26 #include "vector2.h"
+
27 
+
29 namespace mingfx {
+
30 
+
31 
+
135 class GraphicsApp {
+
136 public:
+
137 
+
144  GraphicsApp(int width, int height, const std::string &caption);
+
145 
+
146 
+
148  virtual ~GraphicsApp();
+
149 
+
150 
+
151  // Callback methods -- override these and fill in to respond to user
+
152  // input events.
+
153 
+
165  virtual void OnMouseMove(const Point2 &pos, const Vector2 &delta) {}
+
166 
+
174  virtual void OnLeftMouseDown(const Point2 &pos) {}
+
175 
+
187  virtual void OnLeftMouseDrag(const Point2 &pos, const Vector2 &delta) {}
+
188 
+
196  virtual void OnLeftMouseUp(const Point2 &pos) {}
+
197 
+
198 
+
200  virtual void OnMiddleMouseDown(const Point2 &pos) {}
+
201 
+
203  virtual void OnMiddleMouseDrag(const Point2 &pos, const Vector2 &delta) {}
+
204 
+
206  virtual void OnMiddleMouseUp(const Point2 &pos) {}
+
207 
+
208 
+
210  virtual void OnRightMouseDown(const Point2 &pos) {}
+
211 
+
213  virtual void OnRightMouseDrag(const Point2 &pos, const Vector2 &delta) {}
+
214 
+
216  virtual void OnRightMouseUp(const Point2 &pos) {}
+
217 
+
218 
+
225  virtual void OnKeyDown(const char *c, int modifiers) {}
+
226 
+
233  virtual void OnKeyRepeat(const char *c, int modifiers) {}
+
234 
+
241  virtual void OnKeyUp(const char *c, int modifiers) {}
+
242 
+
243 
+
244 
+
247  virtual void OnSpecialKeyDown(int key, int scancode, int modifiers) {}
+
248 
+
251  virtual void OnSpecialKeyRepeat(int key, int scancode, int modifiers) {}
+
252 
+
255  virtual void OnSpecialKeyUp(int key, int scancode, int modifiers) {}
+
256 
+
257 
+
261  virtual void OnWindowResize(int new_width, int new_height) {}
+
262 
+
263 
+
271  virtual void Run();
+
272 
+
273 
+
284  virtual void InitNanoGUI() {}
+
285 
+
297  virtual void InitOpenGL() {}
+
298 
+
299 
+
306  virtual void UpdateSimulation(double dt) {}
+
307 
+
308 
+
311  virtual void DrawUsingNanoVG(NVGcontext *ctx) {}
+
312 
+
313 
+
314 
+
317  virtual void DrawUsingOpenGL() {}
+
318 
+
319 
+
322  virtual bool IsKeyDown(int key);
+
323 
+
325  virtual bool IsLeftMouseDown();
+
326 
+
328  virtual bool IsMiddleMouseDown();
+
329 
+
331  virtual bool IsRightMouseDown();
+
332 
+
334  virtual int window_width();
+
335 
+
337  virtual int window_height();
+
338 
+
343  virtual int framebuffer_width();
+
344 
+
349  virtual int framebuffer_height();
+
350 
+
352  virtual float aspect_ratio();
+
353 
+
354 
+
359  virtual Point2 PixelsToNormalizedDeviceCoords(const Point2 &pointInPixels);
+
360 
+
365  virtual Point2 NormalizedDeviceCoordsToPixels(const Point2 &pointInNDC);
+
366 
+
367 
+
372  virtual Vector2 PixelsToNormalizedDeviceCoords(const Vector2 &vectorInPixels);
+
373 
+
378  virtual Vector2 NormalizedDeviceCoordsToPixels(const Vector2 &pointInNDC);
+
379 
+
382  virtual float ReadZValueAtPixel(const Point2 &pointInPixels, unsigned int whichBuffer = GL_BACK);
+
383 
+
385  virtual nanogui::Screen* screen();
+
386 
+
388  virtual GLFWwindow* window();
+
389 
+
390 
+
393  virtual void ResizeWindow(int new_width, int new_height);
+
394 
+
395 
+
403  virtual void InitGraphicsContext();
+
404 
+
405 private:
+
406 
+
407  bool cursor_pos_glfw_cb(double x, double y);
+
408  bool mouse_button_glfw_cb(int button, int action, int modifiers);
+
409  bool key_glfw_cb(int key, int scancode, int action, int mods);
+
410  bool char_glfw_cb(unsigned int codepoint);
+
411  bool drop_glfw_cb(int count, const char **filenames);
+
412  bool scroll_glfw_cb(double x, double y);
+
413  bool resize_glfw_cb(int width, int height);
+
414 
+
415  virtual void mouse_move(const Point2 &pos, const Vector2 &delta) {
+
416  OnMouseMove(pos, delta);
+
417  }
+
418  virtual void left_mouse_down(const Point2 &pos) {
+
419  OnLeftMouseDown(pos);
+
420  }
+
421  virtual void left_mouse_drag(const Point2 &pos, const Vector2 &delta) {
+
422  OnLeftMouseDrag(pos, delta);
+
423  }
+
424  virtual void left_mouse_up(const Point2 &pos) {
+
425  OnLeftMouseUp(pos);
+
426  }
+
427  virtual void middle_mouse_down(const Point2 &pos) {
+
428  OnMiddleMouseDown(pos);
+
429  }
+
430  virtual void middle_mouse_drag(const Point2 &pos, const Vector2 &delta) {
+
431  OnMiddleMouseDrag(pos, delta);
+
432  }
+
433  virtual void middle_mouse_up(const Point2 &pos) {
+
434  OnMiddleMouseUp(pos);
+
435  }
+
436  virtual void right_mouse_down(const Point2 &pos) {
+
437  OnRightMouseDown(pos);
+
438  }
+
439  virtual void right_mouse_drag(const Point2 &pos, const Vector2 &delta) {
+
440  OnRightMouseDrag(pos, delta);
+
441  }
+
442  virtual void right_mouse_up(const Point2 &pos) {
+
443  OnRightMouseUp(pos);
+
444  }
+
445  virtual void key_down(const char *c, int modifiers) {
+
446  OnKeyDown(c, modifiers);
+
447  }
+
448  virtual void key_repeat(const char *c, int modifiers) {
+
449  OnKeyRepeat(c, modifiers);
+
450  }
+
451  virtual void key_up(const char *c, int modifiers) {
+
452  OnKeyUp(c, modifiers);
+
453  }
+
454  virtual void special_key_down(int key, int scancode, int modifiers) {
+
455  OnSpecialKeyDown(key, scancode, modifiers);
+
456  }
+
457  virtual void special_key_repeat(int key, int scancode, int modifiers) {
+
458  OnSpecialKeyRepeat(key, scancode, modifiers);
+
459  }
+
460  virtual void special_key_up(int key, int scancode, int modifiers) {
+
461  OnSpecialKeyUp(key, scancode, modifiers);
+
462  }
+
463 
+
464  bool graphicsInitialized_;
+
465  int width_;
+
466  int height_;
+
467  const std::string caption_;
+
468  nanogui::Screen *screen_;
+
469  GLFWwindow* window_;
+
470  double lastDrawT_;
+
471  Point2 lastMouse_;
+
472  bool leftDown_;
+
473  bool middleDown_;
+
474  bool rightDown_;
+
475 };
+
476 
+
477 
+
478 } // end namespace
+
479 
+
480 #endif
+
481 
+
This is the main application base class for the MinGfx Toolkit.
Definition: graphics_app.h:135
+
virtual void OnKeyDown(const char *c, int modifiers)
Transforms a keyboard down event into the actual character typed.
Definition: graphics_app.h:225
+
virtual void OnRightMouseDrag(const Point2 &pos, const Vector2 &delta)
If the mouse button is held down and the mouse has moved in the past frame then this function will be...
Definition: graphics_app.h:213
+
virtual void InitGraphicsContext()
Users cannot make any graphics calls (e.g., setting the clear color, saving mesh data to the GPU) unt...
+
virtual void ResizeWindow(int new_width, int new_height)
Cause the graphics windows to resize programmatically rather than by dragging on the corner manually.
+
virtual void OnSpecialKeyUp(int key, int scancode, int modifiers)
The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...
Definition: graphics_app.h:255
+
virtual int window_width()
Returns the current width of the client area of the window in pixels.
+
virtual void OnKeyRepeat(const char *c, int modifiers)
Transforms a keyboard repeat event into the actual character typed.
Definition: graphics_app.h:233
+
virtual void OnMouseMove(const Point2 &pos, const Vector2 &delta)
If the mouse has moved in the past frame and no mouse buttons are currently pressed,...
Definition: graphics_app.h:165
+
virtual void OnMiddleMouseUp(const Point2 &pos)
If the mouse button was released since the last frame, then this function will be called to notify yo...
Definition: graphics_app.h:206
+
virtual Vector2 NormalizedDeviceCoordsToPixels(const Vector2 &pointInNDC)
Transforms a vector in normalized device coordinates (top left = (-1,1) bottom right (1,...
+
virtual float ReadZValueAtPixel(const Point2 &pointInPixels, unsigned int whichBuffer=GL_BACK)
Returns the z buffer value under the specified pixel. z will be 0 at the near plane and +1 at the far...
+
virtual bool IsRightMouseDown()
True if the right mouse button is currently held down.
+
virtual Vector2 PixelsToNormalizedDeviceCoords(const Vector2 &vectorInPixels)
Transforms a vector in viewport coordinates (pixels where top left = (0,0) and bottom right = (window...
+
virtual void OnLeftMouseUp(const Point2 &pos)
If the mouse button was released since the last frame, then this function will be called to notify yo...
Definition: graphics_app.h:196
+
virtual void OnLeftMouseDrag(const Point2 &pos, const Vector2 &delta)
If the mouse button is held down and the mouse has moved in the past frame then this function will be...
Definition: graphics_app.h:187
+
virtual void OnMiddleMouseDown(const Point2 &pos)
If the mouse button was pressed down since the last frame, then this function will be called to notif...
Definition: graphics_app.h:200
+
virtual void DrawUsingOpenGL()
Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.
Definition: graphics_app.h:317
+
virtual bool IsLeftMouseDown()
True if the left mouse button is currently held down.
+
virtual void Run()
After creating a new GraphicsApp, call this to start the app's mainloop.
+
virtual bool IsKeyDown(int key)
True if the specified is is currently held down. Uses the GLFW key codes found here: http://www....
+
virtual Point2 NormalizedDeviceCoordsToPixels(const Point2 &pointInNDC)
Transforms a point in normalized device coordinates (top left = (-1,1) bottom right (1,...
+
virtual void DrawUsingNanoVG(NVGcontext *ctx)
Override this to draw graphics using the nanovg vector graphics library, which provides an easy way t...
Definition: graphics_app.h:311
+
virtual void OnSpecialKeyRepeat(int key, int scancode, int modifiers)
The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...
Definition: graphics_app.h:251
+
virtual void OnKeyUp(const char *c, int modifiers)
Transforms a keyboard up event into the actual character typed.
Definition: graphics_app.h:241
+
virtual void OnRightMouseDown(const Point2 &pos)
If the mouse button was pressed down since the last frame, then this function will be called to notif...
Definition: graphics_app.h:210
+
virtual bool IsMiddleMouseDown()
True if the middle mouse button is currently held down.
+
virtual Point2 PixelsToNormalizedDeviceCoords(const Point2 &pointInPixels)
Transforms a point in viewport coordinates (pixels where top left = (0,0) and bottom right = (window_...
+
virtual void InitOpenGL()
Override this to initialize the OpenGL context with textures, vertex buffers, etc.
Definition: graphics_app.h:297
+
virtual void UpdateSimulation(double dt)
Called once per frame.
Definition: graphics_app.h:306
+
virtual ~GraphicsApp()
The destructor will shutdown the graphics system and window.
+
virtual void OnSpecialKeyDown(int key, int scancode, int modifiers)
The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...
Definition: graphics_app.h:247
+
virtual GLFWwindow * window()
Access to the underlying GLFWwindow object.
+
GraphicsApp(int width, int height, const std::string &caption)
Constructs a new app but does not yet run it.
+
virtual float aspect_ratio()
Returns width/height for the current shape of the window.
+
virtual void OnMiddleMouseDrag(const Point2 &pos, const Vector2 &delta)
If the mouse button is held down and the mouse has moved in the past frame then this function will be...
Definition: graphics_app.h:203
+
virtual int framebuffer_width()
Returns the current width of the framebuffer in pixels.
+
virtual int window_height()
Returns the current height of the client area of the window in pixels.
+
virtual void OnRightMouseUp(const Point2 &pos)
If the mouse button was released since the last frame, then this function will be called to notify yo...
Definition: graphics_app.h:216
+
virtual void OnWindowResize(int new_width, int new_height)
Override this to respond when the graphics window and/or framebuffer are resized, either by the user ...
Definition: graphics_app.h:261
+
virtual nanogui::Screen * screen()
Access to the underlying NanoGUI Screen object.
+
virtual void InitNanoGUI()
Called at the beginning of the Run() method.
Definition: graphics_app.h:284
+
virtual void OnLeftMouseDown(const Point2 &pos)
If the mouse button was pressed down since the last frame, then this function will be called to notif...
Definition: graphics_app.h:174
+
virtual int framebuffer_height()
Returns the current height of the framebuffer in pixels.
+
A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...
Definition: point2.h:28
+
A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...
Definition: vector2.h:28
+
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+ + +
+ + + + + diff --git a/dev/MinGfx/docs/html/index.html b/dev/MinGfx/docs/html/index.html new file mode 100644 index 0000000..f2bd267 --- /dev/null +++ b/dev/MinGfx/docs/html/index.html @@ -0,0 +1,120 @@ + + + + + + + +MinGfx Toolkit: MinGfx Toolkit Documentation + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MinGfx Toolkit Documentation
+
+
+

+

+Getting Started

+
    +
  1. libMinGfx Installation Guide
  2. +
  3. Create Your Own Graphics Program by Copying an Example
  4. +
  5. Bookmark the API - The MinGfx Programming Reference Organized by Topic
  6. +
+

+Programming Guide

+ +

+Overview

+

The MinGfx Toolkit is a minimal library for writing cross-platform (Windows, OSX, linux) graphics programs with modern OpenGL 3.3+ support. Application programmers should subclass from MinGfx::GraphicsApp, which provides callbacks for several styles of rendering and user interfaces. On-screen graphical user interfaces can be created with built-in support for NanoGUI. 2D vector graphics rendering is supported by linking with NanoVG. 3D graphics rendering is supported via MinGfx::Mesh, MinGfx::Shader, MinGfx::Texture2D, and related classes. Additionally, application programmers can do whatever custom 2D or 3D rendering is needed with direct calls to OpenGL.

+

The library is maintained by Prof. Daniel Keefe (dfk@u.nosp@m.mn.e.nosp@m.du) and is used for instructional purposes in UMN computer science courses (CSci-4611, CSci-3081W, ...) as well as some research projects. See LICENSE.txt for additional details.

+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/installation.html b/dev/MinGfx/docs/html/installation.html new file mode 100644 index 0000000..f7660d5 --- /dev/null +++ b/dev/MinGfx/docs/html/installation.html @@ -0,0 +1,206 @@ + + + + + + + +MinGfx Toolkit: Installation Guide + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Installation Guide
+
+
+

+

+Prereqs

+

MinGfx is built using the cross-platform CMake tool. Before building MinGfx, you will need to install CMake version 3.9 or higher (https://cmake.org/). On Mac, you will need to have Xcode installed as well as the optional Xcode command line tools.

+

If you haven't already, you'll want to clone the MinGfx source code using git, so make sure you have git installed as well.

+

+Background for CMake Beginners

+

If you are new to CMake, this is the minimum background you should have before building MinGfx.

+

CMake is a cross-platform tool for generating native Unix Makefiles and project workspaces (e.g., Xcode projects, Visual Studio solutions) for building projects. Projects use CMakeLists.txt files to describe how they should be built. These files provide input for the cmake application, which uses them to generate project files for a variety of development environments. CMake can generate Makefiles for building MinGfx on linux systems or project files for building MinGfx with popular IDEs (e.g., XCode, Visual Studio, Eclipse, CodeBLocks).
+

+

There are three versions of the cmake application that are provided with the install from Kitware. You can use any of these with MinGfx:

    +
  1. cmake is the command line version where all build options must be specified on the command line.
  2. +
  3. ccmake is a visual interface that runs in a terminal. This is nice because all of the available build options are listed for you to see at once, and you can simply press the SPACEBAR to turn them on/off or type in specific values. The downside for ccmake is that it does not have a separate log window, so status messages flash by so fast that you cannot read them, and input from spin-off cmake processes (like those used in the MinGfx configure step) are not captured correctly. It's possible to still use ccmake with MinGfx, but we do not recommend it.
  4. +
  5. cmake-gui is an OS-specific windowed version. Like ccmake, the GUI provides a useful list all of the available build options. Unlike ccmake, it also includes a nice scrollable log of all of the status messages. So, this is the preferred version for new users and for the first time you build a project.
  6. +
+

With CMake, it's best to do an out-of-source build. That means that when you start CMake you must tell it two paths: 1. the path to the MinGfx source tree, AND 2. the path to the place where you would like all the built files to be created. When running cmake-gui, these can be set interactively with a file selection dialog, but all three versions respond to command line options, and this is generally the easiest way to start up cmake. So, we suggest starting cmake-gui from the command line. First cd to the directory you wish to use for the built files, then pass a single required command line argument for the path to the MinGfx source tree. Usually, you will see this written as a series of 3 steps – the common idiom for cmake builds:

// from within the root of the project's source directory
+
mkdir build
+
cd build
+
cmake-gui ..
+

If you are using cmake you can pass a variety of other options to CMake on the command line with flags such as -D AUTOBUILD_NANOGUI=ON, to tell MinGfx to autobuild the nanogui library that it depends upon. With cmake, you can end up with a long string of arguments in order to setup the build you want. With cmake-gui, you set all of these build options within the user interface instead, and this is how we will proceed in the instructions that follow.

+

+Setup a New Graphics Build Tree

+

Here's a complete annotated list of steps to setup a new build tree for creating graphics programs. In truth, you don't need to create this entire build tree strucutre just to work with MinGfx, but this is good practice, and a good guide for students.

+

+1. Create a Linux-Style Directory Tree

+

Libraries will get installed to a lib/ directory. Include files will go in include/, executables in bin/, and we'll put the source we are developing inside dev/.

+
mkdir -p /Users/keefe/courses/csci4611/sw
+
cd /Users/courses/csci4611/sw
+
mkdir lib
+
mkdir include
+
mkdir bin
+
mkdir dev
+

IMPORTANT: On Windows, you will need to add the bin directory you just created to your PATH environment variable. If you have not done this before, you will find many instructions online. Here is one good description of how to add a directory to the PATH environment variable on Windows.

+

+2. Download the MinGfx Project

+

To download use:

cd dev
+
git clone http://github.com/ivlab/MinGfx
+

+3. Create an Initial CMake Build Configuration

+
cd MinGfx
+
mkdir build
+
cd build
+
cmake-gui ..
+

Press the 'Configure' button. Then, select the Generator you would like to use from the list provided (e.g., Xcode, Visual Studio, Unix Makefiles). Click Done.

+

Wait for CMake to do an initial configuration. This will populate an initial list of CMake and MinGfx build options. Each time you run configure, cmake-gui will display any new configuration options highlighted in red. So, do not be alarmed when the whole options window turns red during this first configure operation – that is normal behavior since at this point, all of the options are new.

+

Do you see an error in the CMake output window? If so, don't worry about this yet, we'll come back to it in a minute.

+

+4. Set the CMAKE_INSTALL_PREFIX Variable to the Root of Your Directory Tree

+

Now, using cmake-gui, scroll through the table of variables until you find the one named CMAKE_INSTALL_PREFIX. Click on it and edit its value to point to the root of the directory tree you created in Step 1. The root for the example tree used in Step 1 would be /Users/keefe/courses/csci4611/sw. In other words, the root is the last directory before you get to lib, include, bin, and dev.

+

Once you make this change, you can press the Configure button again. It doesn't hurt to press Configure multiple times. You need to do it at least once after every change you make. Notice how the variables highlighted in red go away when you do this because they are no longer new options – cmake knows that you have already had a chance to see them once.

+

+5. If Needed, Set AUTOBUILD_NANOGUI to ON and Build Dependencies

+

Now, take a look at the output window at the bottom of cmake-gui. If you see the following error there, then we'll address that next. If not, then nanogui must already be installed on your system, and you can skip to step 6.

Searching for NanoGUI library...
+
Could NOT find NANOGUI (missing: NANOGUI_LIBRARIES)
+
CMake Error at cmake/UseNanoGUI.cmake:96 (message):
+
The NanoGUI library was not found on the system. You can: (1) install
+
NanoGUI yourself, (2) point cmake to an already-installed version of
+
NanoGUI by adding the installation prefix of NanoGUI to the
+
CMAKE_PREFIX_PATH environment variable, or (3) set AUTOBUILD_NANOGUI to ON
+
and run cmake configure again. AUTOBUILD_NANOGUI will: 1. download
+
NanoGUI, 2. build NanoGUI, and 3. install NanoGUI to the
+
CMAKE_INSTALL_PREFIX (currently set to
+
/Users/keefe/courses/tmp/MinGfx/build/install). If you want to use the
+
AUTOBUILD feature, adjust CMAKE_INSTALL_PREFIX as desired now, set
+
AUTOBUILD_NANOGUI to ON, and then run cmake configure again.
+
Call Stack (most recent call first):
+
src/CMakeLists.txt:80 (UseNanoGUI)
+
CMakeLists.txt:186 (include)
+

This error tells us that cmake could not find the nanogui library pre-installed on our system. Luckily, MinGfx includes support for downloading, building, and installing nanogui for you using the AUTOBUILD_NANOGUI feature.

+

Scroll through the list of CMake variables again until you find AUTOBUILD_NANOGUI and click on the checkbox next to it to turn it on. Now, click Configure again. This time the configure step will take a while, perhaps 5 minutes, to run because it will be downloading, building, and installing nanogui and all of its dependencies.
+

+

This step should finish without an error. If you do see an error and you are working with this as part of a UMN course, you may need to stop now and ask for help from a TA or on the class forum – perhaps there is something we haven't planned for in the particular setup of your computer.

+

+6. Generate the Build System / Project Files

+

Finally, you are ready to press the Generate button. This is the step that will actually generate the Unix Makefiles, Visual Studio Solution File, or Xcode Project File needed to build MinGfx.
+

+

+7. Build MinGfx with the Specified Options

+

Click Open Project if you generated project files for an IDE, or if you generated Unix Makefiles return to your shell and the build directory. Now, build the project as you normally would in these enviornments.
+

+

For Xcode: click the Triangle button to build the ALL_BUILD target

+

For Visual Studio: In the Solution Explorer Window right click on ALL_BUILD and select Build

+

For Unix Makefiles: run make all.

+

+8. Install the Library to your Directory Tree

+

For Xcode: click on ALL_BUILD to reveal a dropdown list and select install then click the Triangle button

+

For Visual Studio: In the Solution Explorer Window right click on INSTALL and select Build.

+

For Unix Makefiles: run make install.

+

To see if it worked take a look in the lib, include, and bin directories within the root of the tree you setup in Step 1. You should see the test programs inside bin/ and folders for MinVR-1.0 inside lib/ and include/.

+

+9. Run a Test Program

+

For Xcode: click on ALL_BUILD to reveal a dropdown list and select mingfx-test-gui-plus-opengl then click the Triangle button

+

For Visual Studio: In the Solution Explorer Window right click on mingfx-test-gui-plus-opengl then selece Set as StartUp Project. Now, click the green triangle button to run the program. IMPORTANT NOTE: When the program runs it will need to find some .dlls that were installed to your bin directory in Step 8. So, the bin directory must be in your windows PATH. If you skipped this part of Step 1, go back and add bin to your PATH environment variable now. Then, you may need to restart Visual Studio for it to recognize the new setting.

+

For Unix Makefiles: from within the build directory run: tests/mingfx-gui-plus-opengl

+

+Create Your Own Graphics Program

+

Prereq: Before getting started, make sure you have installed MinGfx, going all the way through the 9th step above.

+

The project in the MinGfx/example folder is an example of a stand-alone project that uses a separate cmake build system. This means we can copy it and move it out of the MinGfx source tree to serve as a starting point for your own project. Let's do that now.

+
cd /Users/courses/csci4611/sw/dev (or wherever you put your dev directory)
+
cp -r MinGfx/example/ mingfx-example
+

Now, before we build the example, we need to make sure it knows where to find MinGfx.
+

cd mingfx-example
+
open up the CMakeLists.txt file in your favorite text editor
+

Near the top of the file, find the following lines

# !!!!!!!!!!!!! EDIT THE FOLLOWING LINE AS NEEDED !!!!!!!!!!!!!
+
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../build/install ../../..)
+

and add a path to the end of the list to point to the ROOT of your directory tree, for example:

# !!!!!!!!!!!!! EDIT THE FOLLOWING LINE AS NEEDED !!!!!!!!!!!!!
+
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../build/install ../../.. /Users/keefe/courses/cs4611/sw)
+

Now, we're ready to build this example using the same cmake idiom as before:

mkdir build
+
cd build
+
cmake-gui ..
+

Then, click Configure. If you want to install this example program, you may now edit the CMAKE_INSTALL_PREFIX as before and rerun Configure. It should not be necessary to change any of the other cmake variables for this example program.

+

Next, click Generate to produce project files for your IDE or makefiles.
+

+

Next, build the example program within your IDE or by running make.

+

Finally, you can run your first example graphics program with the command:

./mingfx-example
+

You can change the name of the executable, add more header and source files to the project and make other changes to the build process by editing the CMakeLists.txt file, but remember that after each change, you must run CMake's Configure and Generate steps again.
+

+

To reiterate the point above, if you are using an IDE, it is important to remember to add new files to your project by editing the CMakeLists.txt file NOT by using File->Add To Project.. or whatever option is provided inside your IDE. Since we using CMake to generate the IDE's project files, and we may want to switch to a different IDE or to Makefiles in the future, the CMakeLists.txt file needs to be treated as the master record of all of the build settings.

+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/installation_8md.html b/dev/MinGfx/docs/html/installation_8md.html new file mode 100644 index 0000000..577aea3 --- /dev/null +++ b/dev/MinGfx/docs/html/installation_8md.html @@ -0,0 +1,87 @@ + + + + + + + +MinGfx Toolkit: doc/installation.md File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
doc/installation.md File Reference
+
+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/jquery.js b/dev/MinGfx/docs/html/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/dev/MinGfx/docs/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/dev/MinGfx/docs/html/mainpage_8md.html b/dev/MinGfx/docs/html/mainpage_8md.html new file mode 100644 index 0000000..15b0292 --- /dev/null +++ b/dev/MinGfx/docs/html/mainpage_8md.html @@ -0,0 +1,87 @@ + + + + + + + +MinGfx Toolkit: doc/mainpage.md File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
doc/mainpage.md File Reference
+
+
+
+ + + + + diff --git a/dev/MinGfx/docs/html/matrix4_8h.html b/dev/MinGfx/docs/html/matrix4_8h.html new file mode 100644 index 0000000..9c4a1b9 --- /dev/null +++ b/dev/MinGfx/docs/html/matrix4_8h.html @@ -0,0 +1,139 @@ + + + + + + + +MinGfx Toolkit: src/matrix4.h File Reference + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix4.h File Reference
+
+
+
#include <iostream>
+#include "point3.h"
+#include "vector3.h"
+#include "ray.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  mingfx::Matrix4
 A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be compatible with OpenGL. More...
 
+ + + + +

+Namespaces

 mingfx
 Namespace for the MinGfx Toolkit.
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Functions

Matrix4 mingfx::operator* (const Matrix4 &m, const float &s)
 Multiply matrix and scalar, returns the new matrix. More...
 
Matrix4 mingfx::operator* (const float &s, const Matrix4 &m)
 Multiply matrix and scalar, returns the new matrix. More...
 
Point3 mingfx::operator* (const Matrix4 &m, const Point3 &p)
 Multiply matrix and point, returns the new point. More...
 
Vector3 mingfx::operator* (const Matrix4 &m, const Vector3 &v)
 Multiply matrix and vector, returns the new vector. More...
 
Matrix4 mingfx::operator* (const Matrix4 &m1, const Matrix4 &m2)
 Multiply two matrices, returns the result. More...
 
Ray mingfx::operator* (const Matrix4 &m, const Ray &r)
 Multiply matrix and the point and vector portions of the ray, returns the new ray. More...
 
std::ostream & mingfx::operator<< (std::ostream &os, const Matrix4 &m)
 
std::istream & mingfx::operator>> (std::istream &is, Matrix4 &m)
 
+
+ + + + + diff --git a/dev/MinGfx/docs/html/matrix4_8h_source.html b/dev/MinGfx/docs/html/matrix4_8h_source.html new file mode 100644 index 0000000..2976e51 --- /dev/null +++ b/dev/MinGfx/docs/html/matrix4_8h_source.html @@ -0,0 +1,286 @@ + + + + + + + +MinGfx Toolkit: src/matrix4.h Source File + + + + + + + + + + + + +
+
+ + + + + + +
+
MinGfx Toolkit +  1.0 +
+
A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix4.h
+
+
+Go to the documentation of this file.
1 /*
+
2  This file is part of the MinGfx Project.
+
3 
+
4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
+
5  All Rights Reserved.
+
6 
+
7  Original Author(s) of this File:
+
8  Dan Keefe, 2017, University of Minnesota
+
9 
+
10  Author(s) of Significant Updates/Modifications to the File:
+
11  ...
+
12  */
+
13 
+
14 #ifndef SRC_MATRIX4_H_
+
15 #define SRC_MATRIX4_H_
+
16 
+
17 #include <iostream>
+
18 
+
19 #include "point3.h"
+
20 #include "vector3.h"
+
21 #include "ray.h"
+
22 
+
23 
+
24 namespace mingfx {
+
25 
+
26 
+
50 class Matrix4 {
+
51 public:
+
52 
+ +
55 
+
58  Matrix4(const float* a);
+
59 
+
62  Matrix4(const std::vector<float> &a);
+
63 
+
65  Matrix4(const Matrix4& m2);
+
66 
+
68  virtual ~Matrix4();
+
69 
+
71  bool operator==(const Matrix4& m2) const;
+
72 
+
74  bool operator!=(const Matrix4& m2) const;
+
75 
+
77  Matrix4& operator=(const Matrix4& m2);
+
78 
+
79 
+
82  const float * value_ptr() const;
+
83 
+
86  float operator[](const int i) const;
+
87 
+
90  float& operator[](const int i);
+
91 
+
94  float operator()(const int row, const int col) const;
+
95 
+
98  float& operator()(const int row, const int col);
+
99 
+
100 
+
105  Vector3 ColumnToVector3(int c) const;
+
106 
+
109  Point3 ColumnToPoint3(int c) const;
+
110 
+
111  std::vector<float> ToVector() const;
+
112 
+
113 
+
114  // --- Static Constructors for Special Matrices ---
+
115 
+ +
123  const float r1c1, const float r1c2, const float r1c3, const float r1c4,
+
124  const float r2c1, const float r2c2, const float r2c3, const float r2c4,
+
125  const float r3c1, const float r3c2, const float r3c3, const float r3c4,
+
126  const float r4c1, const float r4c2, const float r4c3, const float r4c4
+
127  );
+
128 
+
129  // --- Model Transformations ---
+
130 
+
132  static Matrix4 Scale(const Vector3 &v);
+
133 
+
135  static Matrix4 Translation(const Vector3 &v);
+
136 
+
138  static Matrix4 RotationX(const float radians);
+
139 
+
141  static Matrix4 RotationY(const float radians);
+
142 
+
144  static Matrix4 RotationZ(const float radians);
+
145 
+
147  static Matrix4 Rotation(const Point3 &p, const Vector3 &v, const float a);
+
148 
+
173  static Matrix4 Align(const Point3 &a_p, const Vector3 &a_v1, const Vector3 &a_v2,
+
174  const Point3 &b_p, const Vector3 &b_v1, const Vector3 &b_v2);
+
175 
+
176 
+
177  // --- View Matrices ---
+
178 
+
183  static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up);
+
184 
+
185  // --- Projection Matrices ---
+
186 
+
189  static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist);
+
190 
+
192  static Matrix4 Frustum(float left, float right, float bottom, float top, float near_plane_dist, float far_plane_dist);
+
193 
+
194  // --- Inverse, Transposeand Other General Matrix Functions ---
+
195 
+
198  Matrix4 Inverse() const;
+
199 
+ +
205 
+ +
208 
+
211  float SubDeterminant(int exclude_row, int exclude_col) const;
+
212 
+
214  Matrix4 Cofactor() const;
+
215 
+
217  float Determinant() const;
+
218 
+
219 
+
220 
+
221 private:
+
222  float m[16];
+
223 };
+
224 
+
225 
+
226 
+
227 // ---------- Operator Overloads for Working with Points, Vectors, & Matrices ----------
+
228 
+
229 
+
230 // --- Matrix multiplication for Points, Vectors, & Matrices ---
+
231 
+
233 Matrix4 operator*(const Matrix4& m, const float& s);
+
234 
+
236 Matrix4 operator*(const float& s, const Matrix4& m);
+
237 
+
239 Point3 operator*(const Matrix4& m, const Point3& p);
+
240 
+
242 Vector3 operator*(const Matrix4& m, const Vector3& v);
+
243 
+
245 Matrix4 operator*(const Matrix4& m1, const Matrix4& m2);
+
246 
+
247 
+
248 
+
250 Ray operator*(const Matrix4& m, const Ray& r);
+
251 
+
252 // --- Stream operators ---
+
253 
+
254 std::ostream & operator<< ( std::ostream &os, const Matrix4 &m);
+
255 std::istream & operator>> ( std::istream &is, Matrix4 &m);
+
256 
+
257 
+
258 } // end namespace
+
259 
+
260 #endif
+
A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...
Definition: matrix4.h:50
+
float Determinant() const
Returns the determinant of the 4x4 matrix.
+
static Matrix4 Scale(const Vector3 &v)
Returns the scale matrix described by the vector.
+
Matrix4(const float *a)
Constructs a matrix given from an array of 16 floats in OpenGL matrix format (i.e....
+
Matrix4(const std::vector< float > &a)
Constructs a matrix given from a vector of 16 floats in OpenGL matrix format (i.e....
+
Matrix4 Cofactor() const
Returns the cofactor matrix.
+
static Matrix4 Perspective(float fov_y_in_degrees, float aspect_ratio, float near_plane_dist, float far_plane_dist)
Returns a perspective projection matrix equivalent to the one gluPerspective creates.
+
const float * value_ptr() const
Returns a pointer to the raw data array used to store the matrix. This is a 1D array of 16-elements s...
+
float SubDeterminant(int exclude_row, int exclude_col) const
Returns the determinant of the 3x3 matrix formed by excluding the specified row and column from the 4...
+
static Matrix4 LookAt(Point3 eye, Point3 target, Vector3 up)
Returns a view matrix that centers the camera at the 'eye' position and orients it to look at the des...
+
float & operator()(const int row, const int col)
Access an individual element of the array using the syntax: Matrix4 mat; mat(1,2) = 1....
+
static Matrix4 RotationX(const float radians)
Returns the rotation matrix about the x axis by the specified angle.
+
Matrix4(const Matrix4 &m2)
Copy constructor.
+
static Matrix4 RotationZ(const float radians)
Returns the rotation matrix about the z axis by the specified angle.
+
std::vector< float > ToVector() const
+
Matrix4()
The default constructor creates an identity matrix:
+
Vector3 ColumnToVector3(int c) const
Returns the c-th column of the matrix as a Vector type, e.g.,: Vector3 xAxis = mat....
+
virtual ~Matrix4()
Destructor.
+
static Matrix4 Frustum(float left, float right, float bottom, float top, float near_plane_dist, float far_plane_dist)
Returns a projection matrix equivalent the one glFrustum creates.
+
Matrix4 Orthonormal() const
Returns an orthonormal version of the matrix, i.e., guarantees that the rotational component of the m...
+
Matrix4 & operator=(const Matrix4 &m2)
Matrix assignment operator.
+
bool operator==(const Matrix4 &m2) const
Check for "equality", taking floating point imprecision into account.
+
float operator()(const int row, const int col) const
Access an individual element of the array using the syntax: Matrix4 mat; float row1col2 = mat(1,...
+
bool operator!=(const Matrix4 &m2) const
Check for "inequality", taking floating point imprecision into account.
+
Matrix4 Inverse() const
Returns the inverse of the 4x4 matrix if it is nonsingular. If it is singular, then returns the ident...
+
float operator[](const int i) const
Accesses the ith element of the raw data array used to store the matrix. This is a 1D array of 16-ele...
+
static Matrix4 Rotation(const Point3 &p, const Vector3 &v, const float a)
Returns the rotation matrix around the vector v placed at point p, rotate by angle a.
+
static Matrix4 FromRowMajorElements(const float r1c1, const float r1c2, const float r1c3, const float r1c4, const float r2c1, const float r2c2, const float r2c3, const float r2c4, const float r3c1, const float r3c2, const float r3c3, const float r3c4, const float r4c1, const float r4c2, const float r4c3, const float r4c4)
Returns a matrix constructed from individual elements passed in row major order so that the matrix lo...
+
static Matrix4 Align(const Point3 &a_p, const Vector3 &a_v1, const Vector3 &a_v2, const Point3 &b_p, const Vector3 &b_v1, const Vector3 &b_v2)
Creates a transformation matrix that maps a coordinate space, a, defined one point,...
+
static Matrix4 Translation(const Vector3 &v)
Returns the translation matrix described by the vector.
+
Point3 ColumnToPoint3(int c) const
Returns the c-th column of the matrix as a Vector type, e.g.,: Point3 pos = mat.getColumnAsPoint3(3);...
+
static Matrix4 RotationY(const float radians)
Returns the rotation matrix about the y axis by the specified angle.
+
float & operator[](const int i)
Accesses the ith element of the raw data array used to store the matrix. This is a 1D array of 16-ele...
+
Matrix4 Transpose() const
Returns the transpose of the matrix.
+
A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
Definition: point3.h:52
+
Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...
Definition: ray.h:54
+
A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
Definition: vector3.h:62
+
Namespace for the MinGfx Toolkit.
Definition: aabb.h:21
+
std::ostream & operator<<(std::ostream &os, const Color &c)
+
std::istream & operator>>(std::istream &is, Color &c)
+
Matrix4 operator*(const Matrix4 &m, const float &s)
Multiply matrix and scalar, returns the new matrix.
+ + + +
+ + + + + diff --git a/dev/MinGfx/docs/html/menu.js b/dev/MinGfx/docs/html/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/dev/MinGfx/docs/html/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @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/dev/MinGfx/docs/html/menudata.js b/dev/MinGfx/docs/html/menudata.js new file mode 100644 index 0000000..295196a --- /dev/null +++ b/dev/MinGfx/docs/html/menudata.js @@ -0,0 +1,110 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @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 Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"y",url:"functions_y.html#index_y"}, +{text:"z",url:"functions_z.html#index_z"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"q",url:"functions_func_q.html#index_q"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"x",url:"functions_func_x.html#index_x"}, +{text:"y",url:"functions_func_y.html#index_y"}, +{text:"z",url:"functions_func_z.html#index_z"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"v",url:"functions_vars.html#index_v"}, +{text:"w",url:"functions_vars.html#index_w"}, +{text:"x",url:"functions_vars.html#index_x"}, +{text:"y",url:"functions_vars.html#index_y"}]}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Related Functions",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions",url:"globals_func.html"}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerator",url:"globals_eval.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/dev/MinGfx/docs/html/mesh_8h.html b/dev/MinGfx/docs/html/mesh_8h.html new file mode 100644 index 0000000..25e621a --- /dev/null +++ b/dev/MinGfx/docs/html/mesh_8h.html @@ -0,0 +1,116 @@ + + + + + + + +MinGfx Toolkit: src/mesh.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    mesh.h File Reference
    +
    +
    +
    #include "bvh.h"
    +#include "color.h"
    +#include "opengl_headers.h"
    +#include "point2.h"
    +#include "point3.h"
    +#include "vector3.h"
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Mesh
     A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/mesh_8h_source.html b/dev/MinGfx/docs/html/mesh_8h_source.html new file mode 100644 index 0000000..fee9a22 --- /dev/null +++ b/dev/MinGfx/docs/html/mesh_8h_source.html @@ -0,0 +1,293 @@ + + + + + + + +MinGfx Toolkit: src/mesh.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    mesh.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_MESH_H_
    +
    15 #define SRC_MESH_H_
    +
    16 
    +
    17 
    +
    18 
    +
    19 #include "bvh.h"
    +
    20 #include "color.h"
    +
    21 #include "opengl_headers.h"
    +
    22 #include "point2.h"
    +
    23 #include "point3.h"
    +
    24 #include "vector3.h"
    +
    25 
    +
    26 #include <vector>
    +
    27 
    +
    28 
    +
    29 namespace mingfx {
    +
    30 
    +
    31 class Matrix4;
    +
    32 
    +
    127 class Mesh {
    +
    128 public:
    +
    130  Mesh();
    +
    131 
    +
    133  Mesh(const Mesh &other);
    +
    134 
    +
    135  virtual ~Mesh();
    +
    136 
    +
    137 
    +
    142  void LoadFromOBJ(const std::string &filename);
    +
    143 
    +
    144 
    +
    145 
    +
    146  // ---- TRIANGLE LIST MODE ----
    +
    147  // No indices are stored, each set of 3 vertices forms a triangle, and if the
    +
    148  // triangles share vertices, those vertices need to be repeated.
    +
    149 
    +
    155  int AddTriangle(Point3 v1, Point3 v2, Point3 v3);
    +
    156 
    +
    159  void UpdateTriangle(int triangle_id, Point3 v1, Point3 v2, Point3 v3);
    +
    160 
    +
    163  void SetNormals(int triangle_id, Vector3 n1, Vector3 n2, Vector3 n3);
    +
    164 
    +
    167  void SetColors(int triangle_id, Color c1, Color c2, Color c3);
    +
    168 
    +
    172  void SetTexCoords(int triangle_id, int texture_unit, Point2 uv1, Point2 uv2, Point2 uv3);
    +
    173 
    +
    174 
    +
    175 
    +
    176  // ---- INDEXED TRIANGLES MODE ----
    +
    177  // Vertices are stored in an array and indices are stored in a separate array
    +
    178  // each set of 3 indices into the vertex array defines one triangle. Here,
    +
    179  // you cannot add one triangle at a time to the mesh. Instead you must set
    +
    180  // the arrays of indices, vertices, and other attributes for the mesh at
    +
    181  // once.
    +
    182 
    +
    184  void SetVertices(const std::vector<Point3> &verts);
    +
    185 
    +
    187  void SetNormals(const std::vector<Vector3> &norms);
    +
    188 
    +
    190  void SetColors(const std::vector<Color> &colors);
    +
    191 
    +
    193  void SetTexCoords(int texture_unit, const std::vector<Point2> &tex_coords);
    +
    194 
    +
    198  void SetIndices(const std::vector<unsigned int> index_array);
    +
    199 
    +
    200 
    +
    201  void SetInstanceTransforms(const std::vector<Matrix4> &xforms);
    +
    202 
    +
    203 
    +
    204  // ---- These functions can be used instead of the above if you are working with
    +
    205  // regular C-style arrays and floats rather than the higher level types like
    +
    206  // Point3 and Vector3. ----
    +
    207 
    +
    211  void SetVertices(float *verts_array, int num_verts);
    +
    212 
    +
    217  void SetNormals(float *norms_array, int num_norms);
    +
    218 
    +
    223  void SetColors(float *colors_array, int num_colors);
    +
    224 
    +
    229  void SetTexCoords(int texture_unit, float *tex_coords_array, int num_tex_coords);
    +
    230 
    +
    235  void SetIndices(unsigned int *index_array, int num_indices);
    +
    236 
    +
    237 
    +
    238 
    + +
    247 
    +
    252  void Draw();
    +
    253 
    +
    254 
    +
    255 
    + +
    263 
    + +
    271 
    +
    272 
    +
    276  void BuildBVH();
    +
    277 
    + +
    283 
    +
    284  // Access to properties indexed by vertex number
    +
    285 
    +
    287  int num_vertices() const;
    +
    288 
    +
    291  Point3 read_vertex_data(int vertex_id) const;
    +
    292 
    +
    295  Vector3 read_normal_data(int vertex_id) const;
    +
    296 
    +
    299  Color read_color_data(int vertex_id) const;
    +
    300 
    +
    303  Point2 read_tex_coords_data(int texture_unit, int vertex_id) const;
    +
    304 
    +
    305 
    +
    306  // Access to triangles
    +
    307 
    +
    309  int num_triangles() const;
    +
    310 
    +
    312  // of unsigned ints. Use the SetIndices() function to set (or edit) the indices for the mesh.
    +
    313  std::vector<unsigned int> read_triangle_indices_data(int triangle_id) const;
    +
    314 
    +
    315 
    +
    316 private:
    +
    317  std::vector<float> verts_;
    +
    318  std::vector<float> norms_;
    +
    319  std::vector<float> colors_;
    +
    320  std::vector< std::vector<float> > tex_coords_;
    +
    321  std::vector<unsigned int> indices_;
    +
    322  std::vector<float> instance_xforms_;
    +
    323 
    +
    324  bool gpu_dirty_;
    +
    325  GLuint vertex_buffer_;
    +
    326  GLuint vertex_array_;
    +
    327  GLuint element_buffer_;
    +
    328 
    +
    329  bool bvh_dirty_;
    +
    330  BVH bvh_;
    +
    331 };
    +
    332 
    +
    333 
    +
    334 } // end namespace
    +
    335 
    +
    336 
    +
    337 #endif
    + +
    A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersecti...
    Definition: bvh.h:40
    +
    Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...
    Definition: color.h:41
    +
    A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.
    Definition: mesh.h:127
    +
    void SetVertices(float *verts_array, int num_verts)
    Sets the vertex array for the mesh directly. Vertices are stored as (x,y,z), (x,y,...
    +
    void SetColors(int triangle_id, Color c1, Color c2, Color c3)
    Sets per-vertex colors for the three vertices of a triangle that has already been added to the mesh.
    +
    std::vector< unsigned int > read_triangle_indices_data(int triangle_id) const
    Read only access to the indices that make up a particular triangle. Data are returned as a 3-element ...
    +
    void SetTexCoords(int triangle_id, int texture_unit, Point2 uv1, Point2 uv2, Point2 uv3)
    Sets the texture coordinates for the three vertices of a triangle that has already been added to the ...
    +
    void CalcPerFaceNormals()
    This (re)calculates the normals for the mesh and stores them with the mesh data structure.
    +
    void SetVertices(const std::vector< Point3 > &verts)
    Sets the vertex array for the mesh directly.
    +
    void SetIndices(const std::vector< unsigned int > index_array)
    Sets the indices into the vertex array to use to create the triangles. Each consecutive set of 3 indi...
    +
    int AddTriangle(Point3 v1, Point3 v2, Point3 v3)
    Adds a triangle to the mesh datastructure and returns a triangle ID.
    +
    void UpdateTriangle(int triangle_id, Point3 v1, Point3 v2, Point3 v3)
    Updates the vertex positions for a triangle that has already been added to the mesh.
    +
    Vector3 read_normal_data(int vertex_id) const
    Read only access to per-vertex normal data. Data are returned as a Vector3. Indexed by vertex number....
    +
    void SetNormals(int triangle_id, Vector3 n1, Vector3 n2, Vector3 n3)
    Sets the normals for the three vertices of a triangle that has already been added to the mesh.
    +
    Point2 read_tex_coords_data(int texture_unit, int vertex_id) const
    Read only access to per-vertex texture coordinates data. Data are returned as a Point2....
    +
    Mesh()
    Creates an empty mesh.
    +
    void SetNormals(float *norms_array, int num_norms)
    Sets the normal array for the mesh directly. Normals are stored as (x,y,z), (x,y,z),...
    +
    void SetInstanceTransforms(const std::vector< Matrix4 > &xforms)
    +
    void Draw()
    This sends the mesh vertices and attributes down the graphics pipe using glDrawArrays() for the non-i...
    +
    Mesh(const Mesh &other)
    Copies all data and sets GPU dirty bit for the new mesh.
    +
    void SetIndices(unsigned int *index_array, int num_indices)
    Sets the indices into the vertex array to use to create the triangles. Each consecutive set of 3 indi...
    +
    void LoadFromOBJ(const std::string &filename)
    This reads a mesh stored in the common Wavefront Obj file format.
    +
    void BuildBVH()
    This (re)calculates a Bounding Volume Hierarchy for the mesh, which can be used together with Ray::Fa...
    +
    BVH * bvh_ptr()
    Returns a pointer to the underlying BVH data structure.
    +
    int num_triangles() const
    The total number of triangles in the mesh.
    +
    int num_vertices() const
    The total number of vertices in the mesh.
    +
    void SetColors(const std::vector< Color > &colors)
    Sets the per-vertex colors array for the mesh directly.
    +
    void SetTexCoords(int texture_unit, const std::vector< Point2 > &tex_coords)
    Sets a texture coordinates array for the mesh directly.
    +
    Color read_color_data(int vertex_id) const
    Read only access to per-vertex color data. Data are returned as a Color. Indexed by vertex number....
    +
    void UpdateGPUMemory()
    This copies the entire mesh data structure to a vertex array in GPU memory, which must happen before ...
    +
    void SetTexCoords(int texture_unit, float *tex_coords_array, int num_tex_coords)
    Sets a texture coordinates array for the mesh directly. Tex coords are stored as (u,...
    +
    void CalcPerVertexNormals()
    This (re)calculates the normals for the mesh and stores them with the mesh data structure.
    +
    virtual ~Mesh()
    +
    void SetNormals(const std::vector< Vector3 > &norms)
    Sets the normal array for the mesh directly.
    +
    Point3 read_vertex_data(int vertex_id) const
    Read only access to the vertex position data. Data are returned as a Point3. Indexed by vertex number...
    +
    void SetColors(float *colors_array, int num_colors)
    Sets the per-vertex colors array for the mesh directly. Colors are stored as (r,g,...
    +
    A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...
    Definition: point2.h:28
    +
    A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
    Definition: point3.h:52
    +
    A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
    Definition: vector3.h:62
    + +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    + + + + +
    + + + + + diff --git a/dev/MinGfx/docs/html/mingfx_8h.html b/dev/MinGfx/docs/html/mingfx_8h.html new file mode 100644 index 0000000..828b1a0 --- /dev/null +++ b/dev/MinGfx/docs/html/mingfx_8h.html @@ -0,0 +1,120 @@ + + + + + + + +MinGfx Toolkit: src/mingfx.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    mingfx.h File Reference
    +
    +
    +

    Detailed Description

    +

    Includes the entire MinGfx library and calls using namespace mingfx.

    + +

    Definition in file mingfx.h.

    +
    #include "aabb.h"
    +#include "bvh.h"
    +#include "color.h"
    +#include "craft_cam.h"
    +#include "default_shader.h"
    +#include "gfxmath.h"
    +#include "graphics_app.h"
    +#include "matrix4.h"
    +#include "mesh.h"
    +#include "mingfx_config.h"
    +#include "opengl_headers.h"
    +#include "platform.h"
    +#include "point2.h"
    +#include "point3.h"
    +#include "quaternion.h"
    +#include "quick_shapes.h"
    +#include "ray.h"
    +#include "shader_program.h"
    +#include "text_shader.h"
    +#include "texture2d.h"
    +#include "unicam.h"
    +#include "vector2.h"
    +#include "vector3.h"
    +
    +

    Go to the source code of this file.

    +
    + + + + + diff --git a/dev/MinGfx/docs/html/mingfx_8h_source.html b/dev/MinGfx/docs/html/mingfx_8h_source.html new file mode 100644 index 0000000..747aa97 --- /dev/null +++ b/dev/MinGfx/docs/html/mingfx_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +MinGfx Toolkit: src/mingfx.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    mingfx.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 
    +
    16 
    +
    17 #ifndef SRC_MINGFX_H_
    +
    18 #define SRC_MINGFX_H_
    +
    19 
    +
    20 #include "aabb.h"
    +
    21 #include "bvh.h"
    +
    22 #include "color.h"
    +
    23 #include "craft_cam.h"
    +
    24 #include "default_shader.h"
    +
    25 #include "gfxmath.h"
    +
    26 #include "graphics_app.h"
    +
    27 #include "matrix4.h"
    +
    28 #include "mesh.h"
    +
    29 #include "mingfx_config.h"
    +
    30 #include "opengl_headers.h"
    +
    31 #include "platform.h"
    +
    32 #include "point2.h"
    +
    33 #include "point3.h"
    +
    34 #include "quaternion.h"
    +
    35 #include "quick_shapes.h"
    +
    36 #include "ray.h"
    +
    37 #include "shader_program.h"
    +
    38 #include "text_shader.h"
    +
    39 #include "texture2d.h"
    +
    40 #include "unicam.h"
    +
    41 #include "vector2.h"
    +
    42 #include "vector3.h"
    +
    43 
    +
    44 //using namespace mingfx;
    +
    45 
    +
    46 #endif
    + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + diff --git a/dev/MinGfx/docs/html/mingfx__config_8h.html b/dev/MinGfx/docs/html/mingfx__config_8h.html new file mode 100644 index 0000000..e2c9f24 --- /dev/null +++ b/dev/MinGfx/docs/html/mingfx__config_8h.html @@ -0,0 +1,172 @@ + + + + + + + +MinGfx Toolkit: src/mingfx_config.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    mingfx_config.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + + + + + + +

    +Macros

    #define MINGFX_DATA_DIR_BUILD   "Y:/courses/4611/instructor-repo/dev/MinGfx/data"
     
    #define MINGFX_DATA_DIR_INSTALL   "C:/csci-4611/share/MinGfx-1.0/data"
     
    #define MINGFX_SHADERS_DIR_BUILD   "Y:/courses/4611/instructor-repo/dev/MinGfx/src/shaders"
     
    #define MINGFX_SHADERS_DIR_INSTALL   "C:/csci-4611/share/MinGfx-1.0/shaders"
     
    +

    Macro Definition Documentation

    + +

    ◆ MINGFX_DATA_DIR_BUILD

    + +
    +
    + + + + +
    #define MINGFX_DATA_DIR_BUILD   "Y:/courses/4611/instructor-repo/dev/MinGfx/data"
    +
    + +

    Definition at line 20 of file mingfx_config.h.

    + +
    +
    + +

    ◆ MINGFX_DATA_DIR_INSTALL

    + +
    +
    + + + + +
    #define MINGFX_DATA_DIR_INSTALL   "C:/csci-4611/share/MinGfx-1.0/data"
    +
    + +

    Definition at line 21 of file mingfx_config.h.

    + +
    +
    + +

    ◆ MINGFX_SHADERS_DIR_BUILD

    + +
    +
    + + + + +
    #define MINGFX_SHADERS_DIR_BUILD   "Y:/courses/4611/instructor-repo/dev/MinGfx/src/shaders"
    +
    + +

    Definition at line 23 of file mingfx_config.h.

    + +
    +
    + +

    ◆ MINGFX_SHADERS_DIR_INSTALL

    + +
    +
    + + + + +
    #define MINGFX_SHADERS_DIR_INSTALL   "C:/csci-4611/share/MinGfx-1.0/shaders"
    +
    + +

    Definition at line 24 of file mingfx_config.h.

    + +
    +
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/mingfx__config_8h_source.html b/dev/MinGfx/docs/html/mingfx__config_8h_source.html new file mode 100644 index 0000000..89c0719 --- /dev/null +++ b/dev/MinGfx/docs/html/mingfx__config_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +MinGfx Toolkit: src/mingfx_config.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    mingfx_config.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 // The file config.h.in is processed by cmake to produce config.h. This
    +
    15 // replaces strings of the form "at"CMAKE_VARIABLE_NAME"at" with the value
    +
    16 // of the corresponding cmake variable, allowing us to pass directory paths
    +
    17 // and other information configured with cmake into our C++ code.
    +
    18 
    +
    19 
    +
    20 #define MINGFX_DATA_DIR_BUILD "Y:/courses/4611/instructor-repo/dev/MinGfx/data"
    +
    21 #define MINGFX_DATA_DIR_INSTALL "C:/csci-4611/share/MinGfx-1.0/data"
    +
    22 
    +
    23 #define MINGFX_SHADERS_DIR_BUILD "Y:/courses/4611/instructor-repo/dev/MinGfx/src/shaders"
    +
    24 #define MINGFX_SHADERS_DIR_INSTALL "C:/csci-4611/share/MinGfx-1.0/shaders"
    +
    25 
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/namespacemembers.html b/dev/MinGfx/docs/html/namespacemembers.html new file mode 100644 index 0000000..41b6ce2 --- /dev/null +++ b/dev/MinGfx/docs/html/namespacemembers.html @@ -0,0 +1,105 @@ + + + + + + + +MinGfx Toolkit: Namespace Members + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - o -

    +
    + + + + + diff --git a/dev/MinGfx/docs/html/namespacemembers_func.html b/dev/MinGfx/docs/html/namespacemembers_func.html new file mode 100644 index 0000000..bca38e1 --- /dev/null +++ b/dev/MinGfx/docs/html/namespacemembers_func.html @@ -0,0 +1,105 @@ + + + + + + + +MinGfx Toolkit: Namespace Members + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - o -

    +
    + + + + + diff --git a/dev/MinGfx/docs/html/namespacemingfx.html b/dev/MinGfx/docs/html/namespacemingfx.html new file mode 100644 index 0000000..2861601 --- /dev/null +++ b/dev/MinGfx/docs/html/namespacemingfx.html @@ -0,0 +1,1710 @@ + + + + + + + +MinGfx Toolkit: mingfx Namespace Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    mingfx Namespace Reference
    +
    +
    +

    Detailed Description

    +

    Namespace for the MinGfx Toolkit.

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

    +Classes

    class  AABB
     A 3D axis-aligned bounding box defined by two corners (min and max). More...
     
    class  BVH
     A Bounding Volume Hierarchy (BVH) data structure that can be used to accelerate ray-object intersection tests by carving up space into a hierarchy of partitions represented in a tree. More...
     
    class  Color
     Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with OpenGL. More...
     
    class  CraftCam
     This implements a user interface for controlling the camera with the mouse. More...
     
    class  DefaultShader
     A simple GLSL shader for textured per-fragment Phong shading with multiple light sources. More...
     
    class  GfxMath
     This class holds a variety of static math functions that are useful to have defined with creating graphics programs. More...
     
    class  GraphicsApp
     This is the main application base class for the MinGfx Toolkit. More...
     
    class  Matrix4
     A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be compatible with OpenGL. More...
     
    class  Mesh
     A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader. More...
     
    class  Platform
     Provides access to the underlying file system and other platform-specific routines. More...
     
    class  Point2
     A 2D Point with floating point coordinates, used for storing 2D texture coordinates, screen-space graphics, and mouse input. More...
     
    class  Point3
     A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graphics operations. More...
     
    class  Quaternion
     A quaternion to represent rotations in 3D space. More...
     
    class  QuickShapes
     This class provides a quick way to draw shapes for use in debugging or simple scenes. More...
     
    class  Ray
     Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a direction (a unit 3D vector). More...
     
    class  ShaderProgram
     A wrapper around GLSL shader programs. More...
     
    class  TextShader
     
    class  Texture2D
     A wrapper around a 2D texture that supports loading images from files or setting texture color data directly. More...
     
    class  UniCam
     This implements a user interface for controlling the camera with the mouse. More...
     
    class  Vector2
     A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements, and screen-space vectors. More...
     
    class  Vector3
     A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graphics operations. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    AABB operator+ (const AABB &A, const AABB &B)
     
    std::ostream & operator<< (std::ostream &os, const Color &c)
     
    std::istream & operator>> (std::istream &is, Color &c)
     
    Matrix4 operator* (const Matrix4 &m, const float &s)
     Multiply matrix and scalar, returns the new matrix. More...
     
    Matrix4 operator* (const float &s, const Matrix4 &m)
     Multiply matrix and scalar, returns the new matrix. More...
     
    Point3 operator* (const Matrix4 &m, const Point3 &p)
     Multiply matrix and point, returns the new point. More...
     
    Vector3 operator* (const Matrix4 &m, const Vector3 &v)
     Multiply matrix and vector, returns the new vector. More...
     
    Matrix4 operator* (const Matrix4 &m1, const Matrix4 &m2)
     Multiply two matrices, returns the result. More...
     
    Ray operator* (const Matrix4 &m, const Ray &r)
     Multiply matrix and the point and vector portions of the ray, returns the new ray. More...
     
    std::ostream & operator<< (std::ostream &os, const Matrix4 &m)
     
    std::istream & operator>> (std::istream &is, Matrix4 &m)
     
    std::ostream & operator<< (std::ostream &os, const Point2 &p)
     
    std::istream & operator>> (std::istream &is, Point2 &p)
     
    std::ostream & operator<< (std::ostream &os, const Point3 &p)
     
    std::istream & operator>> (std::istream &is, Point3 &p)
     
    Quaternion operator* (const Quaternion &q1, const Quaternion &q2)
     
    Quaternion operator/ (const Quaternion &q, const float s)
     
    Quaternion operator* (const float s, const Quaternion &q)
     
    Quaternion operator* (const Quaternion &q, const float s)
     
    Quaternion operator- (const Quaternion &q)
     
    Quaternion operator+ (const Quaternion &q1, const Quaternion &q2)
     
    Quaternion operator- (const Quaternion &q1, const Quaternion &q2)
     
    std::ostream & operator<< (std::ostream &os, const Quaternion &q)
     
    std::istream & operator>> (std::istream &is, Quaternion &q)
     
    std::ostream & operator<< (std::ostream &os, const Ray &r)
     
    std::istream & operator>> (std::istream &is, Ray &r)
     
    Vector2 operator/ (const Vector2 &v, const float s)
     Divide the vector by the scalar s. More...
     
    Vector2 operator* (const float s, const Vector2 &v)
     Multiply the vector by the scalar s. More...
     
    Vector2 operator* (const Vector2 &v, const float s)
     Multiply the vector by the scalar s. More...
     
    Vector2 operator- (const Vector2 &v)
     Negate the vector. More...
     
    Point2 operator+ (const Vector2 &v, const Point2 &p)
     Adds a vector and a point, returns a point. More...
     
    Point2 operator+ (const Point2 &p, const Vector2 &v)
     Adds a point and a vector, returns a point. More...
     
    Vector2 operator+ (const Vector2 &v1, const Vector2 &v2)
     Adds a vector and a vector, returns a vector. More...
     
    Point2 operator- (const Point2 &p, const Vector2 &v)
     Subtracts a vector from a point, returns a point. More...
     
    Vector2 operator- (const Vector2 &v1, const Vector2 &v2)
     Subtracts v2 from v1, returns a vector. More...
     
    Vector2 operator- (const Point2 &p1, const Point2 &p2)
     Returns the vector spanning p1 and p2. More...
     
    std::ostream & operator<< (std::ostream &os, const Vector2 &v)
     
    std::istream & operator>> (std::istream &is, Vector2 &v)
     
    Vector3 operator/ (const Vector3 &v, const float s)
     Divide the vector by the scalar s. More...
     
    Vector3 operator* (const float s, const Vector3 &v)
     Multiply the vector by the scalar s. More...
     
    Vector3 operator* (const Vector3 &v, const float s)
     Multiply the vector by the scalar s. More...
     
    Vector3 operator- (const Vector3 &v)
     Negate the vector. More...
     
    Point3 operator+ (const Vector3 &v, const Point3 &p)
     Adds a vector and a point, returns a point. More...
     
    Point3 operator+ (const Point3 &p, const Vector3 &v)
     Adds a point and a vector, returns a point. More...
     
    Vector3 operator+ (const Vector3 &v1, const Vector3 &v2)
     Adds a vector and a vector, returns a vector. More...
     
    Point3 operator- (const Point3 &p, const Vector3 &v)
     Subtracts a vector from a point, returns a point. More...
     
    Vector3 operator- (const Vector3 &v1, const Vector3 &v2)
     Subtracts v2 from v1, returns a vector. More...
     
    Vector3 operator- (const Point3 &p1, const Point3 &p2)
     Returns the vector spanning p1 and p2. More...
     
    std::ostream & operator<< (std::ostream &os, const Vector3 &v)
     
    std::istream & operator>> (std::istream &is, Vector3 &v)
     
    +

    Function Documentation

    + +

    ◆ operator*() [1/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Matrix4 mingfx::operator* (const float & s,
    const Matrix4m 
    )
    +
    + +

    Multiply matrix and scalar, returns the new matrix.

    + +
    +
    + +

    ◆ operator*() [2/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Quaternion mingfx::operator* (const float s,
    const Quaternionq 
    )
    +
    + +
    +
    + +

    ◆ operator*() [3/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2 mingfx::operator* (const float s,
    const Vector2v 
    )
    +
    + +

    Multiply the vector by the scalar s.

    + +
    +
    + +

    ◆ operator*() [4/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector3 mingfx::operator* (const float s,
    const Vector3v 
    )
    +
    + +

    Multiply the vector by the scalar s.

    + +
    +
    + +

    ◆ operator*() [5/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Matrix4 mingfx::operator* (const Matrix4m,
    const float & s 
    )
    +
    + +

    Multiply matrix and scalar, returns the new matrix.

    + +
    +
    + +

    ◆ operator*() [6/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Point3 mingfx::operator* (const Matrix4m,
    const Point3p 
    )
    +
    + +

    Multiply matrix and point, returns the new point.

    + +
    +
    + +

    ◆ operator*() [7/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Ray mingfx::operator* (const Matrix4m,
    const Rayr 
    )
    +
    + +

    Multiply matrix and the point and vector portions of the ray, returns the new ray.

    + +
    +
    + +

    ◆ operator*() [8/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector3 mingfx::operator* (const Matrix4m,
    const Vector3v 
    )
    +
    + +

    Multiply matrix and vector, returns the new vector.

    + +
    +
    + +

    ◆ operator*() [9/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Matrix4 mingfx::operator* (const Matrix4m1,
    const Matrix4m2 
    )
    +
    + +

    Multiply two matrices, returns the result.

    + +
    +
    + +

    ◆ operator*() [10/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Quaternion mingfx::operator* (const Quaternionq,
    const float s 
    )
    +
    + +
    +
    + +

    ◆ operator*() [11/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Quaternion mingfx::operator* (const Quaternionq1,
    const Quaternionq2 
    )
    +
    + +
    +
    + +

    ◆ operator*() [12/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2 mingfx::operator* (const Vector2v,
    const float s 
    )
    +
    + +

    Multiply the vector by the scalar s.

    + +
    +
    + +

    ◆ operator*() [13/13]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector3 mingfx::operator* (const Vector3v,
    const float s 
    )
    +
    + +

    Multiply the vector by the scalar s.

    + +
    +
    + +

    ◆ operator+() [1/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    AABB mingfx::operator+ (const AABBA,
    const AABBB 
    )
    +
    + +
    +
    + +

    ◆ operator+() [2/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Point2 mingfx::operator+ (const Point2p,
    const Vector2v 
    )
    +
    + +

    Adds a point and a vector, returns a point.

    + +
    +
    + +

    ◆ operator+() [3/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Point3 mingfx::operator+ (const Point3p,
    const Vector3v 
    )
    +
    + +

    Adds a point and a vector, returns a point.

    + +
    +
    + +

    ◆ operator+() [4/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Quaternion mingfx::operator+ (const Quaternionq1,
    const Quaternionq2 
    )
    +
    + +
    +
    + +

    ◆ operator+() [5/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Point2 mingfx::operator+ (const Vector2v,
    const Point2p 
    )
    +
    + +

    Adds a vector and a point, returns a point.

    + +
    +
    + +

    ◆ operator+() [6/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2 mingfx::operator+ (const Vector2v1,
    const Vector2v2 
    )
    +
    + +

    Adds a vector and a vector, returns a vector.

    + +
    +
    + +

    ◆ operator+() [7/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Point3 mingfx::operator+ (const Vector3v,
    const Point3p 
    )
    +
    + +

    Adds a vector and a point, returns a point.

    + +
    +
    + +

    ◆ operator+() [8/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector3 mingfx::operator+ (const Vector3v1,
    const Vector3v2 
    )
    +
    + +

    Adds a vector and a vector, returns a vector.

    + +
    +
    + +

    ◆ operator-() [1/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Point2 mingfx::operator- (const Point2p,
    const Vector2v 
    )
    +
    + +

    Subtracts a vector from a point, returns a point.

    + +
    +
    + +

    ◆ operator-() [2/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2 mingfx::operator- (const Point2p1,
    const Point2p2 
    )
    +
    + +

    Returns the vector spanning p1 and p2.

    + +
    +
    + +

    ◆ operator-() [3/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Point3 mingfx::operator- (const Point3p,
    const Vector3v 
    )
    +
    + +

    Subtracts a vector from a point, returns a point.

    + +
    +
    + +

    ◆ operator-() [4/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector3 mingfx::operator- (const Point3p1,
    const Point3p2 
    )
    +
    + +

    Returns the vector spanning p1 and p2.

    + +
    +
    + +

    ◆ operator-() [5/10]

    + +
    +
    + + + + + + + + +
    Quaternion mingfx::operator- (const Quaternionq)
    +
    + +
    +
    + +

    ◆ operator-() [6/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Quaternion mingfx::operator- (const Quaternionq1,
    const Quaternionq2 
    )
    +
    + +
    +
    + +

    ◆ operator-() [7/10]

    + +
    +
    + + + + + + + + +
    Vector2 mingfx::operator- (const Vector2v)
    +
    + +

    Negate the vector.

    + +
    +
    + +

    ◆ operator-() [8/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2 mingfx::operator- (const Vector2v1,
    const Vector2v2 
    )
    +
    + +

    Subtracts v2 from v1, returns a vector.

    + +
    +
    + +

    ◆ operator-() [9/10]

    + +
    +
    + + + + + + + + +
    Vector3 mingfx::operator- (const Vector3v)
    +
    + +

    Negate the vector.

    + +
    +
    + +

    ◆ operator-() [10/10]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector3 mingfx::operator- (const Vector3v1,
    const Vector3v2 
    )
    +
    + +

    Subtracts v2 from v1, returns a vector.

    + +
    +
    + +

    ◆ operator/() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Quaternion mingfx::operator/ (const Quaternionq,
    const float s 
    )
    +
    + +
    +
    + +

    ◆ operator/() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector2 mingfx::operator/ (const Vector2v,
    const float s 
    )
    +
    + +

    Divide the vector by the scalar s.

    + +
    +
    + +

    ◆ operator/() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Vector3 mingfx::operator/ (const Vector3v,
    const float s 
    )
    +
    + +

    Divide the vector by the scalar s.

    + +
    +
    + +

    ◆ operator<<() [1/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& mingfx::operator<< (std::ostream & os,
    const Colorc 
    )
    +
    + +
    +
    + +

    ◆ operator<<() [2/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& mingfx::operator<< (std::ostream & os,
    const Matrix4m 
    )
    +
    + +
    +
    + +

    ◆ operator<<() [3/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& mingfx::operator<< (std::ostream & os,
    const Point2p 
    )
    +
    + +
    +
    + +

    ◆ operator<<() [4/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& mingfx::operator<< (std::ostream & os,
    const Point3p 
    )
    +
    + +
    +
    + +

    ◆ operator<<() [5/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& mingfx::operator<< (std::ostream & os,
    const Quaternionq 
    )
    +
    + +
    +
    + +

    ◆ operator<<() [6/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& mingfx::operator<< (std::ostream & os,
    const Rayr 
    )
    +
    + +
    +
    + +

    ◆ operator<<() [7/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& mingfx::operator<< (std::ostream & os,
    const Vector2v 
    )
    +
    + +
    +
    + +

    ◆ operator<<() [8/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& mingfx::operator<< (std::ostream & os,
    const Vector3v 
    )
    +
    + +
    +
    + +

    ◆ operator>>() [1/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::istream& mingfx::operator>> (std::istream & is,
    Colorc 
    )
    +
    + +
    +
    + +

    ◆ operator>>() [2/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::istream& mingfx::operator>> (std::istream & is,
    Matrix4m 
    )
    +
    + +
    +
    + +

    ◆ operator>>() [3/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::istream& mingfx::operator>> (std::istream & is,
    Point2p 
    )
    +
    + +
    +
    + +

    ◆ operator>>() [4/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::istream& mingfx::operator>> (std::istream & is,
    Point3p 
    )
    +
    + +
    +
    + +

    ◆ operator>>() [5/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::istream& mingfx::operator>> (std::istream & is,
    Quaternionq 
    )
    +
    + +
    +
    + +

    ◆ operator>>() [6/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::istream& mingfx::operator>> (std::istream & is,
    Rayr 
    )
    +
    + +
    +
    + +

    ◆ operator>>() [7/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::istream& mingfx::operator>> (std::istream & is,
    Vector2v 
    )
    +
    + +
    +
    + +

    ◆ operator>>() [8/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::istream& mingfx::operator>> (std::istream & is,
    Vector3v 
    )
    +
    + +
    +
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/nav_f.png b/dev/MinGfx/docs/html/nav_f.png new file mode 100644 index 0000000..5a578e8 Binary files /dev/null and b/dev/MinGfx/docs/html/nav_f.png differ diff --git a/dev/MinGfx/docs/html/nav_g.png b/dev/MinGfx/docs/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/dev/MinGfx/docs/html/nav_g.png differ diff --git a/dev/MinGfx/docs/html/nav_h.png b/dev/MinGfx/docs/html/nav_h.png new file mode 100644 index 0000000..818e77a Binary files /dev/null and b/dev/MinGfx/docs/html/nav_h.png differ diff --git a/dev/MinGfx/docs/html/open.png b/dev/MinGfx/docs/html/open.png new file mode 100644 index 0000000..fd4dbc6 Binary files /dev/null and b/dev/MinGfx/docs/html/open.png differ diff --git a/dev/MinGfx/docs/html/opengl__headers_8h.html b/dev/MinGfx/docs/html/opengl__headers_8h.html new file mode 100644 index 0000000..2b685da --- /dev/null +++ b/dev/MinGfx/docs/html/opengl__headers_8h.html @@ -0,0 +1,94 @@ + + + + + + + +MinGfx Toolkit: src/opengl_headers.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    opengl_headers.h File Reference
    +
    +
    +
    #include <nanogui/opengl.h>
    +
    +

    Go to the source code of this file.

    +
    + + + + + diff --git a/dev/MinGfx/docs/html/opengl__headers_8h_source.html b/dev/MinGfx/docs/html/opengl__headers_8h_source.html new file mode 100644 index 0000000..2a3ce01 --- /dev/null +++ b/dev/MinGfx/docs/html/opengl__headers_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +MinGfx Toolkit: src/opengl_headers.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    opengl_headers.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 // We often use the code that is commented out below to load opengl headers in a cross-platform way,
    +
    15 // but since nanogui uses glad internally, we will just use their approach to load opengl headers
    +
    16 // so that everything is consistent.
    +
    17 
    +
    18 // disable warnings for this 3rd party code
    +
    19 #pragma warning ( push, 0 )
    +
    20 #include <nanogui/opengl.h>
    +
    21 #pragma warning ( pop )
    +
    22 
    +
    23 
    +
    24 /*** Our typical (non-nanogui) appraoch:
    +
    25 
    +
    26 // GLEW is needed on Windows and Linux
    +
    27 #ifdef _WIN32
    +
    28 #include "GL/glew.h"
    +
    29 #include "GL/wglew.h"
    +
    30 #elif (!defined(__APPLE__))
    +
    31 #include "GL/glxew.h"
    +
    32 #endif
    +
    33 
    +
    34 // OpenGL Headers
    +
    35 #if defined(WIN32)
    +
    36 #define NOMINMAX
    +
    37 #include <windows.h>
    +
    38 #include <GL/gl.h>
    +
    39 #elif defined(__APPLE__)
    +
    40 #define GL_GLEXT_PROTOTYPES
    +
    41 #include <OpenGL/gl3.h>
    +
    42 #include <OpenGL/glext.h>
    +
    43 #else
    +
    44 #define GL_GLEXT_PROTOTYPES
    +
    45 #include <GL/gl.h>
    +
    46 #endif
    +
    47 
    +
    48 ***/
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/pages.html b/dev/MinGfx/docs/html/pages.html new file mode 100644 index 0000000..3605d7e --- /dev/null +++ b/dev/MinGfx/docs/html/pages.html @@ -0,0 +1,93 @@ + + + + + + + +MinGfx Toolkit: Related Pages + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/platform_8h.html b/dev/MinGfx/docs/html/platform_8h.html new file mode 100644 index 0000000..558b399 --- /dev/null +++ b/dev/MinGfx/docs/html/platform_8h.html @@ -0,0 +1,111 @@ + + + + + + + +MinGfx Toolkit: src/platform.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    platform.h File Reference
    +
    +
    +
    #include <string>
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Platform
     Provides access to the underlying file system and other platform-specific routines. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/platform_8h_source.html b/dev/MinGfx/docs/html/platform_8h_source.html new file mode 100644 index 0000000..ec35140 --- /dev/null +++ b/dev/MinGfx/docs/html/platform_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +MinGfx Toolkit: src/platform.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    platform.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_PLATFORM_H_
    +
    15 #define SRC_PLATFORM_H_
    +
    16 
    +
    17 #include <string>
    +
    18 #include <vector>
    +
    19 
    +
    20 namespace mingfx {
    +
    21 
    +
    22 
    +
    26 class Platform {
    +
    27 public:
    +
    28 
    +
    30  static bool FileExists(const std::string &filename);
    +
    31 
    +
    32  /* Looks for a file named basename in each of the paths specified. If found,
    +
    33  the full path to the file is returned. If not found, then basename is returned.
    +
    34  Example:
    +
    35  ~~~
    +
    36  std::vector<std::string> search_path;
    +
    37  search_path.push_back(".");
    +
    38  search_path.push_back("./data");
    +
    39  search_path.push_back("./shaders");
    +
    40  search_path.push_back("/usr/local/share/blah/blah/data");
    +
    41 
    +
    42  std::string file = Platform::findFile("mydata.csv", search_path);
    +
    43  ~~~
    +
    44  */
    +
    45  static std::string FindFile(const std::string &basename, const std::vector<std::string> &searchpath);
    +
    46 
    +
    47  /* Looks for a file named basename in each of the paths specified in a semi-colon
    +
    48  separated list. If found, the full path to the file is returned. If not found,
    +
    49  then basename is returned. Example:
    +
    50  ~~~
    +
    51  std::string search_path = ".;./data;./shaders;/usr/local/share/blah/blah/data";
    +
    52  std::string file = Platform::findFile("mydata.csv", search_path);
    +
    53  ~~~
    +
    54  */
    +
    55  static std::string FindFile(const std::string &basename, const std::string &searchpath);
    +
    56 
    +
    65  static std::string FindMinGfxDataFile(const std::string &basename);
    +
    66 
    +
    75  static std::string FindMinGfxShaderFile(const std::string &basename);
    +
    76 
    +
    77 private:
    +
    78 };
    +
    79 
    +
    80 
    +
    81 } // end namespace
    +
    82 
    +
    83 #endif
    +
    Provides access to the underlying file system and other platform-specific routines.
    Definition: platform.h:26
    +
    static std::string FindFile(const std::string &basename, const std::string &searchpath)
    +
    static bool FileExists(const std::string &filename)
    True if filename is found and can be opened for reading on the system.
    +
    static std::string FindMinGfxDataFile(const std::string &basename)
    Searches for a data file that ships with MinGfx.
    +
    static std::string FindFile(const std::string &basename, const std::vector< std::string > &searchpath)
    +
    static std::string FindMinGfxShaderFile(const std::string &basename)
    Searches for a shader file that ships with MinGfx.
    +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/point2_8h.html b/dev/MinGfx/docs/html/point2_8h.html new file mode 100644 index 0000000..3b2bedf --- /dev/null +++ b/dev/MinGfx/docs/html/point2_8h.html @@ -0,0 +1,144 @@ + + + + + + + +MinGfx Toolkit: src/point2.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    point2.h File Reference
    +
    +
    +
    #include <iostream>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Point2
     A 2D Point with floating point coordinates, used for storing 2D texture coordinates, screen-space graphics, and mouse input. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    + + + + +

    +Macros

    #define MINGFX_MATH_EPSILON   1e-8
     Epsilon value used for == and != comparisons within MinGfx. More...
     
    + + + + + +

    +Functions

    std::ostream & mingfx::operator<< (std::ostream &os, const Point2 &p)
     
    std::istream & mingfx::operator>> (std::istream &is, Point2 &p)
     
    +

    Macro Definition Documentation

    + +

    ◆ MINGFX_MATH_EPSILON

    + +
    +
    + + + + +
    #define MINGFX_MATH_EPSILON   1e-8
    +
    + +

    Epsilon value used for == and != comparisons within MinGfx.

    + +

    Definition at line 22 of file point2.h.

    + +
    +
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/point2_8h_source.html b/dev/MinGfx/docs/html/point2_8h_source.html new file mode 100644 index 0000000..c2b55b1 --- /dev/null +++ b/dev/MinGfx/docs/html/point2_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +MinGfx Toolkit: src/point2.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    point2.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_POINT2_H_
    +
    15 #define SRC_POINT2_H_
    +
    16 
    +
    17 #include <iostream>
    +
    18 
    +
    19 namespace mingfx {
    +
    20 
    +
    22 #define MINGFX_MATH_EPSILON 1e-8
    +
    23 
    +
    24 
    +
    28 class Point2 {
    +
    29 public:
    +
    31  Point2();
    +
    32 
    +
    35  Point2(float x, float y);
    +
    36 
    +
    38  Point2(float *p);
    +
    39 
    +
    41  Point2(const Point2& p);
    +
    42 
    +
    44  virtual ~Point2();
    +
    45 
    +
    47  bool operator==(const Point2& p) const;
    +
    48 
    +
    50  bool operator!=(const Point2& p) const;
    +
    51 
    +
    53  Point2& operator=(const Point2& p);
    +
    54 
    +
    56  float operator[](const int i) const;
    +
    57 
    +
    65  float& operator[](const int i);
    +
    66 
    +
    69  float x() const { return p[0]; }
    +
    70 
    +
    73  float y() const { return p[1]; }
    +
    74 
    +
    76  float w() const { return 1.0; }
    +
    77 
    +
    78 
    +
    80  const float * value_ptr() const;
    +
    81 
    +
    85  Point2 Lerp(const Point2 &b, float alpha) const;
    +
    86 
    +
    87 
    +
    89  static const Point2& Origin();
    +
    90 
    +
    92  static const Point2& Zero();
    +
    93 
    +
    95  static const Point2& One();
    +
    96 
    +
    99  static Point2 Lerp(const Point2 &a, const Point2 &b, float alpha);
    +
    100 
    +
    101 private:
    +
    102  float p[2];
    +
    103 };
    +
    104 
    +
    105 
    +
    106 std::ostream & operator<< ( std::ostream &os, const Point2 &p);
    +
    107 std::istream & operator>> ( std::istream &is, Point2 &p);
    +
    108 
    +
    109 
    +
    110 } // namespace
    +
    111 
    +
    112 #endif
    +
    A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...
    Definition: point2.h:28
    +
    const float * value_ptr() const
    Returns a const pointer to the raw data array.
    +
    static const Point2 & Origin()
    (0,0) - a shortcut for a special point that is frequently needed
    +
    Point2()
    Default point at the origin.
    +
    static const Point2 & One()
    (1,1) - a shortcut for a special point that is frequently needed
    +
    Point2(float *p)
    Constructs a point given a pointer to x,y data.
    +
    float y() const
    Read only access to the y coordinate. Can also use my_point[1]. Use the my_point[1] = 1....
    Definition: point2.h:73
    +
    float & operator[](const int i)
    Returns a reference to the ith coordinate of the point. Use this accessor if you wish to set the coor...
    +
    bool operator!=(const Point2 &p) const
    Check for "inequality", taking floating point imprecision into account.
    +
    static const Point2 & Zero()
    (0,0) - a shortcut for a special point that is frequently needed
    +
    static Point2 Lerp(const Point2 &a, const Point2 &b, float alpha)
    Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...
    +
    Point2(float x, float y)
    Constructs a point given (x,y,1), where the 1 comes from the use of homogeneous coordinates in comput...
    +
    virtual ~Point2()
    Point destructor.
    +
    Point2 Lerp(const Point2 &b, float alpha) const
    Linear interpolation between this point and another. Alpha=0.0 returns this point,...
    +
    float x() const
    Read only access to the x coordinate. Can also use my_point[0]. Use the my_point[0] = 1....
    Definition: point2.h:69
    +
    Point2(const Point2 &p)
    Copy constructor for point.
    +
    float w() const
    In homogeneous coordinates, the w coordinate for all points is 1.0.
    Definition: point2.h:76
    +
    bool operator==(const Point2 &p) const
    Check for "equality", taking floating point imprecision into account.
    +
    float operator[](const int i) const
    Read only access to the ith coordinate of the point.
    +
    Point2 & operator=(const Point2 &p)
    Assignment operator.
    +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    +
    std::ostream & operator<<(std::ostream &os, const Color &c)
    +
    std::istream & operator>>(std::istream &is, Color &c)
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/point3_8h.html b/dev/MinGfx/docs/html/point3_8h.html new file mode 100644 index 0000000..07f7dc7 --- /dev/null +++ b/dev/MinGfx/docs/html/point3_8h.html @@ -0,0 +1,145 @@ + + + + + + + +MinGfx Toolkit: src/point3.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    point3.h File Reference
    +
    +
    +
    #include <iostream>
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Point3
     A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graphics operations. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    + + + + +

    +Macros

    #define MINGFX_MATH_EPSILON   1e-8
     Epsilon value used for == and != comparisons within MinGfx. More...
     
    + + + + + +

    +Functions

    std::ostream & mingfx::operator<< (std::ostream &os, const Point3 &p)
     
    std::istream & mingfx::operator>> (std::istream &is, Point3 &p)
     
    +

    Macro Definition Documentation

    + +

    ◆ MINGFX_MATH_EPSILON

    + +
    +
    + + + + +
    #define MINGFX_MATH_EPSILON   1e-8
    +
    + +

    Epsilon value used for == and != comparisons within MinGfx.

    + +

    Definition at line 23 of file point3.h.

    + +
    +
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/point3_8h_source.html b/dev/MinGfx/docs/html/point3_8h_source.html new file mode 100644 index 0000000..8c1ad76 --- /dev/null +++ b/dev/MinGfx/docs/html/point3_8h_source.html @@ -0,0 +1,211 @@ + + + + + + + +MinGfx Toolkit: src/point3.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    point3.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_POINT3_H_
    +
    15 #define SRC_POINT3_H_
    +
    16 
    +
    17 #include <iostream>
    +
    18 #include <vector>
    +
    19 
    +
    20 namespace mingfx {
    +
    21 
    +
    23 #define MINGFX_MATH_EPSILON 1e-8
    +
    24 
    +
    25 // forward declaration
    +
    26 class Vector3;
    +
    27 
    +
    28 
    +
    52 class Point3 {
    +
    53 public:
    +
    55  Point3();
    +
    56 
    +
    59  Point3(float x, float y, float z);
    +
    60 
    +
    62  Point3(float *p);
    +
    63 
    +
    65  Point3(const Point3& p);
    +
    66 
    +
    68  virtual ~Point3();
    +
    69 
    +
    71  bool operator==(const Point3& p) const;
    +
    72 
    +
    74  bool operator!=(const Point3& p) const;
    +
    75 
    +
    77  Point3& operator=(const Point3& p);
    +
    78 
    +
    80  float operator[](const int i) const;
    +
    81 
    +
    89  float& operator[](const int i);
    +
    90 
    +
    93  float x() const { return p[0]; }
    +
    94 
    +
    97  float y() const { return p[1]; }
    +
    98 
    +
    101  float z() const { return p[2]; }
    +
    102 
    +
    104  float w() const { return 1.0; }
    +
    105 
    +
    107  const float * value_ptr() const;
    +
    108 
    +
    109 
    +
    113  Point3 Lerp(const Point3 &b, float alpha) const;
    +
    114 
    +
    117  float DistanceToPlane(const Point3 &plane_origin, const Vector3 &plane_normal);
    +
    118 
    +
    121  Point3 ClosestPointOnPlane(const Point3 &plane_origin, const Vector3 &plane_normal);
    +
    122 
    +
    124  Point3 ClosestPoint(const std::vector<Point3> &point_list);
    +
    125 
    +
    126 
    +
    127 
    +
    129  static const Point3& Origin();
    +
    130 
    +
    132  static const Point3& Zero();
    +
    133 
    +
    135  static const Point3& One();
    +
    136 
    +
    139  static Point3 Lerp(const Point3 &a, const Point3 &b, float alpha);
    +
    140 
    +
    141 
    +
    142 
    +
    143 private:
    +
    144  float p[3];
    +
    145 };
    +
    146 
    +
    147 
    +
    148 std::ostream & operator<< ( std::ostream &os, const Point3 &p);
    +
    149 std::istream & operator>> ( std::istream &is, Point3 &p);
    +
    150 
    +
    151 
    +
    152 } // namespace
    +
    153 
    +
    154 #endif
    +
    A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
    Definition: point3.h:52
    +
    Point3(float *p)
    Constructs a point given a pointer to x,y,z data.
    +
    float y() const
    Read only access to the y coordinate. Can also use my_point[1]. Use the my_point[1] = 1....
    Definition: point3.h:97
    +
    static Point3 Lerp(const Point3 &a, const Point3 &b, float alpha)
    Linear interpolation between two points. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...
    +
    Point3 Lerp(const Point3 &b, float alpha) const
    Linear interpolation between this point and another. Alpha=0.0 returns this point,...
    +
    Point3(const Point3 &p)
    Copy constructor for point.
    +
    Point3(float x, float y, float z)
    Constructs a point given (x,y,z,1), where the 1 comes from the use of homogeneous coordinates in comp...
    +
    static const Point3 & One()
    (1,1,1) - a shortcut for a special point that is frequently needed
    +
    float operator[](const int i) const
    Read only access to the ith coordinate of the point.
    +
    float & operator[](const int i)
    Returns a reference to the ith coordinate of the point. Use this accessor if you wish to set the coor...
    +
    Point3 & operator=(const Point3 &p)
    Assignment operator.
    +
    static const Point3 & Zero()
    (0,0,0) - a shortcut for a special point that is frequently needed
    +
    Point3 ClosestPoint(const std::vector< Point3 > &point_list)
    Given a list of points, returns the closest in the last to the current point.
    +
    virtual ~Point3()
    Point destructor.
    +
    bool operator==(const Point3 &p) const
    Check for "equality", taking floating point imprecision into account.
    +
    float w() const
    In homogeneous coordinates, the w coordinate for all points is 1.0.
    Definition: point3.h:104
    +
    float x() const
    Read only access to the x coordinate. Can also use my_point[0]. Use the my_point[0] = 1....
    Definition: point3.h:93
    +
    float z() const
    Read only access to the z coordinate. Can also use my_point[2]. Use the my_point[2] = 1....
    Definition: point3.h:101
    +
    bool operator!=(const Point3 &p) const
    Check for "inequality", taking floating point imprecision into account.
    +
    Point3 ClosestPointOnPlane(const Point3 &plane_origin, const Vector3 &plane_normal)
    Returns the perpendicular projection of this point onto a plane defined by a point and a normal.
    +
    Point3()
    Default point at the origin.
    +
    static const Point3 & Origin()
    (0,0,0) - a shortcut for a special point that is frequently needed
    +
    const float * value_ptr() const
    Returns a const pointer to the raw data array.
    +
    float DistanceToPlane(const Point3 &plane_origin, const Vector3 &plane_normal)
    Returns the shortest (i.e., perpendicular) distance from this point to a plane defined by a point and...
    +
    A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
    Definition: vector3.h:62
    +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    +
    std::ostream & operator<<(std::ostream &os, const Color &c)
    +
    std::istream & operator>>(std::istream &is, Color &c)
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/quaternion_8h.html b/dev/MinGfx/docs/html/quaternion_8h.html new file mode 100644 index 0000000..eb5fc9f --- /dev/null +++ b/dev/MinGfx/docs/html/quaternion_8h.html @@ -0,0 +1,133 @@ + + + + + + + +MinGfx Toolkit: src/quaternion.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    quaternion.h File Reference
    +
    +
    +
    #include <iostream>
    +#include "vector3.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Quaternion
     A quaternion to represent rotations in 3D space. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    + + + + + + + + + + + + + + + + + + + +

    +Functions

    Quaternion mingfx::operator* (const Quaternion &q1, const Quaternion &q2)
     
    Quaternion mingfx::operator/ (const Quaternion &q, const float s)
     
    Quaternion mingfx::operator* (const float s, const Quaternion &q)
     
    Quaternion mingfx::operator* (const Quaternion &q, const float s)
     
    Quaternion mingfx::operator- (const Quaternion &q)
     
    Quaternion mingfx::operator+ (const Quaternion &q1, const Quaternion &q2)
     
    Quaternion mingfx::operator- (const Quaternion &q1, const Quaternion &q2)
     
    std::ostream & mingfx::operator<< (std::ostream &os, const Quaternion &q)
     
    std::istream & mingfx::operator>> (std::istream &is, Quaternion &q)
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/quaternion_8h_source.html b/dev/MinGfx/docs/html/quaternion_8h_source.html new file mode 100644 index 0000000..78bd632 --- /dev/null +++ b/dev/MinGfx/docs/html/quaternion_8h_source.html @@ -0,0 +1,222 @@ + + + + + + + +MinGfx Toolkit: src/quaternion.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    quaternion.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_QUATERNION_H_
    +
    15 #define SRC_QUATERNION_H_
    +
    16 
    +
    17 #include <iostream>
    +
    18 
    +
    19 #include "vector3.h"
    +
    20 
    +
    21 namespace mingfx {
    +
    22 
    +
    41 class Quaternion {
    +
    42 public:
    + +
    45 
    +
    47  Quaternion(float qx, float qy, float qz, float qw);
    +
    48 
    +
    51  Quaternion(float *ptr);
    +
    52 
    +
    54  Quaternion(const Quaternion& other);
    +
    55 
    +
    56  virtual ~Quaternion();
    +
    57 
    +
    59  bool operator==(const Quaternion& q) const;
    +
    60 
    +
    62  bool operator!=(const Quaternion& q) const;
    +
    63 
    + +
    66 
    +
    68  float operator[](const int i) const;
    +
    69 
    +
    71  float& operator[](const int i);
    +
    72 
    +
    74  float x() const { return q[0]; }
    +
    75 
    +
    77  float y() const { return q[1]; }
    +
    78 
    +
    80  float z() const { return q[2]; }
    +
    81 
    +
    83  float w() const { return q[3]; }
    +
    84 
    +
    86  const float * value_ptr() const;
    +
    87 
    +
    89  float Dot(const Quaternion& q) const;
    +
    90 
    +
    92  float Length() const;
    +
    93 
    +
    95  void Normalize();
    +
    96 
    +
    99  Quaternion ToUnit() const;
    +
    100 
    + +
    103 
    + +
    106 
    +
    109  Quaternion Slerp(const Quaternion &other, float alpha) const;
    +
    110 
    +
    112  // the specified axis.
    +
    113  static Quaternion FromAxisAngle(const Vector3 &axis, float angle);
    +
    114 
    +
    116  static Quaternion FromEulerAnglesZYX(const Vector3 &angles);
    +
    117 
    +
    120  static Quaternion Slerp(const Quaternion &a, const Quaternion &b, float alpha);
    +
    121 
    +
    122 private:
    +
    123  float q[4];
    +
    124 };
    +
    125 
    +
    126 
    + +
    128 Quaternion operator/(const Quaternion& q, const float s);
    +
    129 Quaternion operator*(const float s, const Quaternion& q);
    +
    130 Quaternion operator*(const Quaternion& q, const float s);
    + + + +
    134 
    +
    135 std::ostream & operator<< ( std::ostream &os, const Quaternion &q);
    +
    136 std::istream & operator>> ( std::istream &is, Quaternion &q);
    +
    137 
    +
    138 
    +
    139 } // end namespace
    +
    140 
    +
    141 
    +
    142 #endif
    +
    A quaternion to represent rotations in 3D space.
    Definition: quaternion.h:41
    +
    Quaternion Slerp(const Quaternion &other, float alpha) const
    Uses spherical interpolation to interpoloate between the rotation stored in this quaternion and the r...
    +
    Vector3 ToEulerAnglesZYX() const
    Converts the rotation specified by the quaternion into Euler angles.
    +
    void Normalize()
    Normalizes the quat by making it unit length.
    +
    Quaternion(float *ptr)
    Creates a quate from a pointer to 4 floating point numbers in the order qx, qy, qz,...
    +
    Quaternion(const Quaternion &other)
    Copy constructor.
    +
    virtual ~Quaternion()
    +
    static Quaternion Slerp(const Quaternion &a, const Quaternion &b, float alpha)
    Uses spherical interpolation to interpoloate between the rotations specified by two quaternions.
    +
    Quaternion ToUnit() const
    Returns a normalized (i.e., unit length) version of the quaternion without modifying the original.
    +
    float & operator[](const int i)
    Writable access the ith coordinate of the quaternion (qx, qy, qz, qw).
    +
    float operator[](const int i) const
    Read only access to the ith coordinate of the quaternion (qx, qy, qz, qw).
    +
    static Quaternion FromAxisAngle(const Vector3 &axis, float angle)
    Creates a new quaternion that describes a rotation by angle radians about.
    +
    Quaternion(float qx, float qy, float qz, float qw)
    Creates a quat from the 4 parameters.
    +
    float z() const
    Read only access to the z coordinate of the imaginary part of the quaternion.
    Definition: quaternion.h:80
    +
    float x() const
    Read only access to the x coordinate of the imaginary part of the quaternion.
    Definition: quaternion.h:74
    +
    float w() const
    Read only access to the w, real part, of the quaternion.
    Definition: quaternion.h:83
    +
    float Dot(const Quaternion &q) const
    Returns the dot product of this quaternion with another.
    +
    static Quaternion FromEulerAnglesZYX(const Vector3 &angles)
    Creates a new quaternion from a rotation defined in Euler angles.
    +
    bool operator==(const Quaternion &q) const
    Check for "equality", taking floating point imprecision into account.
    +
    Quaternion Conjugate() const
    Returns the conjugate of the quaternion.
    +
    const float * value_ptr() const
    Returns a const pointer to the raw data array, stored in the order qx, qy, qz, qw.
    +
    Quaternion & operator=(const Quaternion &q)
    Assignment operator.
    +
    Quaternion()
    Creates a quat with the identity rotation.
    +
    bool operator!=(const Quaternion &q) const
    Check for "inequality", taking floating point imprecision into account.
    +
    float y() const
    Read only access to the y coordinate of the imaginary part of the quaternion.
    Definition: quaternion.h:77
    +
    float Length() const
    Returns the length of the quaternion.
    +
    A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
    Definition: vector3.h:62
    +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    +
    Quaternion operator-(const Quaternion &q)
    +
    AABB operator+(const AABB &A, const AABB &B)
    +
    Quaternion operator/(const Quaternion &q, const float s)
    +
    std::ostream & operator<<(std::ostream &os, const Color &c)
    +
    std::istream & operator>>(std::istream &is, Color &c)
    +
    Matrix4 operator*(const Matrix4 &m, const float &s)
    Multiply matrix and scalar, returns the new matrix.
    + +
    + + + + + diff --git a/dev/MinGfx/docs/html/quick__shapes_8h.html b/dev/MinGfx/docs/html/quick__shapes_8h.html new file mode 100644 index 0000000..b6e0870 --- /dev/null +++ b/dev/MinGfx/docs/html/quick__shapes_8h.html @@ -0,0 +1,118 @@ + + + + + + + +MinGfx Toolkit: src/quick_shapes.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    quick_shapes.h File Reference
    +
    +
    +
    #include "color.h"
    +#include "default_shader.h"
    +#include "mesh.h"
    +#include "point3.h"
    +#include "shader_program.h"
    +#include "texture2d.h"
    +#include "vector3.h"
    +#include "matrix4.h"
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::QuickShapes
     This class provides a quick way to draw shapes for use in debugging or simple scenes. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/quick__shapes_8h_source.html b/dev/MinGfx/docs/html/quick__shapes_8h_source.html new file mode 100644 index 0000000..1a82221 --- /dev/null +++ b/dev/MinGfx/docs/html/quick__shapes_8h_source.html @@ -0,0 +1,283 @@ + + + + + + + +MinGfx Toolkit: src/quick_shapes.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    quick_shapes.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2017, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_QUICK_SHAPES_H_
    +
    15 #define SRC_QUICK_SHAPES_H_
    +
    16 
    +
    17 #include "color.h"
    +
    18 #include "default_shader.h"
    +
    19 #include "mesh.h"
    +
    20 #include "point3.h"
    +
    21 #include "shader_program.h"
    +
    22 #include "texture2d.h"
    +
    23 #include "vector3.h"
    +
    24 #include "matrix4.h"
    +
    25 
    +
    26 #include <vector>
    +
    27 
    +
    28 
    +
    29 
    +
    30 namespace mingfx {
    +
    31 
    +
    69 class QuickShapes {
    +
    70 public:
    +
    71 
    + +
    73  virtual ~QuickShapes();
    +
    74 
    +
    75 
    +
    76  // -------- 3D PRIMITIVES --------
    +
    77 
    +
    81  void DrawCube(const Matrix4 &modelMatrix,
    +
    82  const Matrix4 &viewMatrix,
    +
    83  const Matrix4 &projectionMatrix,
    +
    84  const Color &color);
    +
    85 
    +
    90  void DrawCylinder(const Matrix4 &modelMatrix,
    +
    91  const Matrix4 &viewMatrix,
    +
    92  const Matrix4 &projectionMatrix,
    +
    93  const Color &color);
    +
    94 
    +
    99  void DrawCone(const Matrix4 &modelMatrix,
    +
    100  const Matrix4 &viewMatrix,
    +
    101  const Matrix4 &projectionMatrix,
    +
    102  const Color &color);
    +
    103 
    +
    107  void DrawSphere(const Matrix4 &modelMatrix,
    +
    108  const Matrix4 &viewMatrix,
    +
    109  const Matrix4 &projectionMatrix,
    +
    110  const Color &color);
    +
    111 
    +
    116  void DrawBrush(const Matrix4 &modelMatrix,
    +
    117  const Matrix4 &viewMatrix,
    +
    118  const Matrix4 &projectionMatrix,
    +
    119  const Color &color);
    +
    120 
    +
    121 
    +
    122  // -------- 3D COMPOSITE SHAPES --------
    +
    123 
    +
    126  void DrawLineSegment(const Matrix4 &modelMatrix,
    +
    127  const Matrix4 &viewMatrix,
    +
    128  const Matrix4 &projectionMatrix,
    +
    129  const Color &color,
    +
    130  const Point3 &p1,
    +
    131  const Point3 &p2,
    +
    132  float radius);
    +
    133 
    +
    134  enum class LinesType {
    +
    135  LINES,
    +
    136  LINE_STRIP,
    +
    137  LINE_LOOP
    +
    138  };
    +
    139 
    +
    156  void DrawLines(const Matrix4 &modelMatrix,
    +
    157  const Matrix4 &viewMatrix,
    +
    158  const Matrix4 &projectionMatrix,
    +
    159  const Color &color,
    +
    160  const std::vector<Point3> &points,
    +
    161  LinesType linesType,
    +
    162  float radius);
    +
    163 
    +
    168  void DrawArrow(const Matrix4 &modelMatrix,
    +
    169  const Matrix4 &viewMatrix,
    +
    170  const Matrix4 &projectionMatrix,
    +
    171  const Color &color,
    +
    172  Point3 p, Vector3 dir, float radius);
    +
    173 
    +
    178  void DrawAxes(const Matrix4 &modelMatrix,
    +
    179  const Matrix4 &viewMatrix,
    +
    180  const Matrix4 &projectionMatrix);
    +
    181 
    +
    182 
    +
    183  // -------- 2D PRIMITIVES --------
    +
    184 
    +
    189  void DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix,
    +
    190  const Matrix4 &projectionMatrix, const Color &color);
    +
    191 
    +
    198  void DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix,
    +
    199  const Matrix4 &projectionMatrix, const Color &color,
    +
    200  const Texture2D &texture);
    +
    201 
    +
    205  void DrawFullscreenTexture(const Color &color, const Texture2D &texture);
    +
    206 
    +
    207 
    + +
    212 
    + +
    218 
    +
    219 
    +
    220 private:
    +
    221 
    +
    222  void DrawWithFullscreen(const Color &color, Mesh *mesh, const Texture2D &tex);
    +
    223 
    +
    224  Mesh cubeMesh_;
    +
    225  void initCube();
    +
    226 
    +
    227  Mesh squareMesh_;
    +
    228  void initSquare();
    +
    229 
    +
    230  Mesh fullMesh_;
    +
    231  void initFull();
    +
    232 
    +
    233  Mesh cylMesh_;
    +
    234  void initCyl();
    +
    235 
    +
    236  Mesh coneMesh_;
    +
    237  void initCone();
    +
    238 
    +
    239  Mesh sphereMesh_;
    +
    240  void initSph();
    +
    241 
    +
    242  Mesh brushMesh_;
    +
    243  void initBrush();
    +
    244 
    +
    245  DefaultShader defaultShader_;
    +
    246  DefaultShader::MaterialProperties defaultMaterial_;
    +
    247  Texture2D emptyTex_;
    +
    248 
    +
    249  ShaderProgram fullscreenShader_;
    +
    250 };
    +
    251 
    +
    252 } // end namespace
    +
    253 
    +
    254 #endif
    +
    Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...
    Definition: color.h:41
    +
    Small data structure to hold properties of the material to be lit.
    +
    A simple GLSL shader for textured per-fragment Phong shading with multiple light sources.
    +
    A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...
    Definition: matrix4.h:50
    +
    A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.
    Definition: mesh.h:127
    +
    A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
    Definition: point3.h:52
    +
    This class provides a quick way to draw shapes for use in debugging or simple scenes.
    Definition: quick_shapes.h:69
    +
    void DrawLineSegment(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const Point3 &p1, const Point3 &p2, float radius)
    Draws a cylinder between the two points.
    +
    void DrawCone(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
    Draws a cone with radius 1 and height y=-1 to 1 given the model, view, and projection matrices provid...
    +
    virtual ~QuickShapes()
    +
    void DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
    Draws a square in the X-Y plane with extents -1 to 1 and normal in the +Y direction.
    + +
    void DrawAxes(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix)
    Draws a right handed set of axes at the coordinate frame specified by the modelMatrix.
    +
    void DrawCylinder(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
    Draws a cylinder with radius 1 and height y=-1 to 1 given the model, view, and projection matrices pr...
    +
    void DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const Texture2D &texture)
    Draws a square, which you can deform into some other shape by adjusting the model matrix,...
    +
    void DrawSphere(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
    Draws a sphere with radius 1 given the model, view, and projection matrices provided and using the su...
    +
    DefaultShader * default_shader()
    Returns a pointer to the default shader used internally by the Draw class so that you may change the ...
    + + + + +
    void DrawBrush(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
    Draws the classic 3D paintbrush cursor from the 2001 Keefe et al.
    +
    void DrawFullscreenTexture(const Color &color, const Texture2D &texture)
    Draws a background texture across the whole screen.
    +
    DefaultShader::MaterialProperties * material()
    Returns a pointer to the default material properties for the shapes so that you may adjust the reflec...
    +
    void DrawCube(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)
    Draws a cube with extents -1 to 1 given the model, view, and projection matrices provided and using t...
    +
    void DrawArrow(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, Point3 p, Vector3 dir, float radius)
    Draws an arrow originating at point p and extending in the direction and length specified by dir.
    +
    void DrawLines(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const std::vector< Point3 > &points, LinesType linesType, float radius)
    Draws a series of line segments.
    +
    A wrapper around GLSL shader programs.
    +
    A wrapper around a 2D texture that supports loading images from files or setting texture color data d...
    Definition: texture2d.h:42
    +
    A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
    Definition: vector3.h:62
    + + + + +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    + + + + +
    + + + + + diff --git a/dev/MinGfx/docs/html/ray_8h.html b/dev/MinGfx/docs/html/ray_8h.html new file mode 100644 index 0000000..2078015 --- /dev/null +++ b/dev/MinGfx/docs/html/ray_8h.html @@ -0,0 +1,122 @@ + + + + + + + +MinGfx Toolkit: src/ray.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ray.h File Reference
    +
    +
    +
    #include <iostream>
    +#include "aabb.h"
    +#include "point3.h"
    +#include "vector3.h"
    +#include "mesh.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Ray
     Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a direction (a unit 3D vector). More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    + + + + + +

    +Functions

    std::ostream & mingfx::operator<< (std::ostream &os, const Ray &r)
     
    std::istream & mingfx::operator>> (std::istream &is, Ray &r)
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/ray_8h_source.html b/dev/MinGfx/docs/html/ray_8h_source.html new file mode 100644 index 0000000..cf44f40 --- /dev/null +++ b/dev/MinGfx/docs/html/ray_8h_source.html @@ -0,0 +1,202 @@ + + + + + + + +MinGfx Toolkit: src/ray.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ray.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_RAY_H_
    +
    15 #define SRC_RAY_H_
    +
    16 
    +
    17 #include <iostream>
    +
    18 
    +
    19 #include "aabb.h"
    +
    20 #include "point3.h"
    +
    21 #include "vector3.h"
    +
    22 #include "mesh.h"
    +
    23 
    +
    24 
    +
    25 namespace mingfx {
    +
    26 
    +
    27 
    +
    54 class Ray {
    +
    55 public:
    +
    56 
    +
    58  Ray();
    +
    59 
    +
    61  Ray(const Point3 &origin, const Vector3 &direction);
    +
    62 
    +
    64  virtual ~Ray();
    +
    65 
    +
    67  bool operator==(const Ray& other) const;
    +
    68 
    +
    70  bool operator!=(const Ray& other) const;
    +
    71 
    +
    73  float Length() const;
    +
    74 
    +
    81  bool IntersectPlane(const Point3 &planePt, const Vector3 &planeNormal,
    +
    82  float *iTime, Point3 *iPoint) const;
    +
    83 
    +
    90  bool IntersectTriangle(const Point3 &v1, const Point3 &v2, const Point3 &v3,
    +
    91  float *iTime, Point3 *iPoint) const;
    +
    92 
    +
    99  bool IntersectQuad(const Point3 &v1, const Point3 &v2, const Point3 &v3, const Point3 &v4,
    +
    100  float *iTime, Point3 *iPoint) const;
    +
    101 
    +
    106  bool IntersectSphere(const Point3 &center, float radius,
    +
    107  float *iTime, Point3 *iPoint) const;
    +
    108 
    +
    114  bool IntersectMesh(const Mesh &mesh, float *iTime,
    +
    115  Point3 *iPoint, int *iTriangleID) const;
    +
    116 
    +
    126  bool FastIntersectMesh(Mesh *mesh, float *iTime,
    +
    127  Point3 *iPoint, int *iTriangleID) const;
    +
    128 
    +
    142  bool IntersectAABB(const AABB &box, float *iTime) const;
    +
    143 
    +
    145  Point3 origin() const;
    +
    146 
    + +
    149 
    +
    151  void set(Point3 newOrigin, Vector3 newDir);
    +
    152 
    +
    153 private:
    +
    154  Point3 p_;
    +
    155  Vector3 d_;
    +
    156 };
    +
    157 
    +
    158 
    +
    159 // --- Stream operators ---
    +
    160 
    +
    161 std::ostream & operator<< ( std::ostream &os, const Ray &r);
    +
    162 std::istream & operator>> ( std::istream &is, Ray &r);
    +
    163 
    +
    164 
    +
    165 } // end namespace
    +
    166 
    +
    167 #endif
    + +
    A 3D axis-aligned bounding box defined by two corners (min and max).
    Definition: aabb.h:31
    +
    A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.
    Definition: mesh.h:127
    +
    A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
    Definition: point3.h:52
    +
    Stores the mathematical object of a ray that begins at an origin (a 3D point) and points in a directi...
    Definition: ray.h:54
    +
    bool IntersectTriangle(const Point3 &v1, const Point3 &v2, const Point3 &v3, float *iTime, Point3 *iPoint) const
    Checks to see if the ray intersects a triangle defined by the vertices v1, v2, and v3.
    +
    Point3 origin() const
    Returns the origin.
    +
    bool IntersectQuad(const Point3 &v1, const Point3 &v2, const Point3 &v3, const Point3 &v4, float *iTime, Point3 *iPoint) const
    Checks to see if the ray intersects a quad defined by the vertices v1, v2, v3, and v4.
    +
    float Length() const
    Returns the length of the direction vector.
    +
    bool IntersectAABB(const AABB &box, float *iTime) const
    Checks to see if the ray intersects an AABB (Axis-Aligned Bounding Box).
    +
    void set(Point3 newOrigin, Vector3 newDir)
    Sets a new origin and direction.
    +
    bool IntersectMesh(const Mesh &mesh, float *iTime, Point3 *iPoint, int *iTriangleID) const
    Checks to see if the ray intersects a triangle mesh.
    +
    Vector3 direction() const
    Returns the direction.
    +
    bool IntersectPlane(const Point3 &planePt, const Vector3 &planeNormal, float *iTime, Point3 *iPoint) const
    Checks to see if the ray intersects a plane defined by a point and a normal.
    +
    bool operator==(const Ray &other) const
    Check for "equality", taking floating point imprecision into account.
    +
    bool IntersectSphere(const Point3 &center, float radius, float *iTime, Point3 *iPoint) const
    Checks to see if the ray intersects a sphere defined by a center point and a radius.
    +
    Ray(const Point3 &origin, const Vector3 &direction)
    Creates a ray from a 3D origin and direction.
    +
    bool operator!=(const Ray &other) const
    Check for "inequality", taking floating point imprecision into account.
    +
    virtual ~Ray()
    Ray destructor.
    +
    bool FastIntersectMesh(Mesh *mesh, float *iTime, Point3 *iPoint, int *iTriangleID) const
    Checks to see if the ray intersects a triangle mesh.
    +
    Ray()
    Defaults to a ray at the origin and pointing in the -Z direction.
    +
    A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
    Definition: vector3.h:62
    + +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    +
    std::ostream & operator<<(std::ostream &os, const Color &c)
    +
    std::istream & operator>>(std::istream &is, Color &c)
    + + +
    + + + + + diff --git a/dev/MinGfx/docs/html/search/all_0.html b/dev/MinGfx/docs/html/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_0.js b/dev/MinGfx/docs/html/search/all_0.js new file mode 100644 index 0000000..fd5078e --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_0.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['aabb_0',['AABB',['../classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb',1,'mingfx::AABB::AABB()'],['../classmingfx_1_1_a_a_b_b.html#a5bf74f4e7f64adae9ea66f213a4012d1',1,'mingfx::AABB::AABB(const Point3 &a)'],['../classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf',1,'mingfx::AABB::AABB(const Point3 &a, const Point3 &b, const Point3 &c)'],['../classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8',1,'mingfx::AABB::AABB(const Vector3 &extents)'],['../classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1',1,'mingfx::AABB::AABB(const Point3 &center, const Vector3 &extents)'],['../classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09',1,'mingfx::AABB::AABB(const Mesh &mesh)'],['../classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9',1,'mingfx::AABB::AABB(const Mesh &mesh, unsigned int tri_id)'],['../classmingfx_1_1_a_a_b_b.html',1,'mingfx::AABB']]], + ['aabb_2eh_1',['aabb.h',['../aabb_8h.html',1,'']]], + ['active_5fhead_2',['active_head',['../structstbrp__context.html#a13277239636803aff28f00b0a0376120',1,'stbrp_context']]], + ['addfragmentshaderfromfile_3',['AddFragmentShaderFromFile',['../classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0',1,'mingfx::ShaderProgram']]], + ['addfragmentshaderfromsource_4',['AddFragmentShaderFromSource',['../classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c',1,'mingfx::ShaderProgram']]], + ['addlight_5',['AddLight',['../classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c',1,'mingfx::DefaultShader']]], + ['addtriangle_6',['AddTriangle',['../classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a',1,'mingfx::Mesh']]], + ['addvertexshaderfromfile_7',['AddVertexShaderFromFile',['../classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5',1,'mingfx::ShaderProgram']]], + ['addvertexshaderfromsource_8',['AddVertexShaderFromSource',['../classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d',1,'mingfx::ShaderProgram']]], + ['advanceanimation_9',['AdvanceAnimation',['../classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c',1,'mingfx::UniCam']]], + ['align_10',['Align',['../classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d',1,'mingfx::Matrix4']]], + ['align_11',['align',['../structstbrp__context.html#ae36053e2001a725aec2b5756dc990481',1,'stbrp_context']]], + ['ambient_5fintensity_12',['ambient_intensity',['../classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb',1,'mingfx::DefaultShader::LightProperties']]], + ['ambient_5freflectance_13',['ambient_reflectance',['../classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657',1,'mingfx::DefaultShader::MaterialProperties']]], + ['api_20_2d_20mingfx_20programming_20reference_20organized_20by_20topic_14',['API - MinGfx Programming Reference Organized by Topic',['../api.html',1,'']]], + ['api_2emd_15',['api.md',['../api_8md.html',1,'']]], + ['aspect_5fratio_16',['aspect_ratio',['../classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_1.html b/dev/MinGfx/docs/html/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_1.js b/dev/MinGfx/docs/html/search/all_1.js new file mode 100644 index 0000000..057894e --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['bindtexture_17',['BindTexture',['../classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2',1,'mingfx::ShaderProgram::BindTexture(const std::string &name, const Texture2D &tex)'],['../classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96',1,'mingfx::ShaderProgram::BindTexture(const std::string &name, const Texture2D &tex, int texUnit)']]], + ['buildbvh_18',['BuildBVH',['../classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1',1,'mingfx::Mesh']]], + ['bvh_19',['BVH',['../classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75',1,'mingfx::BVH::BVH()'],['../classmingfx_1_1_b_v_h.html',1,'mingfx::BVH']]], + ['bvh_2eh_20',['bvh.h',['../bvh_8h.html',1,'']]], + ['bvh_5fptr_21',['bvh_ptr',['../classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4',1,'mingfx::Mesh']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_10.html b/dev/MinGfx/docs/html/search/all_10.html new file mode 100644 index 0000000..3bf1196 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_10.js b/dev/MinGfx/docs/html/search/all_10.js new file mode 100644 index 0000000..4c6a3f0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_10.js @@ -0,0 +1,53 @@ +var searchData= +[ + ['scale_225',['Scale',['../classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e',1,'mingfx::Matrix4']]], + ['screen_226',['screen',['../classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16',1,'mingfx::GraphicsApp']]], + ['screentodepthplane_227',['ScreenToDepthPlane',['../classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67',1,'mingfx::GfxMath']]], + ['screentonearplane_228',['ScreenToNearPlane',['../classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0',1,'mingfx::GfxMath']]], + ['screentoworld_229',['ScreenToWorld',['../classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273',1,'mingfx::GfxMath']]], + ['set_230',['set',['../classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071',1,'mingfx::Ray']]], + ['set_5fdefault_5fdepth_231',['set_default_depth',['../classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068',1,'mingfx::UniCam']]], + ['set_5ffilter_5fmode_232',['set_filter_mode',['../classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013',1,'mingfx::Texture2D']]], + ['set_5flook_5fscale_233',['set_look_scale',['../classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44',1,'mingfx::CraftCam']]], + ['set_5frotation_5fscale_234',['set_rotation_scale',['../classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831',1,'mingfx::CraftCam']]], + ['set_5ftranslation_5fscale_235',['set_translation_scale',['../classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7',1,'mingfx::CraftCam']]], + ['set_5fuser_5fdata_236',['set_user_data',['../classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b',1,'mingfx::AABB']]], + ['set_5fview_5fmatrix_237',['set_view_matrix',['../classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8',1,'mingfx::CraftCam::set_view_matrix()'],['../classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b',1,'mingfx::UniCam::set_view_matrix()']]], + ['set_5fwrap_5fmode_238',['set_wrap_mode',['../classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f',1,'mingfx::Texture2D']]], + ['setcolors_239',['SetColors',['../classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f',1,'mingfx::Mesh::SetColors(int triangle_id, Color c1, Color c2, Color c3)'],['../classmingfx_1_1_mesh.html#ab9b05a77591a9adad12032d513256dae',1,'mingfx::Mesh::SetColors(const std::vector< Color > &colors)'],['../classmingfx_1_1_mesh.html#aed172bdd77858f3b59978cb8527e19ae',1,'mingfx::Mesh::SetColors(float *colors_array, int num_colors)']]], + ['setindices_240',['SetIndices',['../classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581',1,'mingfx::Mesh::SetIndices(const std::vector< unsigned int > index_array)'],['../classmingfx_1_1_mesh.html#a84711746b8d37c8d9b12ae748a4c5b8c',1,'mingfx::Mesh::SetIndices(unsigned int *index_array, int num_indices)']]], + ['setinstancetransforms_241',['SetInstanceTransforms',['../classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87',1,'mingfx::Mesh']]], + ['setlight_242',['SetLight',['../classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6',1,'mingfx::DefaultShader']]], + ['setnormals_243',['SetNormals',['../classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903',1,'mingfx::Mesh::SetNormals(int triangle_id, Vector3 n1, Vector3 n2, Vector3 n3)'],['../classmingfx_1_1_mesh.html#ad28dbd5b0ab77bec28f30f618dd9e57d',1,'mingfx::Mesh::SetNormals(const std::vector< Vector3 > &norms)'],['../classmingfx_1_1_mesh.html#a6ab1128fab6f969564d3a1329baeade6',1,'mingfx::Mesh::SetNormals(float *norms_array, int num_norms)']]], + ['settexcoords_244',['SetTexCoords',['../classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3',1,'mingfx::Mesh::SetTexCoords(int triangle_id, int texture_unit, Point2 uv1, Point2 uv2, Point2 uv3)'],['../classmingfx_1_1_mesh.html#aba2dfd0ade2d8a728897d411ef3fdaf1',1,'mingfx::Mesh::SetTexCoords(int texture_unit, const std::vector< Point2 > &tex_coords)'],['../classmingfx_1_1_mesh.html#ac9cd4e8d67bb70295a48fcbc72ae32f9',1,'mingfx::Mesh::SetTexCoords(int texture_unit, float *tex_coords_array, int num_tex_coords)']]], + ['setuniform_245',['SetUniform',['../classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Vector3 &v)'],['../classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Matrix4 &m)'],['../classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Color &c)'],['../classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, int i)'],['../classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, unsigned int ui)'],['../classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, float f)'],['../classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Point2 &p)'],['../classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Vector2 &v)'],['../classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Point3 &p)']]], + ['setuniformarray1_246',['SetUniformArray1',['../classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &name, float *f, int count)']]], + ['setuniformarray2_247',['SetUniformArray2',['../classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &name, float *f, int count)']]], + ['setuniformarray3_248',['SetUniformArray3',['../classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &name, float *f, int count)']]], + ['setuniformarray4_249',['SetUniformArray4',['../classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &name, float *f, int count)']]], + ['setvertices_250',['SetVertices',['../classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6',1,'mingfx::Mesh::SetVertices(const std::vector< Point3 > &verts)'],['../classmingfx_1_1_mesh.html#a033076b9bf1714c9b9e0eeef11ebcd49',1,'mingfx::Mesh::SetVertices(float *verts_array, int num_verts)']]], + ['shader_5fprogram_2eh_251',['shader_program.h',['../shader__program_8h.html',1,'']]], + ['shaderprogram_252',['ShaderProgram',['../classmingfx_1_1_shader_program.html',1,'mingfx::ShaderProgram'],['../classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700',1,'mingfx::ShaderProgram::ShaderProgram()']]], + ['shinniness_253',['shinniness',['../classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13',1,'mingfx::DefaultShader::MaterialProperties']]], + ['size_254',['size',['../classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0',1,'mingfx::TextShader::TextFormat']]], + ['slerp_255',['Slerp',['../classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22',1,'mingfx::Quaternion::Slerp(const Quaternion &other, float alpha) const'],['../classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133',1,'mingfx::Quaternion::Slerp(const Quaternion &a, const Quaternion &b, float alpha)']]], + ['specular_5fintensity_256',['specular_intensity',['../classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4',1,'mingfx::DefaultShader::LightProperties']]], + ['specular_5freflectance_257',['specular_reflectance',['../classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c',1,'mingfx::DefaultShader::MaterialProperties']]], + ['stb_5frect_5fpack_2eh_258',['stb_rect_pack.h',['../stb__rect__pack_8h.html',1,'']]], + ['stb_5frect_5fpack_5fversion_259',['STB_RECT_PACK_VERSION',['../stb__rect__pack_8h.html#af2f15dfcc6ad60b1df4f5902e2cc25ce',1,'stb_rect_pack.h']]], + ['stbrp_5fcontext_260',['stbrp_context',['../structstbrp__context.html',1,'stbrp_context'],['../stb__rect__pack_8h.html#a0455046a8d5457bbc4f3f3ec995c338f',1,'stbrp_context(): stb_rect_pack.h']]], + ['stbrp_5fcoord_261',['stbrp_coord',['../stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9',1,'stb_rect_pack.h']]], + ['stbrp_5fdef_262',['STBRP_DEF',['../stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753',1,'stb_rect_pack.h']]], + ['stbrp_5fheuristic_5fskyline_5fbf_5fsortheight_263',['STBRP_HEURISTIC_Skyline_BF_sortHeight',['../stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c',1,'stb_rect_pack.h']]], + ['stbrp_5fheuristic_5fskyline_5fbl_5fsortheight_264',['STBRP_HEURISTIC_Skyline_BL_sortHeight',['../stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a',1,'stb_rect_pack.h']]], + ['stbrp_5fheuristic_5fskyline_5fdefault_265',['STBRP_HEURISTIC_Skyline_default',['../stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525',1,'stb_rect_pack.h']]], + ['stbrp_5finit_5ftarget_266',['stbrp_init_target',['../stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c',1,'stb_rect_pack.h']]], + ['stbrp_5fnode_267',['stbrp_node',['../structstbrp__node.html',1,'stbrp_node'],['../stb__rect__pack_8h.html#ae8f871c209d2e6218baf9c0e2a209ea1',1,'stbrp_node(): stb_rect_pack.h']]], + ['stbrp_5fpack_5frects_268',['stbrp_pack_rects',['../stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba',1,'stb_rect_pack.h']]], + ['stbrp_5frect_269',['stbrp_rect',['../structstbrp__rect.html',1,'stbrp_rect'],['../stb__rect__pack_8h.html#a7c4a99b31ea2207a0b2bbcbdab8f3840',1,'stbrp_rect(): stb_rect_pack.h']]], + ['stbrp_5fsetup_5fallow_5fout_5fof_5fmem_270',['stbrp_setup_allow_out_of_mem',['../stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda',1,'stb_rect_pack.h']]], + ['stbrp_5fsetup_5fheuristic_271',['stbrp_setup_heuristic',['../stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1',1,'stb_rect_pack.h']]], + ['stopprogram_272',['StopProgram',['../classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67',1,'mingfx::DefaultShader::StopProgram()'],['../classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da',1,'mingfx::ShaderProgram::StopProgram()']]], + ['subdeterminant_273',['SubDeterminant',['../classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481',1,'mingfx::Matrix4']]], + ['surface_5ftexture_274',['surface_texture',['../classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e',1,'mingfx::DefaultShader::MaterialProperties']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_11.html b/dev/MinGfx/docs/html/search/all_11.html new file mode 100644 index 0000000..c9f79d2 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_11.js b/dev/MinGfx/docs/html/search/all_11.js new file mode 100644 index 0000000..7e7fecc --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_11.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['text_5fshader_2eh_275',['text_shader.h',['../text__shader_8h.html',1,'']]], + ['textextents_276',['TextExtents',['../classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28',1,'mingfx::TextShader']]], + ['textformat_277',['TextFormat',['../classmingfx_1_1_text_shader_1_1_text_format.html',1,'mingfx::TextShader::TextFormat'],['../classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb',1,'mingfx::TextShader::TextFormat::TextFormat()']]], + ['textshader_278',['TextShader',['../classmingfx_1_1_text_shader.html',1,'mingfx::TextShader'],['../classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67',1,'mingfx::TextShader::TextShader()']]], + ['texture2d_279',['Texture2D',['../classmingfx_1_1_texture2_d.html',1,'mingfx::Texture2D'],['../classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d',1,'mingfx::Texture2D::Texture2D()']]], + ['texture2d_2eh_280',['texture2d.h',['../texture2d_8h.html',1,'']]], + ['todegrees_281',['ToDegrees',['../classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3',1,'mingfx::GfxMath::ToDegrees(float radians)'],['../classmingfx_1_1_gfx_math.html#aa5411a7d8bfc8e47d596362a328dbde8',1,'mingfx::GfxMath::ToDegrees(Vector3 radians)']]], + ['toeulerangleszyx_282',['ToEulerAnglesZYX',['../classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007',1,'mingfx::Quaternion']]], + ['toradians_283',['ToRadians',['../classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637',1,'mingfx::GfxMath::ToRadians(float degrees)'],['../classmingfx_1_1_gfx_math.html#a38927f1f8ea4625d909e64efa93c5190',1,'mingfx::GfxMath::ToRadians(Vector3 degrees)']]], + ['tounit_284',['ToUnit',['../classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03',1,'mingfx::Quaternion::ToUnit()'],['../classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83',1,'mingfx::Vector2::ToUnit()'],['../classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71',1,'mingfx::Vector3::ToUnit()']]], + ['tovector_285',['ToVector',['../classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b',1,'mingfx::Color::ToVector()'],['../classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db',1,'mingfx::Matrix4::ToVector() const']]], + ['translation_286',['Translation',['../classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84',1,'mingfx::Matrix4']]], + ['translation_5fscale_287',['translation_scale',['../classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2',1,'mingfx::CraftCam']]], + ['transpose_288',['Transpose',['../classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850',1,'mingfx::Matrix4']]], + ['two_5fpi_289',['TWO_PI',['../classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69',1,'mingfx::GfxMath']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_12.html b/dev/MinGfx/docs/html/search/all_12.html new file mode 100644 index 0000000..ab93472 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_12.js b/dev/MinGfx/docs/html/search/all_12.js new file mode 100644 index 0000000..98f79d0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_12.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['unicam_290',['UniCam',['../classmingfx_1_1_uni_cam.html',1,'mingfx::UniCam'],['../classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e',1,'mingfx::UniCam::UniCam()'],['../classmingfx_1_1_uni_cam.html#af507e639c4bceb4c79e21a6f80c48d07',1,'mingfx::UniCam::UniCam(const Matrix4 &initialViewMatrix)']]], + ['unicam_2eh_291',['unicam.h',['../unicam_8h.html',1,'']]], + ['unitx_292',['UnitX',['../classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb',1,'mingfx::Vector2::UnitX()'],['../classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922',1,'mingfx::Vector3::UnitX()']]], + ['unity_293',['UnitY',['../classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0',1,'mingfx::Vector2::UnitY()'],['../classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df',1,'mingfx::Vector3::UnitY()']]], + ['unitz_294',['UnitZ',['../classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61',1,'mingfx::Vector3']]], + ['updatefrombytes_295',['UpdateFromBytes',['../classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c',1,'mingfx::Texture2D']]], + ['updatefromfloats_296',['UpdateFromFloats',['../classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693',1,'mingfx::Texture2D']]], + ['updategpumemory_297',['UpdateGPUMemory',['../classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e',1,'mingfx::Mesh']]], + ['updateheight_298',['UpdateHeight',['../classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b',1,'mingfx::CraftCam']]], + ['updatesimulation_299',['UpdateSimulation',['../classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7',1,'mingfx::CraftCam::UpdateSimulation()'],['../classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa',1,'mingfx::GraphicsApp::UpdateSimulation()']]], + ['updatetriangle_300',['UpdateTriangle',['../classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044',1,'mingfx::Mesh']]], + ['useprogram_301',['UseProgram',['../classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0',1,'mingfx::DefaultShader::UseProgram()'],['../classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e',1,'mingfx::ShaderProgram::UseProgram()']]], + ['user_5fdata_302',['user_data',['../classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843',1,'mingfx::AABB']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_13.html b/dev/MinGfx/docs/html/search/all_13.html new file mode 100644 index 0000000..51172c2 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_13.js b/dev/MinGfx/docs/html/search/all_13.js new file mode 100644 index 0000000..867131d --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_13.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['v_5falign_303',['v_align',['../classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7',1,'mingfx::TextShader::TextFormat']]], + ['value_5fptr_304',['value_ptr',['../classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0',1,'mingfx::Color::value_ptr()'],['../classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c',1,'mingfx::Matrix4::value_ptr()'],['../classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc',1,'mingfx::Point2::value_ptr()'],['../classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c',1,'mingfx::Point3::value_ptr()'],['../classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9',1,'mingfx::Quaternion::value_ptr()'],['../classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1',1,'mingfx::Vector2::value_ptr()'],['../classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331',1,'mingfx::Vector3::value_ptr()']]], + ['vector2_305',['Vector2',['../classmingfx_1_1_vector2.html',1,'mingfx::Vector2'],['../classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f',1,'mingfx::Vector2::Vector2()'],['../classmingfx_1_1_vector2.html#acc16337b6b06ebea2fde4c4bd1be7abd',1,'mingfx::Vector2::Vector2(float x, float y)'],['../classmingfx_1_1_vector2.html#a6e3d063a7080bfe199acc70cd5afded2',1,'mingfx::Vector2::Vector2(float *v)'],['../classmingfx_1_1_vector2.html#a40f53939581f5d06a1b757b0398525f8',1,'mingfx::Vector2::Vector2(const Vector2 &v)']]], + ['vector2_2eh_306',['vector2.h',['../vector2_8h.html',1,'']]], + ['vector3_307',['Vector3',['../classmingfx_1_1_vector3.html',1,'mingfx::Vector3'],['../classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd',1,'mingfx::Vector3::Vector3()'],['../classmingfx_1_1_vector3.html#a256018f34e230d542027d07d14fd6e65',1,'mingfx::Vector3::Vector3(float x, float y, float z)'],['../classmingfx_1_1_vector3.html#a95b274c7a5ff118af20bc71682c6b1f1',1,'mingfx::Vector3::Vector3(float *v)'],['../classmingfx_1_1_vector3.html#af6100965af7770f833dbf0c9f30f4fdd',1,'mingfx::Vector3::Vector3(const Vector3 &v)']]], + ['vector3_2eh_308',['vector3.h',['../vector3_8h.html',1,'']]], + ['vert_5falign_5fbaseline_309',['VERT_ALIGN_BASELINE',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa0400d0d77ea6770b313eedaf36fe71bb',1,'mingfx::TextShader']]], + ['vert_5falign_5fbottom_310',['VERT_ALIGN_BOTTOM',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa080e12cacc0f01b361c8b93c73dd2e28',1,'mingfx::TextShader']]], + ['vert_5falign_5fcenter_311',['VERT_ALIGN_CENTER',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aac49ae9c9553284e44f90228b9ce647af',1,'mingfx::TextShader']]], + ['vert_5falign_5ftop_312',['VERT_ALIGN_TOP',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa970e4fcd7c426e6cd49709119fba6e04',1,'mingfx::TextShader']]], + ['vertalign_313',['VertAlign',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a',1,'mingfx::TextShader']]], + ['view_5fmatrix_314',['view_matrix',['../classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36',1,'mingfx::CraftCam::view_matrix()'],['../classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3',1,'mingfx::UniCam::view_matrix()']]], + ['volume_315',['Volume',['../classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9',1,'mingfx::AABB']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_14.html b/dev/MinGfx/docs/html/search/all_14.html new file mode 100644 index 0000000..afecf56 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_14.js b/dev/MinGfx/docs/html/search/all_14.js new file mode 100644 index 0000000..f9e92e4 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_14.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['w_316',['w',['../structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5',1,'stbrp_rect::w()'],['../classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8',1,'mingfx::Point2::w()'],['../classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e',1,'mingfx::Point3::w()'],['../classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7',1,'mingfx::Quaternion::w()'],['../classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831',1,'mingfx::Vector2::w()'],['../classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5',1,'mingfx::Vector3::w()']]], + ['was_5fpacked_317',['was_packed',['../structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49',1,'stbrp_rect']]], + ['width_318',['width',['../structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2',1,'stbrp_context::width()'],['../classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869',1,'mingfx::Texture2D::width()']]], + ['window_319',['window',['../classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94',1,'mingfx::GraphicsApp']]], + ['window_5fheight_320',['window_height',['../classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016',1,'mingfx::GraphicsApp']]], + ['window_5fwidth_321',['window_width',['../classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0',1,'mingfx::GraphicsApp']]], + ['wrap_5fmode_322',['wrap_mode',['../classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea',1,'mingfx::Texture2D']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_15.html b/dev/MinGfx/docs/html/search/all_15.html new file mode 100644 index 0000000..69f382b --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_15.js b/dev/MinGfx/docs/html/search/all_15.js new file mode 100644 index 0000000..103250f --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x_323',['x',['../structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18',1,'stbrp_rect::x()'],['../structstbrp__node.html#a45ab31a88025db27d08040d715b129ea',1,'stbrp_node::x()'],['../classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa',1,'mingfx::Point2::x()'],['../classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5',1,'mingfx::Point3::x()'],['../classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae',1,'mingfx::Quaternion::x()'],['../classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a',1,'mingfx::Vector2::x()'],['../classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4',1,'mingfx::Vector3::x()']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_16.html b/dev/MinGfx/docs/html/search/all_16.html new file mode 100644 index 0000000..b19867a --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_16.js b/dev/MinGfx/docs/html/search/all_16.js new file mode 100644 index 0000000..5eded29 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['y_324',['y',['../structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa',1,'stbrp_rect::y()'],['../structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e',1,'stbrp_node::y()'],['../classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8',1,'mingfx::Point2::y()'],['../classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545',1,'mingfx::Point3::y()'],['../classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b',1,'mingfx::Quaternion::y()'],['../classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b',1,'mingfx::Vector2::y()'],['../classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17',1,'mingfx::Vector3::y()']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_17.html b/dev/MinGfx/docs/html/search/all_17.html new file mode 100644 index 0000000..1ad5d34 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_17.js b/dev/MinGfx/docs/html/search/all_17.js new file mode 100644 index 0000000..8934ca2 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_17.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['z_325',['z',['../classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6',1,'mingfx::Point3::z()'],['../classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f',1,'mingfx::Quaternion::z()'],['../classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6',1,'mingfx::Vector3::z()']]], + ['zero_326',['Zero',['../classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f',1,'mingfx::Point2::Zero()'],['../classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed',1,'mingfx::Point3::Zero()'],['../classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf',1,'mingfx::Vector2::Zero()'],['../classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714',1,'mingfx::Vector3::Zero()']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_18.html b/dev/MinGfx/docs/html/search/all_18.html new file mode 100644 index 0000000..507d0f8 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_18.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_18.js b/dev/MinGfx/docs/html/search/all_18.js new file mode 100644 index 0000000..e80a560 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_18.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['_7eaabb_327',['~AABB',['../classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5',1,'mingfx::AABB']]], + ['_7ebvh_328',['~BVH',['../classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269',1,'mingfx::BVH']]], + ['_7ecolor_329',['~Color',['../classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378',1,'mingfx::Color']]], + ['_7ecraftcam_330',['~CraftCam',['../classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff',1,'mingfx::CraftCam']]], + ['_7edefaultshader_331',['~DefaultShader',['../classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba',1,'mingfx::DefaultShader']]], + ['_7egraphicsapp_332',['~GraphicsApp',['../classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb',1,'mingfx::GraphicsApp']]], + ['_7ematrix4_333',['~Matrix4',['../classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933',1,'mingfx::Matrix4']]], + ['_7emesh_334',['~Mesh',['../classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327',1,'mingfx::Mesh']]], + ['_7epoint2_335',['~Point2',['../classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a',1,'mingfx::Point2']]], + ['_7epoint3_336',['~Point3',['../classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a',1,'mingfx::Point3']]], + ['_7equaternion_337',['~Quaternion',['../classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc',1,'mingfx::Quaternion']]], + ['_7equickshapes_338',['~QuickShapes',['../classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046',1,'mingfx::QuickShapes']]], + ['_7eray_339',['~Ray',['../classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625',1,'mingfx::Ray']]], + ['_7eshaderprogram_340',['~ShaderProgram',['../classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4',1,'mingfx::ShaderProgram']]], + ['_7etextshader_341',['~TextShader',['../classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb',1,'mingfx::TextShader']]], + ['_7etexture2d_342',['~Texture2D',['../classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9',1,'mingfx::Texture2D']]], + ['_7eunicam_343',['~UniCam',['../classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e',1,'mingfx::UniCam']]], + ['_7evector2_344',['~Vector2',['../classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f',1,'mingfx::Vector2']]], + ['_7evector3_345',['~Vector3',['../classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969',1,'mingfx::Vector3']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_2.html b/dev/MinGfx/docs/html/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_2.js b/dev/MinGfx/docs/html/search/all_2.js new file mode 100644 index 0000000..e558fe7 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_2.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['calcperfacenormals_22',['CalcPerFaceNormals',['../classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7',1,'mingfx::Mesh']]], + ['calcpervertexnormals_23',['CalcPerVertexNormals',['../classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c',1,'mingfx::Mesh']]], + ['clamp_24',['Clamp',['../classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850',1,'mingfx::GfxMath']]], + ['closestpoint_25',['ClosestPoint',['../classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c',1,'mingfx::Point3']]], + ['closestpointonplane_26',['ClosestPointOnPlane',['../classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743',1,'mingfx::Point3']]], + ['cofactor_27',['Cofactor',['../classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91',1,'mingfx::Matrix4']]], + ['color_28',['Color',['../classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d',1,'mingfx::Color::Color()'],['../classmingfx_1_1_color.html#a81b442b8afcd157c260487081f25dcc3',1,'mingfx::Color::Color(float red, float green, float blue, float alpha=1.0)'],['../classmingfx_1_1_color.html#ab4d6c067128e779add5390d83ea3410e',1,'mingfx::Color::Color(float *p)'],['../classmingfx_1_1_color.html#a7e0ca85141895a108c852f59f7ca00b9',1,'mingfx::Color::Color(const std::vector< float > &vals)'],['../classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a',1,'mingfx::Color::Color(const Color &p)']]], + ['color_29',['color',['../classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7',1,'mingfx::TextShader::TextFormat']]], + ['color_30',['Color',['../classmingfx_1_1_color.html',1,'mingfx']]], + ['color_2eh_31',['color.h',['../color_8h.html',1,'']]], + ['columntopoint3_32',['ColumnToPoint3',['../classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd',1,'mingfx::Matrix4']]], + ['columntovector3_33',['ColumnToVector3',['../classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3',1,'mingfx::Matrix4']]], + ['conjugate_34',['Conjugate',['../classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584',1,'mingfx::Quaternion']]], + ['craft_5fcam_2eh_35',['craft_cam.h',['../craft__cam_8h.html',1,'']]], + ['craftcam_36',['CraftCam',['../classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171',1,'mingfx::CraftCam::CraftCam()'],['../classmingfx_1_1_craft_cam.html#ab9e1864b5859c22d27ba809b1ba7a51f',1,'mingfx::CraftCam::CraftCam(const Matrix4 &initial_view_matrix)'],['../classmingfx_1_1_craft_cam.html',1,'mingfx::CraftCam']]], + ['createfromlistofboxes_37',['CreateFromListOfBoxes',['../classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942',1,'mingfx::BVH']]], + ['createfrommesh_38',['CreateFromMesh',['../classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71',1,'mingfx::BVH']]], + ['cross_39',['Cross',['../classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec',1,'mingfx::Vector3::Cross(const Vector3 &v) const'],['../classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485',1,'mingfx::Vector3::Cross(const Vector3 &v1, const Vector3 &v2)']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_3.html b/dev/MinGfx/docs/html/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_3.js b/dev/MinGfx/docs/html/search/all_3.js new file mode 100644 index 0000000..21881e2 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_3.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['default_5fshader_40',['default_shader',['../classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b',1,'mingfx::QuickShapes']]], + ['default_5fshader_2eh_41',['default_shader.h',['../default__shader_8h.html',1,'']]], + ['defaultshader_42',['DefaultShader',['../classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428',1,'mingfx::DefaultShader::DefaultShader()'],['../classmingfx_1_1_default_shader.html',1,'mingfx::DefaultShader']]], + ['determinant_43',['Determinant',['../classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c',1,'mingfx::Matrix4']]], + ['diffuse_5fintensity_44',['diffuse_intensity',['../classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7',1,'mingfx::DefaultShader::LightProperties']]], + ['diffuse_5freflectance_45',['diffuse_reflectance',['../classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f',1,'mingfx::DefaultShader::MaterialProperties']]], + ['dimensions_46',['Dimensions',['../classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec',1,'mingfx::AABB']]], + ['direction_47',['direction',['../classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe',1,'mingfx::Ray']]], + ['distancetoplane_48',['DistanceToPlane',['../classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002',1,'mingfx::Point3']]], + ['dot_49',['Dot',['../classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f',1,'mingfx::Quaternion::Dot()'],['../classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9',1,'mingfx::Vector2::Dot(const Vector2 &v) const'],['../classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd',1,'mingfx::Vector2::Dot(const Vector2 &v1, const Vector2 &v2)'],['../classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88',1,'mingfx::Vector3::Dot(const Vector3 &v) const'],['../classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507',1,'mingfx::Vector3::Dot(const Vector3 &v1, const Vector3 &v2)']]], + ['draw_50',['Draw',['../classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b',1,'mingfx::DefaultShader::Draw()'],['../classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c',1,'mingfx::Mesh::Draw()'],['../classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d',1,'mingfx::UniCam::Draw()']]], + ['draw3d_51',['Draw3D',['../classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359',1,'mingfx::TextShader']]], + ['drawarrow_52',['DrawArrow',['../classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb',1,'mingfx::QuickShapes']]], + ['drawaxes_53',['DrawAxes',['../classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8',1,'mingfx::QuickShapes']]], + ['drawbrush_54',['DrawBrush',['../classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30',1,'mingfx::QuickShapes']]], + ['drawcone_55',['DrawCone',['../classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424',1,'mingfx::QuickShapes']]], + ['drawcube_56',['DrawCube',['../classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af',1,'mingfx::QuickShapes']]], + ['drawcylinder_57',['DrawCylinder',['../classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844',1,'mingfx::QuickShapes']]], + ['drawfullscreentexture_58',['DrawFullscreenTexture',['../classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868',1,'mingfx::QuickShapes']]], + ['drawlines_59',['DrawLines',['../classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf',1,'mingfx::QuickShapes']]], + ['drawlinesegment_60',['DrawLineSegment',['../classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e',1,'mingfx::QuickShapes']]], + ['drawsphere_61',['DrawSphere',['../classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744',1,'mingfx::QuickShapes']]], + ['drawsquare_62',['DrawSquare',['../classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3',1,'mingfx::QuickShapes::DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)'],['../classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc',1,'mingfx::QuickShapes::DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const Texture2D &texture)']]], + ['drawusingnanovg_63',['DrawUsingNanoVG',['../classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0',1,'mingfx::GraphicsApp']]], + ['drawusingopengl_64',['DrawUsingOpenGL',['../classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_4.html b/dev/MinGfx/docs/html/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_4.js b/dev/MinGfx/docs/html/search/all_4.js new file mode 100644 index 0000000..bebfed9 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['extra_65',['extra',['../structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624',1,'stbrp_context']]], + ['eye_66',['eye',['../classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150',1,'mingfx::CraftCam::eye()'],['../classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2',1,'mingfx::UniCam::eye()']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_5.html b/dev/MinGfx/docs/html/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_5.js b/dev/MinGfx/docs/html/search/all_5.js new file mode 100644 index 0000000..37d0ac9 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_5.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['fastintersectmesh_67',['FastIntersectMesh',['../classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc',1,'mingfx::Ray']]], + ['fileexists_68',['FileExists',['../classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92',1,'mingfx::Platform']]], + ['filter_5fmode_69',['filter_mode',['../classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b',1,'mingfx::Texture2D']]], + ['findfile_70',['FindFile',['../classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1',1,'mingfx::Platform::FindFile(const std::string &basename, const std::vector< std::string > &searchpath)'],['../classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2',1,'mingfx::Platform::FindFile(const std::string &basename, const std::string &searchpath)']]], + ['findmingfxdatafile_71',['FindMinGfxDataFile',['../classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b',1,'mingfx::Platform']]], + ['findmingfxshaderfile_72',['FindMinGfxShaderFile',['../classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169',1,'mingfx::Platform']]], + ['framebuffer_5fheight_73',['framebuffer_height',['../classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32',1,'mingfx::GraphicsApp']]], + ['framebuffer_5fwidth_74',['framebuffer_width',['../classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696',1,'mingfx::GraphicsApp']]], + ['free_5fhead_75',['free_head',['../structstbrp__context.html#a1336ae32373663847866cc65904c2839',1,'stbrp_context']]], + ['fromaxisangle_76',['FromAxisAngle',['../classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c',1,'mingfx::Quaternion']]], + ['fromeulerangleszyx_77',['FromEulerAnglesZYX',['../classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18',1,'mingfx::Quaternion']]], + ['fromrowmajorelements_78',['FromRowMajorElements',['../classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b',1,'mingfx::Matrix4']]], + ['frustum_79',['Frustum',['../classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722',1,'mingfx::Matrix4']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_6.html b/dev/MinGfx/docs/html/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_6.js b/dev/MinGfx/docs/html/search/all_6.js new file mode 100644 index 0000000..cdf66e4 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['gfxmath_80',['GfxMath',['../classmingfx_1_1_gfx_math.html',1,'mingfx']]], + ['gfxmath_2eh_81',['gfxmath.h',['../gfxmath_8h.html',1,'']]], + ['graphics_5fapp_2eh_82',['graphics_app.h',['../graphics__app_8h.html',1,'']]], + ['graphicsapp_83',['GraphicsApp',['../classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b',1,'mingfx::GraphicsApp::GraphicsApp()'],['../classmingfx_1_1_graphics_app.html',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_7.html b/dev/MinGfx/docs/html/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_7.js b/dev/MinGfx/docs/html/search/all_7.js new file mode 100644 index 0000000..90ad431 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_7.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['h_84',['h',['../structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398',1,'stbrp_rect']]], + ['h_5falign_85',['h_align',['../classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066',1,'mingfx::TextShader::TextFormat']]], + ['half_5fpi_86',['HALF_PI',['../classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0',1,'mingfx::GfxMath']]], + ['height_87',['height',['../structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7',1,'stbrp_context::height()'],['../classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88',1,'mingfx::Texture2D::height()']]], + ['heuristic_88',['heuristic',['../structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a',1,'stbrp_context']]], + ['horiz_5falign_5fcenter_89',['HORIZ_ALIGN_CENTER',['../classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca5089ab07b80a999b45667e5711cae1f4',1,'mingfx::TextShader']]], + ['horiz_5falign_5fleft_90',['HORIZ_ALIGN_LEFT',['../classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca8e6d89d62375493a3cc1fb5dba289f92',1,'mingfx::TextShader']]], + ['horiz_5falign_5fright_91',['HORIZ_ALIGN_RIGHT',['../classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca6999f9ad8384a34813e7535baf44f78b',1,'mingfx::TextShader']]], + ['horizalign_92',['HorizAlign',['../classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c',1,'mingfx::TextShader']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_8.html b/dev/MinGfx/docs/html/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_8.js b/dev/MinGfx/docs/html/search/all_8.js new file mode 100644 index 0000000..c3a9bd6 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_8.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['id_93',['id',['../structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a',1,'stbrp_rect']]], + ['ilerp_94',['iLerp',['../classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d',1,'mingfx::GfxMath']]], + ['init_95',['Init',['../classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3',1,'mingfx::DefaultShader::Init()'],['../classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3',1,'mingfx::TextShader::Init()']]], + ['init_5fmode_96',['init_mode',['../structstbrp__context.html#a007509feee322404083034e4c2d3dc5d',1,'stbrp_context']]], + ['initfrombytes_97',['InitFromBytes',['../classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944',1,'mingfx::Texture2D']]], + ['initfromfile_98',['InitFromFile',['../classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc',1,'mingfx::Texture2D']]], + ['initfromfloats_99',['InitFromFloats',['../classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8',1,'mingfx::Texture2D']]], + ['initgraphicscontext_100',['InitGraphicsContext',['../classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1',1,'mingfx::GraphicsApp']]], + ['initialized_101',['initialized',['../classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe',1,'mingfx::ShaderProgram::initialized()'],['../classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87',1,'mingfx::Texture2D::initialized()']]], + ['initnanogui_102',['InitNanoGUI',['../classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a',1,'mingfx::GraphicsApp']]], + ['initopengl_103',['InitOpenGL',['../classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3',1,'mingfx::GraphicsApp']]], + ['installation_20guide_104',['Installation Guide',['../installation.html',1,'']]], + ['installation_2emd_105',['installation.md',['../installation_8md.html',1,'']]], + ['intersectaabb_106',['IntersectAABB',['../classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7',1,'mingfx::Ray']]], + ['intersectandreturnuserdata_107',['IntersectAndReturnUserData',['../classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56',1,'mingfx::BVH']]], + ['intersectmesh_108',['IntersectMesh',['../classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f',1,'mingfx::Ray']]], + ['intersectplane_109',['IntersectPlane',['../classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24',1,'mingfx::Ray']]], + ['intersectquad_110',['IntersectQuad',['../classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3',1,'mingfx::Ray']]], + ['intersectsphere_111',['IntersectSphere',['../classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff',1,'mingfx::Ray']]], + ['intersecttriangle_112',['IntersectTriangle',['../classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734',1,'mingfx::Ray']]], + ['inverse_113',['Inverse',['../classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5',1,'mingfx::Matrix4']]], + ['iskeydown_114',['IsKeyDown',['../classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac',1,'mingfx::GraphicsApp']]], + ['isleftmousedown_115',['IsLeftMouseDown',['../classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7',1,'mingfx::GraphicsApp']]], + ['ismiddlemousedown_116',['IsMiddleMouseDown',['../classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434',1,'mingfx::GraphicsApp']]], + ['isrightmousedown_117',['IsRightMouseDown',['../classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_9.html b/dev/MinGfx/docs/html/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_9.js b/dev/MinGfx/docs/html/search/all_9.js new file mode 100644 index 0000000..5ca1017 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_9.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['length_118',['Length',['../classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a',1,'mingfx::Quaternion::Length()'],['../classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984',1,'mingfx::Ray::Length()'],['../classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9',1,'mingfx::Vector2::Length()'],['../classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3',1,'mingfx::Vector3::Length()']]], + ['lerp_119',['Lerp',['../classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4',1,'mingfx::Color::Lerp(const Color &b, float alpha) const'],['../classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363',1,'mingfx::Color::Lerp(const Color &a, const Color &b, float alpha)'],['../classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647',1,'mingfx::GfxMath::Lerp()'],['../classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6',1,'mingfx::Point2::Lerp(const Point2 &b, float alpha) const'],['../classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e',1,'mingfx::Point2::Lerp(const Point2 &a, const Point2 &b, float alpha)'],['../classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b',1,'mingfx::Point3::Lerp(const Point3 &b, float alpha) const'],['../classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74',1,'mingfx::Point3::Lerp(const Point3 &a, const Point3 &b, float alpha)'],['../classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17',1,'mingfx::Vector2::Lerp(const Vector2 &b, float alpha) const'],['../classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561',1,'mingfx::Vector2::Lerp(const Vector2 &a, const Vector2 &b, float alpha)'],['../classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6',1,'mingfx::Vector3::Lerp(const Vector3 &b, float alpha) const'],['../classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f',1,'mingfx::Vector3::Lerp(const Vector3 &a, const Vector3 &b, float alpha)']]], + ['light_120',['light',['../classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316',1,'mingfx::DefaultShader']]], + ['lightproperties_121',['LightProperties',['../classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3',1,'mingfx::DefaultShader::LightProperties::LightProperties()'],['../classmingfx_1_1_default_shader_1_1_light_properties.html',1,'mingfx::DefaultShader::LightProperties']]], + ['line_5floop_122',['LINE_LOOP',['../classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134',1,'mingfx::QuickShapes']]], + ['line_5fstrip_123',['LINE_STRIP',['../classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae64a4d2159ed46d077e21a505575c814',1,'mingfx::QuickShapes']]], + ['lines_124',['LINES',['../classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae585142391f356c60bcfe68279ec2727',1,'mingfx::QuickShapes']]], + ['linestype_125',['LinesType',['../classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603',1,'mingfx::QuickShapes']]], + ['linkprogram_126',['LinkProgram',['../classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794',1,'mingfx::ShaderProgram']]], + ['loadfromobj_127',['LoadFromOBJ',['../classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f',1,'mingfx::Mesh']]], + ['look_128',['look',['../classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859',1,'mingfx::CraftCam::look()'],['../classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40',1,'mingfx::UniCam::look()']]], + ['look_5fscale_129',['look_scale',['../classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb',1,'mingfx::CraftCam']]], + ['lookat_130',['LookAt',['../classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de',1,'mingfx::Matrix4']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_a.html b/dev/MinGfx/docs/html/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_a.js b/dev/MinGfx/docs/html/search/all_a.js new file mode 100644 index 0000000..fad4911 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_a.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['mainpage_2emd_131',['mainpage.md',['../mainpage_8md.html',1,'']]], + ['material_132',['material',['../classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272',1,'mingfx::QuickShapes']]], + ['materialproperties_133',['MaterialProperties',['../classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96',1,'mingfx::DefaultShader::MaterialProperties::MaterialProperties()'],['../classmingfx_1_1_default_shader_1_1_material_properties.html',1,'mingfx::DefaultShader::MaterialProperties']]], + ['matrix4_134',['Matrix4',['../classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22',1,'mingfx::Matrix4::Matrix4()'],['../classmingfx_1_1_matrix4.html#a09a366a3ef940ff355f8d5c521baa57d',1,'mingfx::Matrix4::Matrix4(const float *a)'],['../classmingfx_1_1_matrix4.html#a0abaeb690794c4a55e74c9b5fd82d138',1,'mingfx::Matrix4::Matrix4(const std::vector< float > &a)'],['../classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87',1,'mingfx::Matrix4::Matrix4(const Matrix4 &m2)'],['../classmingfx_1_1_matrix4.html',1,'mingfx::Matrix4']]], + ['matrix4_2eh_135',['matrix4.h',['../matrix4_8h.html',1,'']]], + ['max_136',['max',['../classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4',1,'mingfx::AABB']]], + ['max_5flights_137',['MAX_LIGHTS',['../classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24',1,'mingfx::DefaultShader']]], + ['mesh_138',['Mesh',['../classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9',1,'mingfx::Mesh::Mesh()'],['../classmingfx_1_1_mesh.html#a76b4977f0a7f156aa8a0027f10dcbdc1',1,'mingfx::Mesh::Mesh(const Mesh &other)'],['../classmingfx_1_1_mesh.html',1,'mingfx::Mesh']]], + ['mesh_2eh_139',['mesh.h',['../mesh_8h.html',1,'']]], + ['min_140',['min',['../classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6',1,'mingfx::AABB']]], + ['mingfx_141',['mingfx',['../namespacemingfx.html',1,'']]], + ['mingfx_20toolkit_20documentation_142',['MinGfx Toolkit Documentation',['../index.html',1,'']]], + ['mingfx_2eh_143',['mingfx.h',['../mingfx_8h.html',1,'']]], + ['mingfx_5fconfig_2eh_144',['mingfx_config.h',['../mingfx__config_8h.html',1,'']]], + ['mingfx_5fdata_5fdir_5fbuild_145',['MINGFX_DATA_DIR_BUILD',['../mingfx__config_8h.html#a9ab97d1e09bf7a864495329de5dc7e03',1,'mingfx_config.h']]], + ['mingfx_5fdata_5fdir_5finstall_146',['MINGFX_DATA_DIR_INSTALL',['../mingfx__config_8h.html#a1e44357d7f17eb50f842d9e39e55e398',1,'mingfx_config.h']]], + ['mingfx_5fmath_5fepsilon_147',['MINGFX_MATH_EPSILON',['../point2_8h.html#a432350d21fbc10d5e65eeeb6859511ea',1,'MINGFX_MATH_EPSILON(): point2.h'],['../point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea',1,'MINGFX_MATH_EPSILON(): point3.h']]], + ['mingfx_5fshaders_5fdir_5fbuild_148',['MINGFX_SHADERS_DIR_BUILD',['../mingfx__config_8h.html#a1908456b5481e0dbbe2b8252fa71d23f',1,'mingfx_config.h']]], + ['mingfx_5fshaders_5fdir_5finstall_149',['MINGFX_SHADERS_DIR_INSTALL',['../mingfx__config_8h.html#ab431df904057e50ac94550595473f5f4',1,'mingfx_config.h']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_b.html b/dev/MinGfx/docs/html/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_b.js b/dev/MinGfx/docs/html/search/all_b.js new file mode 100644 index 0000000..9dd041b --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_b.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['native_5ffont_5fsize_150',['native_font_size',['../classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d',1,'mingfx::TextShader']]], + ['next_151',['next',['../structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4',1,'stbrp_node']]], + ['normalize_152',['Normalize',['../classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2',1,'mingfx::Quaternion::Normalize()'],['../classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0',1,'mingfx::Vector2::Normalize()'],['../classmingfx_1_1_vector2.html#a06d6c283aba957bddc2b9849698838b2',1,'mingfx::Vector2::Normalize(const Vector2 &v)'],['../classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca',1,'mingfx::Vector3::Normalize()'],['../classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d',1,'mingfx::Vector3::Normalize(const Vector3 &v)']]], + ['normalizeddevicecoordstopixels_153',['NormalizedDeviceCoordsToPixels',['../classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248',1,'mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels(const Point2 &pointInNDC)'],['../classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93',1,'mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels(const Vector2 &pointInNDC)']]], + ['num_5flights_154',['num_lights',['../classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2',1,'mingfx::DefaultShader']]], + ['num_5fnodes_155',['num_nodes',['../structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58',1,'stbrp_context']]], + ['num_5ftriangles_156',['num_triangles',['../classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f',1,'mingfx::Mesh']]], + ['num_5fvertices_157',['num_vertices',['../classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d',1,'mingfx::Mesh']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_c.html b/dev/MinGfx/docs/html/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_c.js b/dev/MinGfx/docs/html/search/all_c.js new file mode 100644 index 0000000..807da6b --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_c.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['onbuttondown_158',['OnButtonDown',['../classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f',1,'mingfx::UniCam']]], + ['onbuttonup_159',['OnButtonUp',['../classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a',1,'mingfx::UniCam']]], + ['ondrag_160',['OnDrag',['../classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe',1,'mingfx::UniCam']]], + ['one_161',['One',['../classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8',1,'mingfx::Point2::One()'],['../classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece',1,'mingfx::Point3::One()'],['../classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd',1,'mingfx::Vector2::One()'],['../classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db',1,'mingfx::Vector3::One()']]], + ['onkeydown_162',['OnKeyDown',['../classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01',1,'mingfx::GraphicsApp']]], + ['onkeyrepeat_163',['OnKeyRepeat',['../classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0',1,'mingfx::GraphicsApp']]], + ['onkeyup_164',['OnKeyUp',['../classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c',1,'mingfx::GraphicsApp']]], + ['onleftmousedown_165',['OnLeftMouseDown',['../classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17',1,'mingfx::GraphicsApp']]], + ['onleftmousedrag_166',['OnLeftMouseDrag',['../classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b',1,'mingfx::GraphicsApp']]], + ['onleftmouseup_167',['OnLeftMouseUp',['../classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613',1,'mingfx::GraphicsApp']]], + ['onmiddlemousedown_168',['OnMiddleMouseDown',['../classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48',1,'mingfx::GraphicsApp']]], + ['onmiddlemousedrag_169',['OnMiddleMouseDrag',['../classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6',1,'mingfx::GraphicsApp']]], + ['onmiddlemouseup_170',['OnMiddleMouseUp',['../classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08',1,'mingfx::GraphicsApp']]], + ['onmousemove_171',['OnMouseMove',['../classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f',1,'mingfx::GraphicsApp::OnMouseMove()'],['../classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311',1,'mingfx::CraftCam::OnMouseMove()']]], + ['onrightmousedown_172',['OnRightMouseDown',['../classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c',1,'mingfx::GraphicsApp']]], + ['onrightmousedrag_173',['OnRightMouseDrag',['../classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7',1,'mingfx::GraphicsApp']]], + ['onrightmouseup_174',['OnRightMouseUp',['../classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3',1,'mingfx::GraphicsApp']]], + ['onspecialkeydown_175',['OnSpecialKeyDown',['../classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952',1,'mingfx::GraphicsApp']]], + ['onspecialkeyrepeat_176',['OnSpecialKeyRepeat',['../classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22',1,'mingfx::GraphicsApp']]], + ['onspecialkeyup_177',['OnSpecialKeyUp',['../classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14',1,'mingfx::GraphicsApp']]], + ['onwindowresize_178',['OnWindowResize',['../classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a',1,'mingfx::GraphicsApp']]], + ['opengl_5fheaders_2eh_179',['opengl_headers.h',['../opengl__headers_8h.html',1,'']]], + ['opengl_5fid_180',['opengl_id',['../classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504',1,'mingfx::Texture2D']]], + ['operator_21_3d_181',['operator!=',['../classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244',1,'mingfx::Color::operator!=()'],['../classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b',1,'mingfx::Matrix4::operator!=()'],['../classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84',1,'mingfx::Point2::operator!=()'],['../classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e',1,'mingfx::Point3::operator!=()'],['../classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e',1,'mingfx::Quaternion::operator!=()'],['../classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff',1,'mingfx::Ray::operator!=()'],['../classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb',1,'mingfx::Vector2::operator!=()'],['../classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016',1,'mingfx::Vector3::operator!=()']]], + ['operator_28_29_182',['operator()',['../classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9',1,'mingfx::Matrix4::operator()(const int row, const int col) const'],['../classmingfx_1_1_matrix4.html#a470bba77b8e3c47de7adaa18046e6096',1,'mingfx::Matrix4::operator()(const int row, const int col)']]], + ['operator_2a_183',['operator*',['../namespacemingfx.html#a0a456bccfb238b9644cf21669cf35b8c',1,'mingfx::operator*(const Quaternion &q1, const Quaternion &q2)'],['../namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4',1,'mingfx::operator*(const Matrix4 &m, const Ray &r)'],['../namespacemingfx.html#adb96b0188d1ceda03ed8d297817502c9',1,'mingfx::operator*(const Quaternion &q, const float s)'],['../namespacemingfx.html#a55f694123e83d1649c112e806359d4b6',1,'mingfx::operator*(const float s, const Quaternion &q)'],['../namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5',1,'mingfx::operator*(const Vector3 &v, const float s)'],['../namespacemingfx.html#a7e3941689c65388690916d00e0d423d4',1,'mingfx::operator*(const float s, const Vector3 &v)'],['../namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878',1,'mingfx::operator*(const Vector2 &v, const float s)'],['../namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432',1,'mingfx::operator*(const float s, const Vector2 &v)'],['../namespacemingfx.html#aadc0e86a31d54469e730669067b102c2',1,'mingfx::operator*(const Matrix4 &m1, const Matrix4 &m2)'],['../namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77',1,'mingfx::operator*(const Matrix4 &m, const Vector3 &v)'],['../namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80',1,'mingfx::operator*(const Matrix4 &m, const Point3 &p)'],['../namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb',1,'mingfx::operator*(const float &s, const Matrix4 &m)'],['../namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57',1,'mingfx::operator*(const Matrix4 &m, const float &s)']]], + ['operator_2b_184',['operator+',['../namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e',1,'mingfx::operator+(const Point2 &p, const Vector2 &v)'],['../namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf',1,'mingfx::operator+(const Vector2 &v, const Point2 &p)'],['../namespacemingfx.html#ad49375487853a642b3f372c95cff1a96',1,'mingfx::operator+(const Quaternion &q1, const Quaternion &q2)'],['../namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03',1,'mingfx::operator+(const AABB &A, const AABB &B)'],['../classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231',1,'mingfx::AABB::operator+()'],['../namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b',1,'mingfx::operator+(const Vector3 &v1, const Vector3 &v2)'],['../namespacemingfx.html#aadea317107a50ec6847ce01927b61c82',1,'mingfx::operator+(const Point3 &p, const Vector3 &v)'],['../namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e',1,'mingfx::operator+(const Vector3 &v, const Point3 &p)'],['../namespacemingfx.html#acdffada748181cc17ec93784f858ff9f',1,'mingfx::operator+(const Vector2 &v1, const Vector2 &v2)']]], + ['operator_2d_185',['operator-',['../namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6',1,'mingfx::operator-(const Quaternion &q)'],['../namespacemingfx.html#a61f2d974c78e8884bb64c2759e455101',1,'mingfx::operator-(const Quaternion &q1, const Quaternion &q2)'],['../namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f',1,'mingfx::operator-(const Vector2 &v)'],['../namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2',1,'mingfx::operator-(const Point2 &p, const Vector2 &v)'],['../namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b',1,'mingfx::operator-(const Vector2 &v1, const Vector2 &v2)'],['../namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8',1,'mingfx::operator-(const Point2 &p1, const Point2 &p2)'],['../namespacemingfx.html#afd07add6169773bae12d40201f8af7db',1,'mingfx::operator-(const Vector3 &v)'],['../namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db',1,'mingfx::operator-(const Point3 &p, const Vector3 &v)'],['../namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3',1,'mingfx::operator-(const Vector3 &v1, const Vector3 &v2)'],['../namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af',1,'mingfx::operator-(const Point3 &p1, const Point3 &p2)']]], + ['operator_2f_186',['operator/',['../namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed',1,'mingfx::operator/(const Quaternion &q, const float s)'],['../namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd',1,'mingfx::operator/(const Vector2 &v, const float s)'],['../namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a',1,'mingfx::operator/(const Vector3 &v, const float s)']]], + ['operator_3c_3c_187',['operator<<',['../namespacemingfx.html#a6bc967741341f4f318a505d884192906',1,'mingfx::operator<<(std::ostream &os, const Color &c)'],['../namespacemingfx.html#a1584104dea1f0a5636c868b67ddf6b10',1,'mingfx::operator<<(std::ostream &os, const Matrix4 &m)'],['../namespacemingfx.html#a58ddc500b8c3e12f8af4515f258540cb',1,'mingfx::operator<<(std::ostream &os, const Point2 &p)'],['../namespacemingfx.html#a53ce6bc4f4abdd3797d7af47adecbaf6',1,'mingfx::operator<<(std::ostream &os, const Point3 &p)'],['../namespacemingfx.html#ac4b78a682ff8d1ec298e0df7f742658d',1,'mingfx::operator<<(std::ostream &os, const Quaternion &q)'],['../namespacemingfx.html#ad7c839e598b7be6c1b407330dfacc980',1,'mingfx::operator<<(std::ostream &os, const Ray &r)'],['../namespacemingfx.html#acbe43aa24ecedf663c65becf2be282c7',1,'mingfx::operator<<(std::ostream &os, const Vector2 &v)'],['../namespacemingfx.html#a3425c24faf923364cd3a764d50601c52',1,'mingfx::operator<<(std::ostream &os, const Vector3 &v)']]], + ['operator_3d_188',['operator=',['../classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608',1,'mingfx::Vector3::operator=()'],['../classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769',1,'mingfx::Vector2::operator=()'],['../classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd',1,'mingfx::Quaternion::operator=()'],['../classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d',1,'mingfx::Point3::operator=()'],['../classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902',1,'mingfx::Point2::operator=()'],['../classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770',1,'mingfx::Matrix4::operator=()'],['../classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e',1,'mingfx::Color::operator=()']]], + ['operator_3d_3d_189',['operator==',['../classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe',1,'mingfx::Vector2::operator==()'],['../classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d',1,'mingfx::Ray::operator==()'],['../classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403',1,'mingfx::Quaternion::operator==()'],['../classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699',1,'mingfx::Point3::operator==()'],['../classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa',1,'mingfx::Point2::operator==()'],['../classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73',1,'mingfx::Matrix4::operator==()'],['../classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0',1,'mingfx::Color::operator==()'],['../classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98',1,'mingfx::Vector3::operator==()']]], + ['operator_3e_3e_190',['operator>>',['../namespacemingfx.html#a256924759a6718882a2b40e17d3e523d',1,'mingfx::operator>>(std::istream &is, Point2 &p)'],['../namespacemingfx.html#ad95e9b494b9761895d57e2b698b69afd',1,'mingfx::operator>>(std::istream &is, Point3 &p)'],['../namespacemingfx.html#a59fb7a99df5c572849e31065884b2235',1,'mingfx::operator>>(std::istream &is, Quaternion &q)'],['../namespacemingfx.html#a0412270963460363fa015b9b4785cc59',1,'mingfx::operator>>(std::istream &is, Ray &r)'],['../namespacemingfx.html#ab3f12496d7a5028b71882373d6fa7203',1,'mingfx::operator>>(std::istream &is, Vector2 &v)'],['../namespacemingfx.html#a8cc2f52569661416cb2ca67c516b7c93',1,'mingfx::operator>>(std::istream &is, Vector3 &v)'],['../namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d',1,'mingfx::operator>>(std::istream &is, Color &c)'],['../namespacemingfx.html#a05fc1c0b2b6011283c019242d6a2de74',1,'mingfx::operator>>(std::istream &is, Matrix4 &m)']]], + ['operator_5b_5d_191',['operator[]',['../classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8',1,'mingfx::Quaternion::operator[](const int i) const'],['../classmingfx_1_1_quaternion.html#a40e6587cc0511572297c5507634db7e1',1,'mingfx::Quaternion::operator[](const int i)'],['../classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000',1,'mingfx::Vector2::operator[](const int i) const'],['../classmingfx_1_1_vector2.html#a93acf7f4f150cfe53859e31d90eddd1e',1,'mingfx::Vector2::operator[](const int i)'],['../classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b',1,'mingfx::Vector3::operator[]()'],['../classmingfx_1_1_point3.html#a790468d68b6d957b22959f9078f85c3e',1,'mingfx::Point3::operator[]()'],['../classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127',1,'mingfx::Matrix4::operator[]()'],['../classmingfx_1_1_color.html#a474ed028db8b31e359d8bfec50147bcc',1,'mingfx::Color::operator[](const int i)'],['../classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500',1,'mingfx::Color::operator[](const int i) const'],['../classmingfx_1_1_vector3.html#abcdda4627b24af879aba38d4fc0e6f71',1,'mingfx::Vector3::operator[]()'],['../classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566',1,'mingfx::Point3::operator[]()'],['../classmingfx_1_1_point2.html#a50f09df619fd226e6dc3ccff452abab3',1,'mingfx::Point2::operator[](const int i)'],['../classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542',1,'mingfx::Point2::operator[](const int i) const'],['../classmingfx_1_1_matrix4.html#af9b02807d81eac55d66238f246c53656',1,'mingfx::Matrix4::operator[]()']]], + ['origin_192',['origin',['../classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe',1,'mingfx::Ray']]], + ['origin_193',['Origin',['../classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630',1,'mingfx::Point2::Origin()'],['../classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930',1,'mingfx::Point3::Origin()']]], + ['orthonormal_194',['Orthonormal',['../classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250',1,'mingfx::Matrix4']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_d.html b/dev/MinGfx/docs/html/search/all_d.html new file mode 100644 index 0000000..af7f2f0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_d.js b/dev/MinGfx/docs/html/search/all_d.js new file mode 100644 index 0000000..06660c9 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_d.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['perspective_195',['Perspective',['../classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e',1,'mingfx::Matrix4']]], + ['pi_196',['PI',['../classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4',1,'mingfx::GfxMath']]], + ['pixel_197',['Pixel',['../classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b',1,'mingfx::Texture2D']]], + ['pixelstonormalizeddevicecoords_198',['PixelsToNormalizedDeviceCoords',['../classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a',1,'mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords(const Point2 &pointInPixels)'],['../classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1',1,'mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords(const Vector2 &vectorInPixels)']]], + ['platform_199',['Platform',['../classmingfx_1_1_platform.html',1,'mingfx']]], + ['platform_2eh_200',['platform.h',['../platform_8h.html',1,'']]], + ['point2_201',['Point2',['../classmingfx_1_1_point2.html',1,'mingfx::Point2'],['../classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1',1,'mingfx::Point2::Point2()'],['../classmingfx_1_1_point2.html#a716fcff21456f29561ec27118a646483',1,'mingfx::Point2::Point2(float x, float y)'],['../classmingfx_1_1_point2.html#a4ba487a2038ebc78b461b66f1987053f',1,'mingfx::Point2::Point2(float *p)'],['../classmingfx_1_1_point2.html#a97464af92444984e275dca38a3f4eef0',1,'mingfx::Point2::Point2(const Point2 &p)']]], + ['point2_2eh_202',['point2.h',['../point2_8h.html',1,'']]], + ['point3_203',['Point3',['../classmingfx_1_1_point3.html',1,'mingfx::Point3'],['../classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664',1,'mingfx::Point3::Point3()'],['../classmingfx_1_1_point3.html#a29d113f0fa37fa04a642817c680fe953',1,'mingfx::Point3::Point3(float x, float y, float z)'],['../classmingfx_1_1_point3.html#a062caf579ef643b25129cc35b3dbe756',1,'mingfx::Point3::Point3(float *p)'],['../classmingfx_1_1_point3.html#a23534a1ce3d4466c303b9205bd21cd97',1,'mingfx::Point3::Point3(const Point3 &p)']]], + ['point3_2eh_204',['point3.h',['../point3_8h.html',1,'']]], + ['position_205',['position',['../classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e',1,'mingfx::DefaultShader::LightProperties']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_e.html b/dev/MinGfx/docs/html/search/all_e.html new file mode 100644 index 0000000..e25df42 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_e.js b/dev/MinGfx/docs/html/search/all_e.js new file mode 100644 index 0000000..9afb687 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['quaternion_206',['Quaternion',['../classmingfx_1_1_quaternion.html',1,'mingfx::Quaternion'],['../classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165',1,'mingfx::Quaternion::Quaternion()'],['../classmingfx_1_1_quaternion.html#a5c6cbe4fc70e8e4ec23142d0a5a2ba97',1,'mingfx::Quaternion::Quaternion(float qx, float qy, float qz, float qw)'],['../classmingfx_1_1_quaternion.html#a07bb09eb7d0b368ef5e8d9da02fbdad6',1,'mingfx::Quaternion::Quaternion(float *ptr)'],['../classmingfx_1_1_quaternion.html#a0be885a1b3f2d54675c6866ec3578243',1,'mingfx::Quaternion::Quaternion(const Quaternion &other)']]], + ['quaternion_2eh_207',['quaternion.h',['../quaternion_8h.html',1,'']]], + ['quick_5fshapes_2eh_208',['quick_shapes.h',['../quick__shapes_8h.html',1,'']]], + ['quickshapes_209',['QuickShapes',['../classmingfx_1_1_quick_shapes.html',1,'mingfx::QuickShapes'],['../classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2',1,'mingfx::QuickShapes::QuickShapes()']]] +]; diff --git a/dev/MinGfx/docs/html/search/all_f.html b/dev/MinGfx/docs/html/search/all_f.html new file mode 100644 index 0000000..b23da6c --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/all_f.js b/dev/MinGfx/docs/html/search/all_f.js new file mode 100644 index 0000000..2954e71 --- /dev/null +++ b/dev/MinGfx/docs/html/search/all_f.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['ray_210',['Ray',['../classmingfx_1_1_ray.html',1,'mingfx::Ray'],['../classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda',1,'mingfx::Ray::Ray()'],['../classmingfx_1_1_ray.html#ab38cdd0793b3acfe55fa9ebca5ddebf6',1,'mingfx::Ray::Ray(const Point3 &origin, const Vector3 &direction)']]], + ['ray_2eh_211',['ray.h',['../ray_8h.html',1,'']]], + ['read_5fcolor_5fdata_212',['read_color_data',['../classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3',1,'mingfx::Mesh']]], + ['read_5fnormal_5fdata_213',['read_normal_data',['../classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65',1,'mingfx::Mesh']]], + ['read_5ftex_5fcoords_5fdata_214',['read_tex_coords_data',['../classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31',1,'mingfx::Mesh']]], + ['read_5ftriangle_5findices_5fdata_215',['read_triangle_indices_data',['../classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a',1,'mingfx::Mesh']]], + ['read_5fvertex_5fdata_216',['read_vertex_data',['../classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863',1,'mingfx::Mesh']]], + ['readzvalueatpixel_217',['ReadZValueAtPixel',['../classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646',1,'mingfx::GraphicsApp']]], + ['resizewindow_218',['ResizeWindow',['../classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5',1,'mingfx::GraphicsApp']]], + ['rotation_219',['Rotation',['../classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0',1,'mingfx::Matrix4']]], + ['rotation_5fscale_220',['rotation_scale',['../classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac',1,'mingfx::CraftCam']]], + ['rotationx_221',['RotationX',['../classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08',1,'mingfx::Matrix4']]], + ['rotationy_222',['RotationY',['../classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6',1,'mingfx::Matrix4']]], + ['rotationz_223',['RotationZ',['../classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93',1,'mingfx::Matrix4']]], + ['run_224',['Run',['../classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_0.html b/dev/MinGfx/docs/html/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_0.js b/dev/MinGfx/docs/html/search/classes_0.js new file mode 100644 index 0000000..330629d --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['aabb_346',['AABB',['../classmingfx_1_1_a_a_b_b.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_1.html b/dev/MinGfx/docs/html/search/classes_1.html new file mode 100644 index 0000000..576e916 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_1.js b/dev/MinGfx/docs/html/search/classes_1.js new file mode 100644 index 0000000..f319bae --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bvh_347',['BVH',['../classmingfx_1_1_b_v_h.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_2.html b/dev/MinGfx/docs/html/search/classes_2.html new file mode 100644 index 0000000..956405e --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_2.js b/dev/MinGfx/docs/html/search/classes_2.js new file mode 100644 index 0000000..df49d92 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['color_348',['Color',['../classmingfx_1_1_color.html',1,'mingfx']]], + ['craftcam_349',['CraftCam',['../classmingfx_1_1_craft_cam.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_3.html b/dev/MinGfx/docs/html/search/classes_3.html new file mode 100644 index 0000000..d33343b --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_3.js b/dev/MinGfx/docs/html/search/classes_3.js new file mode 100644 index 0000000..7bdfefb --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['defaultshader_350',['DefaultShader',['../classmingfx_1_1_default_shader.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_4.html b/dev/MinGfx/docs/html/search/classes_4.html new file mode 100644 index 0000000..8430b07 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_4.js b/dev/MinGfx/docs/html/search/classes_4.js new file mode 100644 index 0000000..11c5783 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gfxmath_351',['GfxMath',['../classmingfx_1_1_gfx_math.html',1,'mingfx']]], + ['graphicsapp_352',['GraphicsApp',['../classmingfx_1_1_graphics_app.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_5.html b/dev/MinGfx/docs/html/search/classes_5.html new file mode 100644 index 0000000..c2f1b76 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_5.js b/dev/MinGfx/docs/html/search/classes_5.js new file mode 100644 index 0000000..eac06bc --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lightproperties_353',['LightProperties',['../classmingfx_1_1_default_shader_1_1_light_properties.html',1,'mingfx::DefaultShader']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_6.html b/dev/MinGfx/docs/html/search/classes_6.html new file mode 100644 index 0000000..e39847c --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_6.js b/dev/MinGfx/docs/html/search/classes_6.js new file mode 100644 index 0000000..48928b8 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['materialproperties_354',['MaterialProperties',['../classmingfx_1_1_default_shader_1_1_material_properties.html',1,'mingfx::DefaultShader']]], + ['matrix4_355',['Matrix4',['../classmingfx_1_1_matrix4.html',1,'mingfx']]], + ['mesh_356',['Mesh',['../classmingfx_1_1_mesh.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_7.html b/dev/MinGfx/docs/html/search/classes_7.html new file mode 100644 index 0000000..a2c4d1a --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_7.js b/dev/MinGfx/docs/html/search/classes_7.js new file mode 100644 index 0000000..89c36aa --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['platform_357',['Platform',['../classmingfx_1_1_platform.html',1,'mingfx']]], + ['point2_358',['Point2',['../classmingfx_1_1_point2.html',1,'mingfx']]], + ['point3_359',['Point3',['../classmingfx_1_1_point3.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_8.html b/dev/MinGfx/docs/html/search/classes_8.html new file mode 100644 index 0000000..17003e4 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_8.js b/dev/MinGfx/docs/html/search/classes_8.js new file mode 100644 index 0000000..fe32295 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quaternion_360',['Quaternion',['../classmingfx_1_1_quaternion.html',1,'mingfx']]], + ['quickshapes_361',['QuickShapes',['../classmingfx_1_1_quick_shapes.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_9.html b/dev/MinGfx/docs/html/search/classes_9.html new file mode 100644 index 0000000..b8afa8c --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_9.js b/dev/MinGfx/docs/html/search/classes_9.js new file mode 100644 index 0000000..0676d34 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ray_362',['Ray',['../classmingfx_1_1_ray.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_a.html b/dev/MinGfx/docs/html/search/classes_a.html new file mode 100644 index 0000000..6788af2 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_a.js b/dev/MinGfx/docs/html/search/classes_a.js new file mode 100644 index 0000000..4afb3be --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['shaderprogram_363',['ShaderProgram',['../classmingfx_1_1_shader_program.html',1,'mingfx']]], + ['stbrp_5fcontext_364',['stbrp_context',['../structstbrp__context.html',1,'']]], + ['stbrp_5fnode_365',['stbrp_node',['../structstbrp__node.html',1,'']]], + ['stbrp_5frect_366',['stbrp_rect',['../structstbrp__rect.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_b.html b/dev/MinGfx/docs/html/search/classes_b.html new file mode 100644 index 0000000..3fcb498 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_b.js b/dev/MinGfx/docs/html/search/classes_b.js new file mode 100644 index 0000000..ca7a3e8 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['textformat_367',['TextFormat',['../classmingfx_1_1_text_shader_1_1_text_format.html',1,'mingfx::TextShader']]], + ['textshader_368',['TextShader',['../classmingfx_1_1_text_shader.html',1,'mingfx']]], + ['texture2d_369',['Texture2D',['../classmingfx_1_1_texture2_d.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_c.html b/dev/MinGfx/docs/html/search/classes_c.html new file mode 100644 index 0000000..2f7b1f3 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_c.js b/dev/MinGfx/docs/html/search/classes_c.js new file mode 100644 index 0000000..dda4c58 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unicam_370',['UniCam',['../classmingfx_1_1_uni_cam.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/classes_d.html b/dev/MinGfx/docs/html/search/classes_d.html new file mode 100644 index 0000000..f9011e7 --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/classes_d.js b/dev/MinGfx/docs/html/search/classes_d.js new file mode 100644 index 0000000..85c37ae --- /dev/null +++ b/dev/MinGfx/docs/html/search/classes_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vector2_371',['Vector2',['../classmingfx_1_1_vector2.html',1,'mingfx']]], + ['vector3_372',['Vector3',['../classmingfx_1_1_vector3.html',1,'mingfx']]] +]; diff --git a/dev/MinGfx/docs/html/search/close.svg b/dev/MinGfx/docs/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/dev/MinGfx/docs/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/dev/MinGfx/docs/html/search/defines_0.html b/dev/MinGfx/docs/html/search/defines_0.html new file mode 100644 index 0000000..15cc3de --- /dev/null +++ b/dev/MinGfx/docs/html/search/defines_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/defines_0.js b/dev/MinGfx/docs/html/search/defines_0.js new file mode 100644 index 0000000..9072bee --- /dev/null +++ b/dev/MinGfx/docs/html/search/defines_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['mingfx_5fdata_5fdir_5fbuild_712',['MINGFX_DATA_DIR_BUILD',['../mingfx__config_8h.html#a9ab97d1e09bf7a864495329de5dc7e03',1,'mingfx_config.h']]], + ['mingfx_5fdata_5fdir_5finstall_713',['MINGFX_DATA_DIR_INSTALL',['../mingfx__config_8h.html#a1e44357d7f17eb50f842d9e39e55e398',1,'mingfx_config.h']]], + ['mingfx_5fmath_5fepsilon_714',['MINGFX_MATH_EPSILON',['../point2_8h.html#a432350d21fbc10d5e65eeeb6859511ea',1,'MINGFX_MATH_EPSILON(): point2.h'],['../point3_8h.html#a432350d21fbc10d5e65eeeb6859511ea',1,'MINGFX_MATH_EPSILON(): point3.h']]], + ['mingfx_5fshaders_5fdir_5fbuild_715',['MINGFX_SHADERS_DIR_BUILD',['../mingfx__config_8h.html#a1908456b5481e0dbbe2b8252fa71d23f',1,'mingfx_config.h']]], + ['mingfx_5fshaders_5fdir_5finstall_716',['MINGFX_SHADERS_DIR_INSTALL',['../mingfx__config_8h.html#ab431df904057e50ac94550595473f5f4',1,'mingfx_config.h']]] +]; diff --git a/dev/MinGfx/docs/html/search/defines_1.html b/dev/MinGfx/docs/html/search/defines_1.html new file mode 100644 index 0000000..c49009c --- /dev/null +++ b/dev/MinGfx/docs/html/search/defines_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/defines_1.js b/dev/MinGfx/docs/html/search/defines_1.js new file mode 100644 index 0000000..44f55f6 --- /dev/null +++ b/dev/MinGfx/docs/html/search/defines_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['stb_5frect_5fpack_5fversion_717',['STB_RECT_PACK_VERSION',['../stb__rect__pack_8h.html#af2f15dfcc6ad60b1df4f5902e2cc25ce',1,'stb_rect_pack.h']]], + ['stbrp_5fdef_718',['STBRP_DEF',['../stb__rect__pack_8h.html#a0b73f2d2521fb81afc056a823e3ca753',1,'stb_rect_pack.h']]] +]; diff --git a/dev/MinGfx/docs/html/search/enums_0.html b/dev/MinGfx/docs/html/search/enums_0.html new file mode 100644 index 0000000..141fff5 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enums_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/enums_0.js b/dev/MinGfx/docs/html/search/enums_0.js new file mode 100644 index 0000000..f6e19fe --- /dev/null +++ b/dev/MinGfx/docs/html/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['horizalign_695',['HorizAlign',['../classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63c',1,'mingfx::TextShader']]] +]; diff --git a/dev/MinGfx/docs/html/search/enums_1.html b/dev/MinGfx/docs/html/search/enums_1.html new file mode 100644 index 0000000..d29f3b1 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enums_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/enums_1.js b/dev/MinGfx/docs/html/search/enums_1.js new file mode 100644 index 0000000..875d520 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['linestype_696',['LinesType',['../classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603',1,'mingfx::QuickShapes']]] +]; diff --git a/dev/MinGfx/docs/html/search/enums_2.html b/dev/MinGfx/docs/html/search/enums_2.html new file mode 100644 index 0000000..59aadf2 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enums_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/enums_2.js b/dev/MinGfx/docs/html/search/enums_2.js new file mode 100644 index 0000000..5007801 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vertalign_697',['VertAlign',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2a',1,'mingfx::TextShader']]] +]; diff --git a/dev/MinGfx/docs/html/search/enumvalues_0.html b/dev/MinGfx/docs/html/search/enumvalues_0.html new file mode 100644 index 0000000..0d131d9 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enumvalues_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/enumvalues_0.js b/dev/MinGfx/docs/html/search/enumvalues_0.js new file mode 100644 index 0000000..4b0ef18 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['horiz_5falign_5fcenter_698',['HORIZ_ALIGN_CENTER',['../classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca5089ab07b80a999b45667e5711cae1f4',1,'mingfx::TextShader']]], + ['horiz_5falign_5fleft_699',['HORIZ_ALIGN_LEFT',['../classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca8e6d89d62375493a3cc1fb5dba289f92',1,'mingfx::TextShader']]], + ['horiz_5falign_5fright_700',['HORIZ_ALIGN_RIGHT',['../classmingfx_1_1_text_shader.html#af464d970e6475a2176f21c3f4b24c63ca6999f9ad8384a34813e7535baf44f78b',1,'mingfx::TextShader']]] +]; diff --git a/dev/MinGfx/docs/html/search/enumvalues_1.html b/dev/MinGfx/docs/html/search/enumvalues_1.html new file mode 100644 index 0000000..cd9187a --- /dev/null +++ b/dev/MinGfx/docs/html/search/enumvalues_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/enumvalues_1.js b/dev/MinGfx/docs/html/search/enumvalues_1.js new file mode 100644 index 0000000..9c7ccc3 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enumvalues_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['line_5floop_701',['LINE_LOOP',['../classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603a8e0df0247f66bd2cac06f16abb562134',1,'mingfx::QuickShapes']]], + ['line_5fstrip_702',['LINE_STRIP',['../classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae64a4d2159ed46d077e21a505575c814',1,'mingfx::QuickShapes']]], + ['lines_703',['LINES',['../classmingfx_1_1_quick_shapes.html#aaea35a34a9495a9ab25cd9aa32a91603ae585142391f356c60bcfe68279ec2727',1,'mingfx::QuickShapes']]] +]; diff --git a/dev/MinGfx/docs/html/search/enumvalues_2.html b/dev/MinGfx/docs/html/search/enumvalues_2.html new file mode 100644 index 0000000..2b95d92 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enumvalues_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/enumvalues_2.js b/dev/MinGfx/docs/html/search/enumvalues_2.js new file mode 100644 index 0000000..467d394 --- /dev/null +++ b/dev/MinGfx/docs/html/search/enumvalues_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['stbrp_5fheuristic_5fskyline_5fbf_5fsortheight_704',['STBRP_HEURISTIC_Skyline_BF_sortHeight',['../stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba11d62749c4405a231a6fd1dd9d46615c',1,'stb_rect_pack.h']]], + ['stbrp_5fheuristic_5fskyline_5fbl_5fsortheight_705',['STBRP_HEURISTIC_Skyline_BL_sortHeight',['../stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba13530b067fb1f9707dc0f9d51f8b074a',1,'stb_rect_pack.h']]], + ['stbrp_5fheuristic_5fskyline_5fdefault_706',['STBRP_HEURISTIC_Skyline_default',['../stb__rect__pack_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5e4dd0b1cbee654bbfeebc5311f03525',1,'stb_rect_pack.h']]] +]; diff --git a/dev/MinGfx/docs/html/search/enumvalues_3.html b/dev/MinGfx/docs/html/search/enumvalues_3.html new file mode 100644 index 0000000..bc0ac8a --- /dev/null +++ b/dev/MinGfx/docs/html/search/enumvalues_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/enumvalues_3.js b/dev/MinGfx/docs/html/search/enumvalues_3.js new file mode 100644 index 0000000..b59c94c --- /dev/null +++ b/dev/MinGfx/docs/html/search/enumvalues_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['vert_5falign_5fbaseline_707',['VERT_ALIGN_BASELINE',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa0400d0d77ea6770b313eedaf36fe71bb',1,'mingfx::TextShader']]], + ['vert_5falign_5fbottom_708',['VERT_ALIGN_BOTTOM',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa080e12cacc0f01b361c8b93c73dd2e28',1,'mingfx::TextShader']]], + ['vert_5falign_5fcenter_709',['VERT_ALIGN_CENTER',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aac49ae9c9553284e44f90228b9ce647af',1,'mingfx::TextShader']]], + ['vert_5falign_5ftop_710',['VERT_ALIGN_TOP',['../classmingfx_1_1_text_shader.html#a7624918a2d157cf2880fc8858c00db2aa970e4fcd7c426e6cd49709119fba6e04',1,'mingfx::TextShader']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_0.html b/dev/MinGfx/docs/html/search/files_0.html new file mode 100644 index 0000000..9498842 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_0.js b/dev/MinGfx/docs/html/search/files_0.js new file mode 100644 index 0000000..aaf51ac --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['aabb_2eh_374',['aabb.h',['../aabb_8h.html',1,'']]], + ['api_2emd_375',['api.md',['../api_8md.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_1.html b/dev/MinGfx/docs/html/search/files_1.html new file mode 100644 index 0000000..7050ef4 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_1.js b/dev/MinGfx/docs/html/search/files_1.js new file mode 100644 index 0000000..8409ba0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bvh_2eh_376',['bvh.h',['../bvh_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_2.html b/dev/MinGfx/docs/html/search/files_2.html new file mode 100644 index 0000000..497cdf5 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_2.js b/dev/MinGfx/docs/html/search/files_2.js new file mode 100644 index 0000000..bd7e345 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['color_2eh_377',['color.h',['../color_8h.html',1,'']]], + ['craft_5fcam_2eh_378',['craft_cam.h',['../craft__cam_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_3.html b/dev/MinGfx/docs/html/search/files_3.html new file mode 100644 index 0000000..1ba106b --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_3.js b/dev/MinGfx/docs/html/search/files_3.js new file mode 100644 index 0000000..aa9d1d0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['default_5fshader_2eh_379',['default_shader.h',['../default__shader_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_4.html b/dev/MinGfx/docs/html/search/files_4.html new file mode 100644 index 0000000..753b7b1 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_4.js b/dev/MinGfx/docs/html/search/files_4.js new file mode 100644 index 0000000..b3b80f3 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gfxmath_2eh_380',['gfxmath.h',['../gfxmath_8h.html',1,'']]], + ['graphics_5fapp_2eh_381',['graphics_app.h',['../graphics__app_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_5.html b/dev/MinGfx/docs/html/search/files_5.html new file mode 100644 index 0000000..7b6affd --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_5.js b/dev/MinGfx/docs/html/search/files_5.js new file mode 100644 index 0000000..54b7dd2 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['installation_2emd_382',['installation.md',['../installation_8md.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_6.html b/dev/MinGfx/docs/html/search/files_6.html new file mode 100644 index 0000000..802ebf7 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_6.js b/dev/MinGfx/docs/html/search/files_6.js new file mode 100644 index 0000000..5763269 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['mainpage_2emd_383',['mainpage.md',['../mainpage_8md.html',1,'']]], + ['matrix4_2eh_384',['matrix4.h',['../matrix4_8h.html',1,'']]], + ['mesh_2eh_385',['mesh.h',['../mesh_8h.html',1,'']]], + ['mingfx_2eh_386',['mingfx.h',['../mingfx_8h.html',1,'']]], + ['mingfx_5fconfig_2eh_387',['mingfx_config.h',['../mingfx__config_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_7.html b/dev/MinGfx/docs/html/search/files_7.html new file mode 100644 index 0000000..365e648 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_7.js b/dev/MinGfx/docs/html/search/files_7.js new file mode 100644 index 0000000..eb72b51 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['opengl_5fheaders_2eh_388',['opengl_headers.h',['../opengl__headers_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_8.html b/dev/MinGfx/docs/html/search/files_8.html new file mode 100644 index 0000000..3df0f2f --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_8.js b/dev/MinGfx/docs/html/search/files_8.js new file mode 100644 index 0000000..86d1516 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['platform_2eh_389',['platform.h',['../platform_8h.html',1,'']]], + ['point2_2eh_390',['point2.h',['../point2_8h.html',1,'']]], + ['point3_2eh_391',['point3.h',['../point3_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_9.html b/dev/MinGfx/docs/html/search/files_9.html new file mode 100644 index 0000000..52f8b6c --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_9.js b/dev/MinGfx/docs/html/search/files_9.js new file mode 100644 index 0000000..2b14d84 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quaternion_2eh_392',['quaternion.h',['../quaternion_8h.html',1,'']]], + ['quick_5fshapes_2eh_393',['quick_shapes.h',['../quick__shapes_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_a.html b/dev/MinGfx/docs/html/search/files_a.html new file mode 100644 index 0000000..11d4c11 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_a.js b/dev/MinGfx/docs/html/search/files_a.js new file mode 100644 index 0000000..036951b --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ray_2eh_394',['ray.h',['../ray_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_b.html b/dev/MinGfx/docs/html/search/files_b.html new file mode 100644 index 0000000..9fc8343 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_b.js b/dev/MinGfx/docs/html/search/files_b.js new file mode 100644 index 0000000..a20ab03 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['shader_5fprogram_2eh_395',['shader_program.h',['../shader__program_8h.html',1,'']]], + ['stb_5frect_5fpack_2eh_396',['stb_rect_pack.h',['../stb__rect__pack_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_c.html b/dev/MinGfx/docs/html/search/files_c.html new file mode 100644 index 0000000..c266b4c --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_c.js b/dev/MinGfx/docs/html/search/files_c.js new file mode 100644 index 0000000..949202b --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['text_5fshader_2eh_397',['text_shader.h',['../text__shader_8h.html',1,'']]], + ['texture2d_2eh_398',['texture2d.h',['../texture2d_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_d.html b/dev/MinGfx/docs/html/search/files_d.html new file mode 100644 index 0000000..d2ca3c1 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_d.js b/dev/MinGfx/docs/html/search/files_d.js new file mode 100644 index 0000000..7d42d13 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unicam_2eh_399',['unicam.h',['../unicam_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/files_e.html b/dev/MinGfx/docs/html/search/files_e.html new file mode 100644 index 0000000..9df4116 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/files_e.js b/dev/MinGfx/docs/html/search/files_e.js new file mode 100644 index 0000000..1bfafe1 --- /dev/null +++ b/dev/MinGfx/docs/html/search/files_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vector2_2eh_400',['vector2.h',['../vector2_8h.html',1,'']]], + ['vector3_2eh_401',['vector3.h',['../vector3_8h.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_0.html b/dev/MinGfx/docs/html/search/functions_0.html new file mode 100644 index 0000000..eb4c501 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_0.js b/dev/MinGfx/docs/html/search/functions_0.js new file mode 100644 index 0000000..16cad36 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_0.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['aabb_402',['AABB',['../classmingfx_1_1_a_a_b_b.html#af7acb376dbda50fa1d8c30d1b5eb85fb',1,'mingfx::AABB::AABB()'],['../classmingfx_1_1_a_a_b_b.html#a5bf74f4e7f64adae9ea66f213a4012d1',1,'mingfx::AABB::AABB(const Point3 &a)'],['../classmingfx_1_1_a_a_b_b.html#aaa44f815006b66f67da76fd89c02a0cf',1,'mingfx::AABB::AABB(const Point3 &a, const Point3 &b, const Point3 &c)'],['../classmingfx_1_1_a_a_b_b.html#a0f3e7d3b4012e25018ad4c51edafd4f8',1,'mingfx::AABB::AABB(const Vector3 &extents)'],['../classmingfx_1_1_a_a_b_b.html#a7c47fca94d56a2845ca7729d580ee7d1',1,'mingfx::AABB::AABB(const Point3 &center, const Vector3 &extents)'],['../classmingfx_1_1_a_a_b_b.html#a95e244e6e0774c815de6b9434218ee09',1,'mingfx::AABB::AABB(const Mesh &mesh)'],['../classmingfx_1_1_a_a_b_b.html#a2bf325127a89d7dbd5bb082ae69fb5e9',1,'mingfx::AABB::AABB(const Mesh &mesh, unsigned int tri_id)']]], + ['addfragmentshaderfromfile_403',['AddFragmentShaderFromFile',['../classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0',1,'mingfx::ShaderProgram']]], + ['addfragmentshaderfromsource_404',['AddFragmentShaderFromSource',['../classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c',1,'mingfx::ShaderProgram']]], + ['addlight_405',['AddLight',['../classmingfx_1_1_default_shader.html#af54a8e489d9fb34cfceb1c07562c6e2c',1,'mingfx::DefaultShader']]], + ['addtriangle_406',['AddTriangle',['../classmingfx_1_1_mesh.html#a29eeb2e778704350789033ec4940d55a',1,'mingfx::Mesh']]], + ['addvertexshaderfromfile_407',['AddVertexShaderFromFile',['../classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5',1,'mingfx::ShaderProgram']]], + ['addvertexshaderfromsource_408',['AddVertexShaderFromSource',['../classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d',1,'mingfx::ShaderProgram']]], + ['advanceanimation_409',['AdvanceAnimation',['../classmingfx_1_1_uni_cam.html#aab253d966af52ac277ac51194745085c',1,'mingfx::UniCam']]], + ['align_410',['Align',['../classmingfx_1_1_matrix4.html#ae61cdabb318a03cd4dae8a1c8ecafa4d',1,'mingfx::Matrix4']]], + ['aspect_5fratio_411',['aspect_ratio',['../classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_1.html b/dev/MinGfx/docs/html/search/functions_1.html new file mode 100644 index 0000000..ef4088b --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_1.js b/dev/MinGfx/docs/html/search/functions_1.js new file mode 100644 index 0000000..49f66cb --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['bindtexture_412',['BindTexture',['../classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2',1,'mingfx::ShaderProgram::BindTexture(const std::string &name, const Texture2D &tex)'],['../classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96',1,'mingfx::ShaderProgram::BindTexture(const std::string &name, const Texture2D &tex, int texUnit)']]], + ['buildbvh_413',['BuildBVH',['../classmingfx_1_1_mesh.html#a8d96c1b5985cd836f2aa2b2994af64c1',1,'mingfx::Mesh']]], + ['bvh_414',['BVH',['../classmingfx_1_1_b_v_h.html#af812656193d247be31dd038a8e2fff75',1,'mingfx::BVH']]], + ['bvh_5fptr_415',['bvh_ptr',['../classmingfx_1_1_mesh.html#a978b1341d5613d399a68e40c61c57ba4',1,'mingfx::Mesh']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_10.html b/dev/MinGfx/docs/html/search/functions_10.html new file mode 100644 index 0000000..1bdc125 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_10.js b/dev/MinGfx/docs/html/search/functions_10.js new file mode 100644 index 0000000..f6a91bb --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_10.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['scale_566',['Scale',['../classmingfx_1_1_matrix4.html#a0232a58d20b1da5374cf8c72fb113a4e',1,'mingfx::Matrix4']]], + ['screen_567',['screen',['../classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16',1,'mingfx::GraphicsApp']]], + ['screentodepthplane_568',['ScreenToDepthPlane',['../classmingfx_1_1_gfx_math.html#aaa6af7c0de01fdad46d48d43efb6aa67',1,'mingfx::GfxMath']]], + ['screentonearplane_569',['ScreenToNearPlane',['../classmingfx_1_1_gfx_math.html#a2086a2f885f887fb53da8a5adb5860f0',1,'mingfx::GfxMath']]], + ['screentoworld_570',['ScreenToWorld',['../classmingfx_1_1_gfx_math.html#a24048d7b688ae46317c3e8de8a701273',1,'mingfx::GfxMath']]], + ['set_571',['set',['../classmingfx_1_1_ray.html#a75593293307b4eead15a876bf3597071',1,'mingfx::Ray']]], + ['set_5fdefault_5fdepth_572',['set_default_depth',['../classmingfx_1_1_uni_cam.html#a71e0351ac19a18b9c02215a60dc51068',1,'mingfx::UniCam']]], + ['set_5ffilter_5fmode_573',['set_filter_mode',['../classmingfx_1_1_texture2_d.html#a4a3b2b550fefdf79f0fb392b04e7b013',1,'mingfx::Texture2D']]], + ['set_5flook_5fscale_574',['set_look_scale',['../classmingfx_1_1_craft_cam.html#a15092ae5de6920546e3ce79aeb196f44',1,'mingfx::CraftCam']]], + ['set_5frotation_5fscale_575',['set_rotation_scale',['../classmingfx_1_1_craft_cam.html#a352f5a42f6e88d2e599bd5acb42e5831',1,'mingfx::CraftCam']]], + ['set_5ftranslation_5fscale_576',['set_translation_scale',['../classmingfx_1_1_craft_cam.html#a151fde09d08001ee2a615f25ec1acea7',1,'mingfx::CraftCam']]], + ['set_5fuser_5fdata_577',['set_user_data',['../classmingfx_1_1_a_a_b_b.html#ade89d21e799a97e7d82be5d593ee2e4b',1,'mingfx::AABB']]], + ['set_5fview_5fmatrix_578',['set_view_matrix',['../classmingfx_1_1_craft_cam.html#a79a194be8675a0a968f14fe3dcd79da8',1,'mingfx::CraftCam::set_view_matrix()'],['../classmingfx_1_1_uni_cam.html#a6b17bab82595ca468a3c638512011e5b',1,'mingfx::UniCam::set_view_matrix()']]], + ['set_5fwrap_5fmode_579',['set_wrap_mode',['../classmingfx_1_1_texture2_d.html#aa5cbe3396e4560ec0746e91dbc55bc9f',1,'mingfx::Texture2D']]], + ['setcolors_580',['SetColors',['../classmingfx_1_1_mesh.html#a0f59e19b74f4f9dc2ad580756f8b319f',1,'mingfx::Mesh::SetColors(int triangle_id, Color c1, Color c2, Color c3)'],['../classmingfx_1_1_mesh.html#ab9b05a77591a9adad12032d513256dae',1,'mingfx::Mesh::SetColors(const std::vector< Color > &colors)'],['../classmingfx_1_1_mesh.html#aed172bdd77858f3b59978cb8527e19ae',1,'mingfx::Mesh::SetColors(float *colors_array, int num_colors)']]], + ['setindices_581',['SetIndices',['../classmingfx_1_1_mesh.html#a1f94c9ca7867b65e04f7e02813a06581',1,'mingfx::Mesh::SetIndices(const std::vector< unsigned int > index_array)'],['../classmingfx_1_1_mesh.html#a84711746b8d37c8d9b12ae748a4c5b8c',1,'mingfx::Mesh::SetIndices(unsigned int *index_array, int num_indices)']]], + ['setinstancetransforms_582',['SetInstanceTransforms',['../classmingfx_1_1_mesh.html#a7175238f5874929e2258458b98421d87',1,'mingfx::Mesh']]], + ['setlight_583',['SetLight',['../classmingfx_1_1_default_shader.html#a41e74fb8af72a6b22c72b0916726b6d6',1,'mingfx::DefaultShader']]], + ['setnormals_584',['SetNormals',['../classmingfx_1_1_mesh.html#a43d5a5cc3ef742a8c2b5e3f1b4da0903',1,'mingfx::Mesh::SetNormals(int triangle_id, Vector3 n1, Vector3 n2, Vector3 n3)'],['../classmingfx_1_1_mesh.html#ad28dbd5b0ab77bec28f30f618dd9e57d',1,'mingfx::Mesh::SetNormals(const std::vector< Vector3 > &norms)'],['../classmingfx_1_1_mesh.html#a6ab1128fab6f969564d3a1329baeade6',1,'mingfx::Mesh::SetNormals(float *norms_array, int num_norms)']]], + ['settexcoords_585',['SetTexCoords',['../classmingfx_1_1_mesh.html#a17cb896939007357014c74a1ece6f1f3',1,'mingfx::Mesh::SetTexCoords(int triangle_id, int texture_unit, Point2 uv1, Point2 uv2, Point2 uv3)'],['../classmingfx_1_1_mesh.html#aba2dfd0ade2d8a728897d411ef3fdaf1',1,'mingfx::Mesh::SetTexCoords(int texture_unit, const std::vector< Point2 > &tex_coords)'],['../classmingfx_1_1_mesh.html#ac9cd4e8d67bb70295a48fcbc72ae32f9',1,'mingfx::Mesh::SetTexCoords(int texture_unit, float *tex_coords_array, int num_tex_coords)']]], + ['setuniform_586',['SetUniform',['../classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Point2 &p)'],['../classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Vector2 &v)'],['../classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Point3 &p)'],['../classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Vector3 &v)'],['../classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Matrix4 &m)'],['../classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, const Color &c)'],['../classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, int i)'],['../classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, unsigned int ui)'],['../classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c',1,'mingfx::ShaderProgram::SetUniform(const std::string &name, float f)']]], + ['setuniformarray1_587',['SetUniformArray1',['../classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19',1,'mingfx::ShaderProgram::SetUniformArray1(const std::string &name, float *f, int count)']]], + ['setuniformarray2_588',['SetUniformArray2',['../classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657',1,'mingfx::ShaderProgram::SetUniformArray2(const std::string &name, float *f, int count)']]], + ['setuniformarray3_589',['SetUniformArray3',['../classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d',1,'mingfx::ShaderProgram::SetUniformArray3(const std::string &name, float *f, int count)']]], + ['setuniformarray4_590',['SetUniformArray4',['../classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &name, int *i, int count)'],['../classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &name, unsigned int *ui, int count)'],['../classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1',1,'mingfx::ShaderProgram::SetUniformArray4(const std::string &name, float *f, int count)']]], + ['setvertices_591',['SetVertices',['../classmingfx_1_1_mesh.html#a1dd243b53826765ba468f505645102a6',1,'mingfx::Mesh::SetVertices(const std::vector< Point3 > &verts)'],['../classmingfx_1_1_mesh.html#a033076b9bf1714c9b9e0eeef11ebcd49',1,'mingfx::Mesh::SetVertices(float *verts_array, int num_verts)']]], + ['shaderprogram_592',['ShaderProgram',['../classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700',1,'mingfx::ShaderProgram']]], + ['slerp_593',['Slerp',['../classmingfx_1_1_quaternion.html#a0290914928a2618f7faaa40989113d22',1,'mingfx::Quaternion::Slerp(const Quaternion &other, float alpha) const'],['../classmingfx_1_1_quaternion.html#a31d37561099fab3d75a74455c5f43133',1,'mingfx::Quaternion::Slerp(const Quaternion &a, const Quaternion &b, float alpha)']]], + ['stbrp_5finit_5ftarget_594',['stbrp_init_target',['../stb__rect__pack_8h.html#a8b32f5ad458f614f5d419ef26cef5b3c',1,'stb_rect_pack.h']]], + ['stbrp_5fpack_5frects_595',['stbrp_pack_rects',['../stb__rect__pack_8h.html#af038ae1b98573f24736c9a3eed0478ba',1,'stb_rect_pack.h']]], + ['stbrp_5fsetup_5fallow_5fout_5fof_5fmem_596',['stbrp_setup_allow_out_of_mem',['../stb__rect__pack_8h.html#a1babd70b223e571305fd9753a83a4fda',1,'stb_rect_pack.h']]], + ['stbrp_5fsetup_5fheuristic_597',['stbrp_setup_heuristic',['../stb__rect__pack_8h.html#a5a8223866c146933da3e152066bf61a1',1,'stb_rect_pack.h']]], + ['stopprogram_598',['StopProgram',['../classmingfx_1_1_default_shader.html#a2c188bc0fc5f7fc7405f04b036bd4d67',1,'mingfx::DefaultShader::StopProgram()'],['../classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da',1,'mingfx::ShaderProgram::StopProgram()']]], + ['subdeterminant_599',['SubDeterminant',['../classmingfx_1_1_matrix4.html#a3d9898bfac2510a695df6b033054e481',1,'mingfx::Matrix4']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_11.html b/dev/MinGfx/docs/html/search/functions_11.html new file mode 100644 index 0000000..188076e --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_11.js b/dev/MinGfx/docs/html/search/functions_11.js new file mode 100644 index 0000000..00f445a --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_11.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['textextents_600',['TextExtents',['../classmingfx_1_1_text_shader.html#ac4e9a150311fe6d74e9f6214ebeb6b28',1,'mingfx::TextShader']]], + ['textformat_601',['TextFormat',['../classmingfx_1_1_text_shader_1_1_text_format.html#a2b7d7e2e540c881952b97b8948b49fcb',1,'mingfx::TextShader::TextFormat']]], + ['textshader_602',['TextShader',['../classmingfx_1_1_text_shader.html#a0ec5a6ba22abb3f86c611107925fca67',1,'mingfx::TextShader']]], + ['texture2d_603',['Texture2D',['../classmingfx_1_1_texture2_d.html#aa15b86ec3b7312842c220b081c39980d',1,'mingfx::Texture2D']]], + ['todegrees_604',['ToDegrees',['../classmingfx_1_1_gfx_math.html#a39a2b5973249fb3aefc210b18b0fdff3',1,'mingfx::GfxMath::ToDegrees(float radians)'],['../classmingfx_1_1_gfx_math.html#aa5411a7d8bfc8e47d596362a328dbde8',1,'mingfx::GfxMath::ToDegrees(Vector3 radians)']]], + ['toeulerangleszyx_605',['ToEulerAnglesZYX',['../classmingfx_1_1_quaternion.html#a033f05ed7e7215a5c3c4cd26548c8007',1,'mingfx::Quaternion']]], + ['toradians_606',['ToRadians',['../classmingfx_1_1_gfx_math.html#a1336de2695bc3bb750b23fb0ea211637',1,'mingfx::GfxMath::ToRadians(float degrees)'],['../classmingfx_1_1_gfx_math.html#a38927f1f8ea4625d909e64efa93c5190',1,'mingfx::GfxMath::ToRadians(Vector3 degrees)']]], + ['tounit_607',['ToUnit',['../classmingfx_1_1_quaternion.html#a3572b35419c51332204adb5bf35f0b03',1,'mingfx::Quaternion::ToUnit()'],['../classmingfx_1_1_vector2.html#a70f9f612a99017bf051e40ebd7fa7f83',1,'mingfx::Vector2::ToUnit()'],['../classmingfx_1_1_vector3.html#a3caef3c6f24b90730ef70c84ce0e0d71',1,'mingfx::Vector3::ToUnit()']]], + ['tovector_608',['ToVector',['../classmingfx_1_1_color.html#ae7371e464c4af7ac93d9edd4c0772c2b',1,'mingfx::Color::ToVector()'],['../classmingfx_1_1_matrix4.html#a4e9433f0482b5e9688c12398900608db',1,'mingfx::Matrix4::ToVector() const']]], + ['translation_609',['Translation',['../classmingfx_1_1_matrix4.html#ae82bab81df82dc03f5eb11e74ba1dd84',1,'mingfx::Matrix4']]], + ['translation_5fscale_610',['translation_scale',['../classmingfx_1_1_craft_cam.html#a93567af7acbae2939d57cfd8a72bcef2',1,'mingfx::CraftCam']]], + ['transpose_611',['Transpose',['../classmingfx_1_1_matrix4.html#afd1030205567d23d4a2d1240d8214850',1,'mingfx::Matrix4']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_12.html b/dev/MinGfx/docs/html/search/functions_12.html new file mode 100644 index 0000000..eb29d8f --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_12.js b/dev/MinGfx/docs/html/search/functions_12.js new file mode 100644 index 0000000..f0951ec --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_12.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['unicam_612',['UniCam',['../classmingfx_1_1_uni_cam.html#a6e7771961011f573b2e2249f602b2d2e',1,'mingfx::UniCam::UniCam()'],['../classmingfx_1_1_uni_cam.html#af507e639c4bceb4c79e21a6f80c48d07',1,'mingfx::UniCam::UniCam(const Matrix4 &initialViewMatrix)']]], + ['unitx_613',['UnitX',['../classmingfx_1_1_vector2.html#a8ef6e0525ec34aaee9cf35bab098ecdb',1,'mingfx::Vector2::UnitX()'],['../classmingfx_1_1_vector3.html#ae8d822fdea67f63580b4e1f78f5b8922',1,'mingfx::Vector3::UnitX()']]], + ['unity_614',['UnitY',['../classmingfx_1_1_vector2.html#ab7b3ba42a5a63c512bd7b32fd4cc0db0',1,'mingfx::Vector2::UnitY()'],['../classmingfx_1_1_vector3.html#a8d31e433d1ac04aaceea1b1dcd1643df',1,'mingfx::Vector3::UnitY()']]], + ['unitz_615',['UnitZ',['../classmingfx_1_1_vector3.html#a4b696b0d1143d6e30a34a2f889d2ca61',1,'mingfx::Vector3']]], + ['updatefrombytes_616',['UpdateFromBytes',['../classmingfx_1_1_texture2_d.html#a0783ad70829ef353aa92344d320b107c',1,'mingfx::Texture2D']]], + ['updatefromfloats_617',['UpdateFromFloats',['../classmingfx_1_1_texture2_d.html#ad7640f0cbda6398a6bb80202b80dd693',1,'mingfx::Texture2D']]], + ['updategpumemory_618',['UpdateGPUMemory',['../classmingfx_1_1_mesh.html#ac74345bf4b2994de4ee1c509bcc6840e',1,'mingfx::Mesh']]], + ['updateheight_619',['UpdateHeight',['../classmingfx_1_1_craft_cam.html#ae3d9c7ea9307dbbadaa4b6e2f9933a7b',1,'mingfx::CraftCam']]], + ['updatesimulation_620',['UpdateSimulation',['../classmingfx_1_1_craft_cam.html#a2b7808e489933b117583cf709fa46bc7',1,'mingfx::CraftCam::UpdateSimulation()'],['../classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa',1,'mingfx::GraphicsApp::UpdateSimulation()']]], + ['updatetriangle_621',['UpdateTriangle',['../classmingfx_1_1_mesh.html#a3e0ac86714f6b7c3f62761ef3952a044',1,'mingfx::Mesh']]], + ['useprogram_622',['UseProgram',['../classmingfx_1_1_default_shader.html#a053599d8c7acd9920461aab8ce945ab0',1,'mingfx::DefaultShader::UseProgram()'],['../classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e',1,'mingfx::ShaderProgram::UseProgram()']]], + ['user_5fdata_623',['user_data',['../classmingfx_1_1_a_a_b_b.html#a35def5a4ee2ecd287f5c71436b2c5843',1,'mingfx::AABB']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_13.html b/dev/MinGfx/docs/html/search/functions_13.html new file mode 100644 index 0000000..3da2ea6 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_13.js b/dev/MinGfx/docs/html/search/functions_13.js new file mode 100644 index 0000000..f2298c0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_13.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['value_5fptr_624',['value_ptr',['../classmingfx_1_1_color.html#aa3a93033db8e00aff817a125eb5b54a0',1,'mingfx::Color::value_ptr()'],['../classmingfx_1_1_matrix4.html#a2b7b30f23f08d70e83c7b7e01945dd3c',1,'mingfx::Matrix4::value_ptr()'],['../classmingfx_1_1_point2.html#a027b2412f1c36242ccb06cf37c7e29bc',1,'mingfx::Point2::value_ptr()'],['../classmingfx_1_1_point3.html#af0557bdc07452cf335e2b7e04fc0aa3c',1,'mingfx::Point3::value_ptr()'],['../classmingfx_1_1_quaternion.html#abca597e756f257dc33838734ae19baf9',1,'mingfx::Quaternion::value_ptr()'],['../classmingfx_1_1_vector2.html#a80ef53519d50a6a6f158f66755c040d1',1,'mingfx::Vector2::value_ptr()'],['../classmingfx_1_1_vector3.html#aa7ddfd662e866c019a772ba66eae7331',1,'mingfx::Vector3::value_ptr()']]], + ['vector2_625',['Vector2',['../classmingfx_1_1_vector2.html#a962433a7e3158cf6b224604a0463852f',1,'mingfx::Vector2::Vector2()'],['../classmingfx_1_1_vector2.html#acc16337b6b06ebea2fde4c4bd1be7abd',1,'mingfx::Vector2::Vector2(float x, float y)'],['../classmingfx_1_1_vector2.html#a6e3d063a7080bfe199acc70cd5afded2',1,'mingfx::Vector2::Vector2(float *v)'],['../classmingfx_1_1_vector2.html#a40f53939581f5d06a1b757b0398525f8',1,'mingfx::Vector2::Vector2(const Vector2 &v)']]], + ['vector3_626',['Vector3',['../classmingfx_1_1_vector3.html#a7f57af8bbecbc793fa17def4521de4dd',1,'mingfx::Vector3::Vector3()'],['../classmingfx_1_1_vector3.html#a256018f34e230d542027d07d14fd6e65',1,'mingfx::Vector3::Vector3(float x, float y, float z)'],['../classmingfx_1_1_vector3.html#a95b274c7a5ff118af20bc71682c6b1f1',1,'mingfx::Vector3::Vector3(float *v)'],['../classmingfx_1_1_vector3.html#af6100965af7770f833dbf0c9f30f4fdd',1,'mingfx::Vector3::Vector3(const Vector3 &v)']]], + ['view_5fmatrix_627',['view_matrix',['../classmingfx_1_1_craft_cam.html#acccdadc08d8d8a0b7b9426f18209ff36',1,'mingfx::CraftCam::view_matrix()'],['../classmingfx_1_1_uni_cam.html#af7e7276f9390ec57ca577092c99d6ca3',1,'mingfx::UniCam::view_matrix()']]], + ['volume_628',['Volume',['../classmingfx_1_1_a_a_b_b.html#a1ea0cf1c4051185b3f4296d20dd330c9',1,'mingfx::AABB']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_14.html b/dev/MinGfx/docs/html/search/functions_14.html new file mode 100644 index 0000000..29237b4 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_14.js b/dev/MinGfx/docs/html/search/functions_14.js new file mode 100644 index 0000000..28b70bc --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['w_629',['w',['../classmingfx_1_1_point2.html#ab00e35eccdc4b7deae8172f5954a86e8',1,'mingfx::Point2::w()'],['../classmingfx_1_1_point3.html#abbf85b5749b37869f4c1b98443ebbd9e',1,'mingfx::Point3::w()'],['../classmingfx_1_1_quaternion.html#a8aa53f71892f02c981d98d100a8b57c7',1,'mingfx::Quaternion::w()'],['../classmingfx_1_1_vector2.html#a267e6749091f23263d1620f801f0a831',1,'mingfx::Vector2::w()'],['../classmingfx_1_1_vector3.html#a2556298f536ba115019982222ce6e0c5',1,'mingfx::Vector3::w()']]], + ['width_630',['width',['../classmingfx_1_1_texture2_d.html#a401629d948aa144be81b94fe21938869',1,'mingfx::Texture2D']]], + ['window_631',['window',['../classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94',1,'mingfx::GraphicsApp']]], + ['window_5fheight_632',['window_height',['../classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016',1,'mingfx::GraphicsApp']]], + ['window_5fwidth_633',['window_width',['../classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0',1,'mingfx::GraphicsApp']]], + ['wrap_5fmode_634',['wrap_mode',['../classmingfx_1_1_texture2_d.html#a1c8827426f43343c0ad171e181a741ea',1,'mingfx::Texture2D']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_15.html b/dev/MinGfx/docs/html/search/functions_15.html new file mode 100644 index 0000000..6d5decd --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_15.js b/dev/MinGfx/docs/html/search/functions_15.js new file mode 100644 index 0000000..19d8f67 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x_635',['x',['../classmingfx_1_1_point2.html#a92447f64ca82f67e855da0c42db12ffa',1,'mingfx::Point2::x()'],['../classmingfx_1_1_point3.html#ac409e3213620b80c868245c1f6a6eea5',1,'mingfx::Point3::x()'],['../classmingfx_1_1_quaternion.html#a85464500e1d3c8ba10f1968426dc24ae',1,'mingfx::Quaternion::x()'],['../classmingfx_1_1_vector2.html#ae84b079eb21494bc7c9a93d32a63712a',1,'mingfx::Vector2::x()'],['../classmingfx_1_1_vector3.html#ac380342bfa614c9a3babe1efd14d2cf4',1,'mingfx::Vector3::x()']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_16.html b/dev/MinGfx/docs/html/search/functions_16.html new file mode 100644 index 0000000..5aed7d0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_16.js b/dev/MinGfx/docs/html/search/functions_16.js new file mode 100644 index 0000000..bc67585 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['y_636',['y',['../classmingfx_1_1_point2.html#a4f97a7a75276a147ac06fc4dec810ec8',1,'mingfx::Point2::y()'],['../classmingfx_1_1_point3.html#a0757315cd84f91879021d7afe18e0545',1,'mingfx::Point3::y()'],['../classmingfx_1_1_quaternion.html#adb294449db2a80bd11426148592d9e0b',1,'mingfx::Quaternion::y()'],['../classmingfx_1_1_vector2.html#ac427d5c06474777e851bed05ec5d134b',1,'mingfx::Vector2::y()'],['../classmingfx_1_1_vector3.html#aeb74fbc0a970b40abb0db8f8e490ee17',1,'mingfx::Vector3::y()']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_17.html b/dev/MinGfx/docs/html/search/functions_17.html new file mode 100644 index 0000000..ad6d5a7 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_17.js b/dev/MinGfx/docs/html/search/functions_17.js new file mode 100644 index 0000000..9dfee6b --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_17.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['z_637',['z',['../classmingfx_1_1_point3.html#ac463e3a3ec3edd02c86505ea6400d8e6',1,'mingfx::Point3::z()'],['../classmingfx_1_1_quaternion.html#a75ec001cbbf08cf5c4e1f8978082a55f',1,'mingfx::Quaternion::z()'],['../classmingfx_1_1_vector3.html#a78d1dba881575517f0427d55cc418df6',1,'mingfx::Vector3::z()']]], + ['zero_638',['Zero',['../classmingfx_1_1_point2.html#a60a2b348deab631b51caca3eb715461f',1,'mingfx::Point2::Zero()'],['../classmingfx_1_1_point3.html#a9983b62979f9ac5a11efea08d9d283ed',1,'mingfx::Point3::Zero()'],['../classmingfx_1_1_vector2.html#a7cb11f9fe8962ff9092fc1e5736faacf',1,'mingfx::Vector2::Zero()'],['../classmingfx_1_1_vector3.html#a52bf8582baa71e7d6f80c412687d9714',1,'mingfx::Vector3::Zero()']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_18.html b/dev/MinGfx/docs/html/search/functions_18.html new file mode 100644 index 0000000..b5c5c06 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_18.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_18.js b/dev/MinGfx/docs/html/search/functions_18.js new file mode 100644 index 0000000..e7e9b22 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_18.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['_7eaabb_639',['~AABB',['../classmingfx_1_1_a_a_b_b.html#aeb63c176a2f2408e803d9a2f6848eee5',1,'mingfx::AABB']]], + ['_7ebvh_640',['~BVH',['../classmingfx_1_1_b_v_h.html#af81906830adcf4648cc8cf4e214b4269',1,'mingfx::BVH']]], + ['_7ecolor_641',['~Color',['../classmingfx_1_1_color.html#ab1a90432dd7fd7b2adf41d747be85378',1,'mingfx::Color']]], + ['_7ecraftcam_642',['~CraftCam',['../classmingfx_1_1_craft_cam.html#a85ef9bebdd1595be1288bc104245f4ff',1,'mingfx::CraftCam']]], + ['_7edefaultshader_643',['~DefaultShader',['../classmingfx_1_1_default_shader.html#a0fe7d605d039ecdbf17837bc5bbe0aba',1,'mingfx::DefaultShader']]], + ['_7egraphicsapp_644',['~GraphicsApp',['../classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb',1,'mingfx::GraphicsApp']]], + ['_7ematrix4_645',['~Matrix4',['../classmingfx_1_1_matrix4.html#a8853a6b3fd0d08f1def5c9921bd47933',1,'mingfx::Matrix4']]], + ['_7emesh_646',['~Mesh',['../classmingfx_1_1_mesh.html#ace7b23730dbcb581c4886cf2b9998327',1,'mingfx::Mesh']]], + ['_7epoint2_647',['~Point2',['../classmingfx_1_1_point2.html#a7e5b2dcd7e079bdd00354e7ccf9c5c2a',1,'mingfx::Point2']]], + ['_7epoint3_648',['~Point3',['../classmingfx_1_1_point3.html#aa55aef76986cc7424c2a535d6fd1ab7a',1,'mingfx::Point3']]], + ['_7equaternion_649',['~Quaternion',['../classmingfx_1_1_quaternion.html#a1f9ddd82678ccf51a462e4e03a02c7cc',1,'mingfx::Quaternion']]], + ['_7equickshapes_650',['~QuickShapes',['../classmingfx_1_1_quick_shapes.html#a3a75dde188ec076ea46a6319ed1ca046',1,'mingfx::QuickShapes']]], + ['_7eray_651',['~Ray',['../classmingfx_1_1_ray.html#ac20909f30c07d5375598876c6d294625',1,'mingfx::Ray']]], + ['_7eshaderprogram_652',['~ShaderProgram',['../classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4',1,'mingfx::ShaderProgram']]], + ['_7etextshader_653',['~TextShader',['../classmingfx_1_1_text_shader.html#a457f7a42eceb957cdb103664dd864feb',1,'mingfx::TextShader']]], + ['_7etexture2d_654',['~Texture2D',['../classmingfx_1_1_texture2_d.html#aab734dbbcf6211507ab65d5bb94a4ef9',1,'mingfx::Texture2D']]], + ['_7eunicam_655',['~UniCam',['../classmingfx_1_1_uni_cam.html#af98022627bcb52dbf54779cfaeb6ff7e',1,'mingfx::UniCam']]], + ['_7evector2_656',['~Vector2',['../classmingfx_1_1_vector2.html#ac49b009c4b6052ebe71d5cf4ce241b1f',1,'mingfx::Vector2']]], + ['_7evector3_657',['~Vector3',['../classmingfx_1_1_vector3.html#a6e0d09d774615bcfde5645c22a645969',1,'mingfx::Vector3']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_2.html b/dev/MinGfx/docs/html/search/functions_2.html new file mode 100644 index 0000000..ca5aa10 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_2.js b/dev/MinGfx/docs/html/search/functions_2.js new file mode 100644 index 0000000..607a674 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_2.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['calcperfacenormals_416',['CalcPerFaceNormals',['../classmingfx_1_1_mesh.html#a1a5cea9cfdf4c672ba0c781ee54718f7',1,'mingfx::Mesh']]], + ['calcpervertexnormals_417',['CalcPerVertexNormals',['../classmingfx_1_1_mesh.html#acc7df547b0a2175287cc9f509c04e93c',1,'mingfx::Mesh']]], + ['clamp_418',['Clamp',['../classmingfx_1_1_gfx_math.html#af227209ec043b375497556ee2dcdf850',1,'mingfx::GfxMath']]], + ['closestpoint_419',['ClosestPoint',['../classmingfx_1_1_point3.html#a9dd5396f53b7006ec4cb63abffd90a7c',1,'mingfx::Point3']]], + ['closestpointonplane_420',['ClosestPointOnPlane',['../classmingfx_1_1_point3.html#ae31d5f91a03fabdf72b2fa54e177b743',1,'mingfx::Point3']]], + ['cofactor_421',['Cofactor',['../classmingfx_1_1_matrix4.html#a0d88ba8e15325d135157d115f2412e91',1,'mingfx::Matrix4']]], + ['color_422',['Color',['../classmingfx_1_1_color.html#ab4d264b5a1189b73443948c01eab088d',1,'mingfx::Color::Color()'],['../classmingfx_1_1_color.html#a81b442b8afcd157c260487081f25dcc3',1,'mingfx::Color::Color(float red, float green, float blue, float alpha=1.0)'],['../classmingfx_1_1_color.html#ab4d6c067128e779add5390d83ea3410e',1,'mingfx::Color::Color(float *p)'],['../classmingfx_1_1_color.html#a7e0ca85141895a108c852f59f7ca00b9',1,'mingfx::Color::Color(const std::vector< float > &vals)'],['../classmingfx_1_1_color.html#accb83cd759b7290ce2817724d57e246a',1,'mingfx::Color::Color(const Color &p)']]], + ['columntopoint3_423',['ColumnToPoint3',['../classmingfx_1_1_matrix4.html#ae991be2b3bca290b44e676a9f8dc13bd',1,'mingfx::Matrix4']]], + ['columntovector3_424',['ColumnToVector3',['../classmingfx_1_1_matrix4.html#a7396dbff36cb732e1bd878020f52bbc3',1,'mingfx::Matrix4']]], + ['conjugate_425',['Conjugate',['../classmingfx_1_1_quaternion.html#ab0e3e20f78e537de0187def78d808584',1,'mingfx::Quaternion']]], + ['craftcam_426',['CraftCam',['../classmingfx_1_1_craft_cam.html#ae0b0e8d75ffc69c6373a13f1f9c2f171',1,'mingfx::CraftCam::CraftCam()'],['../classmingfx_1_1_craft_cam.html#ab9e1864b5859c22d27ba809b1ba7a51f',1,'mingfx::CraftCam::CraftCam(const Matrix4 &initial_view_matrix)']]], + ['createfromlistofboxes_427',['CreateFromListOfBoxes',['../classmingfx_1_1_b_v_h.html#a964420ca931fa93c420f0820e1b95942',1,'mingfx::BVH']]], + ['createfrommesh_428',['CreateFromMesh',['../classmingfx_1_1_b_v_h.html#a8ed3e91ecd2a0585a0dbac605d6f2c71',1,'mingfx::BVH']]], + ['cross_429',['Cross',['../classmingfx_1_1_vector3.html#a38cd4deed7d342464619b34b0ef95bec',1,'mingfx::Vector3::Cross(const Vector3 &v) const'],['../classmingfx_1_1_vector3.html#a45d7d211135edd97ca21b047439db485',1,'mingfx::Vector3::Cross(const Vector3 &v1, const Vector3 &v2)']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_3.html b/dev/MinGfx/docs/html/search/functions_3.html new file mode 100644 index 0000000..d79f55b --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_3.js b/dev/MinGfx/docs/html/search/functions_3.js new file mode 100644 index 0000000..3658160 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_3.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['default_5fshader_430',['default_shader',['../classmingfx_1_1_quick_shapes.html#aa7564a49dc2ff8efd93dec13186cb75b',1,'mingfx::QuickShapes']]], + ['defaultshader_431',['DefaultShader',['../classmingfx_1_1_default_shader.html#ac030575fd76a6076262bdd09bbb93428',1,'mingfx::DefaultShader']]], + ['determinant_432',['Determinant',['../classmingfx_1_1_matrix4.html#a0127ebae92b50e4f10ebee8565b0248c',1,'mingfx::Matrix4']]], + ['dimensions_433',['Dimensions',['../classmingfx_1_1_a_a_b_b.html#a3bf7d5ffa3ccccf7111e98d88a3ffeec',1,'mingfx::AABB']]], + ['direction_434',['direction',['../classmingfx_1_1_ray.html#a7b7826730a410c10be00122c99fe6dbe',1,'mingfx::Ray']]], + ['distancetoplane_435',['DistanceToPlane',['../classmingfx_1_1_point3.html#af554773b2d7f4492a0727e8e42efe002',1,'mingfx::Point3']]], + ['dot_436',['Dot',['../classmingfx_1_1_quaternion.html#a90a9b715d06c75ba60eb1164dc6e9c6f',1,'mingfx::Quaternion::Dot()'],['../classmingfx_1_1_vector2.html#ae2208539c6b29712c22f557dcfdd55d9',1,'mingfx::Vector2::Dot(const Vector2 &v) const'],['../classmingfx_1_1_vector2.html#a9e81c518908ca06c98ba099b075fe1cd',1,'mingfx::Vector2::Dot(const Vector2 &v1, const Vector2 &v2)'],['../classmingfx_1_1_vector3.html#a31692a459a8056fe220d115eb5addc88',1,'mingfx::Vector3::Dot(const Vector3 &v) const'],['../classmingfx_1_1_vector3.html#a235fb20d4075960d2ce6198dc95ac507',1,'mingfx::Vector3::Dot(const Vector3 &v1, const Vector3 &v2)']]], + ['draw_437',['Draw',['../classmingfx_1_1_default_shader.html#a652b3d00bb6ae2a806b1ca3e3d42242b',1,'mingfx::DefaultShader::Draw()'],['../classmingfx_1_1_mesh.html#a75075d472938fd760477be42585aff5c',1,'mingfx::Mesh::Draw()'],['../classmingfx_1_1_uni_cam.html#ae45f3c80c205a539baeb4f1b8787777d',1,'mingfx::UniCam::Draw()']]], + ['draw3d_438',['Draw3D',['../classmingfx_1_1_text_shader.html#a2caaaf2decfac523b476951474e9a359',1,'mingfx::TextShader']]], + ['drawarrow_439',['DrawArrow',['../classmingfx_1_1_quick_shapes.html#aebe27814a826558ac0475fef3d4481eb',1,'mingfx::QuickShapes']]], + ['drawaxes_440',['DrawAxes',['../classmingfx_1_1_quick_shapes.html#a637876fdc13e84282922350b53dab5f8',1,'mingfx::QuickShapes']]], + ['drawbrush_441',['DrawBrush',['../classmingfx_1_1_quick_shapes.html#ab24811cfd980b3f2ec4ebccf6c0e8b30',1,'mingfx::QuickShapes']]], + ['drawcone_442',['DrawCone',['../classmingfx_1_1_quick_shapes.html#a1880f6dd3e794cd9f6e5d9138f93a424',1,'mingfx::QuickShapes']]], + ['drawcube_443',['DrawCube',['../classmingfx_1_1_quick_shapes.html#adad98f87a40650ff7c605a94b6d937af',1,'mingfx::QuickShapes']]], + ['drawcylinder_444',['DrawCylinder',['../classmingfx_1_1_quick_shapes.html#a69c442154f800c6bb3f6ffa8395e2844',1,'mingfx::QuickShapes']]], + ['drawfullscreentexture_445',['DrawFullscreenTexture',['../classmingfx_1_1_quick_shapes.html#abec2513648c1238f36c41cf3c85dd868',1,'mingfx::QuickShapes']]], + ['drawlines_446',['DrawLines',['../classmingfx_1_1_quick_shapes.html#af59ae8d8c5bd0447f3bb7f56112400bf',1,'mingfx::QuickShapes']]], + ['drawlinesegment_447',['DrawLineSegment',['../classmingfx_1_1_quick_shapes.html#a0feae19a04d9f315a39e2bdbf659bd7e',1,'mingfx::QuickShapes']]], + ['drawsphere_448',['DrawSphere',['../classmingfx_1_1_quick_shapes.html#aa5f4f64e3708630a6d58f6b4ca7d2744',1,'mingfx::QuickShapes']]], + ['drawsquare_449',['DrawSquare',['../classmingfx_1_1_quick_shapes.html#a4350ea23b8b9e0e8119310423d641ab3',1,'mingfx::QuickShapes::DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color)'],['../classmingfx_1_1_quick_shapes.html#a7187f72fa8e12b38dcd0ce424fc85fbc',1,'mingfx::QuickShapes::DrawSquare(const Matrix4 &modelMatrix, const Matrix4 &viewMatrix, const Matrix4 &projectionMatrix, const Color &color, const Texture2D &texture)']]], + ['drawusingnanovg_450',['DrawUsingNanoVG',['../classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0',1,'mingfx::GraphicsApp']]], + ['drawusingopengl_451',['DrawUsingOpenGL',['../classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_4.html b/dev/MinGfx/docs/html/search/functions_4.html new file mode 100644 index 0000000..1657cad --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_4.js b/dev/MinGfx/docs/html/search/functions_4.js new file mode 100644 index 0000000..9c8ea91 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['eye_452',['eye',['../classmingfx_1_1_craft_cam.html#a82a8e20596247e2986e5929c1ef7f150',1,'mingfx::CraftCam::eye()'],['../classmingfx_1_1_uni_cam.html#a65d5735b4b3a8e38f2b30df4133cadd2',1,'mingfx::UniCam::eye()']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_5.html b/dev/MinGfx/docs/html/search/functions_5.html new file mode 100644 index 0000000..9301d6b --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_5.js b/dev/MinGfx/docs/html/search/functions_5.js new file mode 100644 index 0000000..797ad04 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_5.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['fastintersectmesh_453',['FastIntersectMesh',['../classmingfx_1_1_ray.html#ac90097090f0f8f49db13f6f232712afc',1,'mingfx::Ray']]], + ['fileexists_454',['FileExists',['../classmingfx_1_1_platform.html#a045007efda73123a7f4019837d83bc92',1,'mingfx::Platform']]], + ['filter_5fmode_455',['filter_mode',['../classmingfx_1_1_texture2_d.html#af0052203fcfd9bbb903a40d14700b13b',1,'mingfx::Texture2D']]], + ['findfile_456',['FindFile',['../classmingfx_1_1_platform.html#a32a392f4bac832c95fabc2d10bd03ad1',1,'mingfx::Platform::FindFile(const std::string &basename, const std::vector< std::string > &searchpath)'],['../classmingfx_1_1_platform.html#a03ade910313dd9580c9e37a7b63f87b2',1,'mingfx::Platform::FindFile(const std::string &basename, const std::string &searchpath)']]], + ['findmingfxdatafile_457',['FindMinGfxDataFile',['../classmingfx_1_1_platform.html#a2c36ca57a246efa218a49a942c8c4a3b',1,'mingfx::Platform']]], + ['findmingfxshaderfile_458',['FindMinGfxShaderFile',['../classmingfx_1_1_platform.html#af12cd63e1ede33529d8c282d7d916169',1,'mingfx::Platform']]], + ['framebuffer_5fheight_459',['framebuffer_height',['../classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32',1,'mingfx::GraphicsApp']]], + ['framebuffer_5fwidth_460',['framebuffer_width',['../classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696',1,'mingfx::GraphicsApp']]], + ['fromaxisangle_461',['FromAxisAngle',['../classmingfx_1_1_quaternion.html#a5bacec2f9a3cbbcf24572f9c8eeb480c',1,'mingfx::Quaternion']]], + ['fromeulerangleszyx_462',['FromEulerAnglesZYX',['../classmingfx_1_1_quaternion.html#a9548599ea5c527f9f67d2ea6710e3d18',1,'mingfx::Quaternion']]], + ['fromrowmajorelements_463',['FromRowMajorElements',['../classmingfx_1_1_matrix4.html#add98bfa1cf6a10dbae0e8ae8defe728b',1,'mingfx::Matrix4']]], + ['frustum_464',['Frustum',['../classmingfx_1_1_matrix4.html#a8e2f7b50cd2c8853e007829df9863722',1,'mingfx::Matrix4']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_6.html b/dev/MinGfx/docs/html/search/functions_6.html new file mode 100644 index 0000000..9c4f5fc --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_6.js b/dev/MinGfx/docs/html/search/functions_6.js new file mode 100644 index 0000000..6f54b78 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['graphicsapp_465',['GraphicsApp',['../classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_7.html b/dev/MinGfx/docs/html/search/functions_7.html new file mode 100644 index 0000000..46b5c0f --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_7.js b/dev/MinGfx/docs/html/search/functions_7.js new file mode 100644 index 0000000..9efaf3f --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['height_466',['height',['../classmingfx_1_1_texture2_d.html#a3c396193b466053f23803894039d8d88',1,'mingfx::Texture2D']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_8.html b/dev/MinGfx/docs/html/search/functions_8.html new file mode 100644 index 0000000..31a1d95 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_8.js b/dev/MinGfx/docs/html/search/functions_8.js new file mode 100644 index 0000000..ab69095 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_8.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['ilerp_467',['iLerp',['../classmingfx_1_1_gfx_math.html#af255bde64498e9b55be466abeea97f4d',1,'mingfx::GfxMath']]], + ['init_468',['Init',['../classmingfx_1_1_default_shader.html#a5cb9f0a1709452268858ec338448a4c3',1,'mingfx::DefaultShader::Init()'],['../classmingfx_1_1_text_shader.html#ad60a8b572adc30dad47e2d163dc603a3',1,'mingfx::TextShader::Init()']]], + ['initfrombytes_469',['InitFromBytes',['../classmingfx_1_1_texture2_d.html#aba57b01065096fe9f6483e8f68622944',1,'mingfx::Texture2D']]], + ['initfromfile_470',['InitFromFile',['../classmingfx_1_1_texture2_d.html#a8eded044ccdf9bd3e1e5bcfe74526bdc',1,'mingfx::Texture2D']]], + ['initfromfloats_471',['InitFromFloats',['../classmingfx_1_1_texture2_d.html#aee8a0aad1795680cb840ffcf544ed7b8',1,'mingfx::Texture2D']]], + ['initgraphicscontext_472',['InitGraphicsContext',['../classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1',1,'mingfx::GraphicsApp']]], + ['initialized_473',['initialized',['../classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe',1,'mingfx::ShaderProgram::initialized()'],['../classmingfx_1_1_texture2_d.html#a15d5c319cf7e012e703668f4d4e7be87',1,'mingfx::Texture2D::initialized()']]], + ['initnanogui_474',['InitNanoGUI',['../classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a',1,'mingfx::GraphicsApp']]], + ['initopengl_475',['InitOpenGL',['../classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3',1,'mingfx::GraphicsApp']]], + ['intersectaabb_476',['IntersectAABB',['../classmingfx_1_1_ray.html#a57d3ee10518ed361ae02d9cbdef842b7',1,'mingfx::Ray']]], + ['intersectandreturnuserdata_477',['IntersectAndReturnUserData',['../classmingfx_1_1_b_v_h.html#afad54f50a29e8b3aace6cdec5c792c56',1,'mingfx::BVH']]], + ['intersectmesh_478',['IntersectMesh',['../classmingfx_1_1_ray.html#a79caa1df0839d13339575d3d5527ae6f',1,'mingfx::Ray']]], + ['intersectplane_479',['IntersectPlane',['../classmingfx_1_1_ray.html#a8707604031eb9437c449345d85d69d24',1,'mingfx::Ray']]], + ['intersectquad_480',['IntersectQuad',['../classmingfx_1_1_ray.html#a37689523a0b73d3d3288ce60bdcb7ae3',1,'mingfx::Ray']]], + ['intersectsphere_481',['IntersectSphere',['../classmingfx_1_1_ray.html#a970c7dbc19167be625967fabfb39b4ff',1,'mingfx::Ray']]], + ['intersecttriangle_482',['IntersectTriangle',['../classmingfx_1_1_ray.html#a1a6130616c4e4eebe9d09181b0f8b734',1,'mingfx::Ray']]], + ['inverse_483',['Inverse',['../classmingfx_1_1_matrix4.html#ab3f360906e15730eee621826b5f0bbc5',1,'mingfx::Matrix4']]], + ['iskeydown_484',['IsKeyDown',['../classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac',1,'mingfx::GraphicsApp']]], + ['isleftmousedown_485',['IsLeftMouseDown',['../classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7',1,'mingfx::GraphicsApp']]], + ['ismiddlemousedown_486',['IsMiddleMouseDown',['../classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434',1,'mingfx::GraphicsApp']]], + ['isrightmousedown_487',['IsRightMouseDown',['../classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_9.html b/dev/MinGfx/docs/html/search/functions_9.html new file mode 100644 index 0000000..9a8e429 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_9.js b/dev/MinGfx/docs/html/search/functions_9.js new file mode 100644 index 0000000..d8cc9e6 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_9.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['length_488',['Length',['../classmingfx_1_1_quaternion.html#af6527ae19f31be2b265b8b8c4b34b77a',1,'mingfx::Quaternion::Length()'],['../classmingfx_1_1_ray.html#a3c926e2da6dfd1b0a435577617eae984',1,'mingfx::Ray::Length()'],['../classmingfx_1_1_vector2.html#a71b90903d00cdc318ea42f593db6dbb9',1,'mingfx::Vector2::Length()'],['../classmingfx_1_1_vector3.html#a7633dc1625b1f2e6b381438e896b45a3',1,'mingfx::Vector3::Length()']]], + ['lerp_489',['Lerp',['../classmingfx_1_1_color.html#abdec9bbfdd82ed75afc45b103c8bbcf4',1,'mingfx::Color::Lerp(const Color &b, float alpha) const'],['../classmingfx_1_1_color.html#a883787431fef36c06c724c3b9ed25363',1,'mingfx::Color::Lerp(const Color &a, const Color &b, float alpha)'],['../classmingfx_1_1_gfx_math.html#ace452fb6b86eb638897b474e9dd51647',1,'mingfx::GfxMath::Lerp()'],['../classmingfx_1_1_point2.html#a900567ad5e3c0e6de217b52167c49fd6',1,'mingfx::Point2::Lerp(const Point2 &b, float alpha) const'],['../classmingfx_1_1_point2.html#a680648ae01c549c48f7a3d5d75d8791e',1,'mingfx::Point2::Lerp(const Point2 &a, const Point2 &b, float alpha)'],['../classmingfx_1_1_point3.html#a228a1f3754b8ee82b9bb148ce183fc5b',1,'mingfx::Point3::Lerp(const Point3 &b, float alpha) const'],['../classmingfx_1_1_point3.html#a206691c31872e537eefbf897603dba74',1,'mingfx::Point3::Lerp(const Point3 &a, const Point3 &b, float alpha)'],['../classmingfx_1_1_vector2.html#a5813ffa3c185551eec1927e1daa4cb17',1,'mingfx::Vector2::Lerp(const Vector2 &b, float alpha) const'],['../classmingfx_1_1_vector2.html#ac332b5f01b3357b85e6d279fb059d561',1,'mingfx::Vector2::Lerp(const Vector2 &a, const Vector2 &b, float alpha)'],['../classmingfx_1_1_vector3.html#a8dafc21c64a4964bac27519972d909b6',1,'mingfx::Vector3::Lerp(const Vector3 &b, float alpha) const'],['../classmingfx_1_1_vector3.html#a489b042bedf8fa329ac05fe905ca1c6f',1,'mingfx::Vector3::Lerp(const Vector3 &a, const Vector3 &b, float alpha)']]], + ['light_490',['light',['../classmingfx_1_1_default_shader.html#aa2ed33efad35aefbb400be45250cd316',1,'mingfx::DefaultShader']]], + ['lightproperties_491',['LightProperties',['../classmingfx_1_1_default_shader_1_1_light_properties.html#a582ceee332260b06cbf2ec607257aba3',1,'mingfx::DefaultShader::LightProperties']]], + ['linkprogram_492',['LinkProgram',['../classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794',1,'mingfx::ShaderProgram']]], + ['loadfromobj_493',['LoadFromOBJ',['../classmingfx_1_1_mesh.html#a8d05faf18ef8d170fc3c2a343075823f',1,'mingfx::Mesh']]], + ['look_494',['look',['../classmingfx_1_1_craft_cam.html#a2c7546bccfbf986eb9cd0a2784f74859',1,'mingfx::CraftCam::look()'],['../classmingfx_1_1_uni_cam.html#a8363576bf0f85c74d80ced697bd73d40',1,'mingfx::UniCam::look()']]], + ['look_5fscale_495',['look_scale',['../classmingfx_1_1_craft_cam.html#a96ba4a36029ca8234576cbf2791c5ccb',1,'mingfx::CraftCam']]], + ['lookat_496',['LookAt',['../classmingfx_1_1_matrix4.html#a4543695a6dfc996d0312b70c2eaa00de',1,'mingfx::Matrix4']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_a.html b/dev/MinGfx/docs/html/search/functions_a.html new file mode 100644 index 0000000..5ecc152 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_a.js b/dev/MinGfx/docs/html/search/functions_a.js new file mode 100644 index 0000000..5437ddf --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_a.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['material_497',['material',['../classmingfx_1_1_quick_shapes.html#ac8b702a25296cfea15eef1e185333272',1,'mingfx::QuickShapes']]], + ['materialproperties_498',['MaterialProperties',['../classmingfx_1_1_default_shader_1_1_material_properties.html#aa24361a9c6eb0a87355d0ad00e47dd96',1,'mingfx::DefaultShader::MaterialProperties']]], + ['matrix4_499',['Matrix4',['../classmingfx_1_1_matrix4.html#a50990f00b756d640670a0b02129afd22',1,'mingfx::Matrix4::Matrix4()'],['../classmingfx_1_1_matrix4.html#a09a366a3ef940ff355f8d5c521baa57d',1,'mingfx::Matrix4::Matrix4(const float *a)'],['../classmingfx_1_1_matrix4.html#a0abaeb690794c4a55e74c9b5fd82d138',1,'mingfx::Matrix4::Matrix4(const std::vector< float > &a)'],['../classmingfx_1_1_matrix4.html#a4bcf311614006c551f57d2b0dcd32d87',1,'mingfx::Matrix4::Matrix4(const Matrix4 &m2)']]], + ['max_500',['max',['../classmingfx_1_1_a_a_b_b.html#abac247fedc82467c6b058ed4fe77d2a4',1,'mingfx::AABB']]], + ['mesh_501',['Mesh',['../classmingfx_1_1_mesh.html#a69613870d54989f4226e50caf4ca9fb9',1,'mingfx::Mesh::Mesh()'],['../classmingfx_1_1_mesh.html#a76b4977f0a7f156aa8a0027f10dcbdc1',1,'mingfx::Mesh::Mesh(const Mesh &other)']]], + ['min_502',['min',['../classmingfx_1_1_a_a_b_b.html#a3b46cdd39ffed26b7982d641b53158e6',1,'mingfx::AABB']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_b.html b/dev/MinGfx/docs/html/search/functions_b.html new file mode 100644 index 0000000..e301fed --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_b.js b/dev/MinGfx/docs/html/search/functions_b.js new file mode 100644 index 0000000..0442033 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['native_5ffont_5fsize_503',['native_font_size',['../classmingfx_1_1_text_shader.html#a707b2b36547db78d19139575003c8a0d',1,'mingfx::TextShader']]], + ['normalize_504',['Normalize',['../classmingfx_1_1_quaternion.html#a05def5c8eb729037b3d9522711a5c2a2',1,'mingfx::Quaternion::Normalize()'],['../classmingfx_1_1_vector2.html#a632ddd5b06c48fa0f6f39550e91082c0',1,'mingfx::Vector2::Normalize()'],['../classmingfx_1_1_vector2.html#a06d6c283aba957bddc2b9849698838b2',1,'mingfx::Vector2::Normalize(const Vector2 &v)'],['../classmingfx_1_1_vector3.html#a9b8e9ecbe10477adec527842f62d0dca',1,'mingfx::Vector3::Normalize()'],['../classmingfx_1_1_vector3.html#aeff0177e2111139469b60733248fad8d',1,'mingfx::Vector3::Normalize(const Vector3 &v)']]], + ['normalizeddevicecoordstopixels_505',['NormalizedDeviceCoordsToPixels',['../classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248',1,'mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels(const Point2 &pointInNDC)'],['../classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93',1,'mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels(const Vector2 &pointInNDC)']]], + ['num_5flights_506',['num_lights',['../classmingfx_1_1_default_shader.html#ac5b779672a983df8aa67c9cbe026e0c2',1,'mingfx::DefaultShader']]], + ['num_5ftriangles_507',['num_triangles',['../classmingfx_1_1_mesh.html#ab3f3779506e15e3888ccbb8b9b572b8f',1,'mingfx::Mesh']]], + ['num_5fvertices_508',['num_vertices',['../classmingfx_1_1_mesh.html#ab8f6856429466f1b4600a6ec27b84d0d',1,'mingfx::Mesh']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_c.html b/dev/MinGfx/docs/html/search/functions_c.html new file mode 100644 index 0000000..c4f3268 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_c.js b/dev/MinGfx/docs/html/search/functions_c.js new file mode 100644 index 0000000..9ae5851 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_c.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['onbuttondown_509',['OnButtonDown',['../classmingfx_1_1_uni_cam.html#a85afba6e8792636f3c6ba2433db1c52f',1,'mingfx::UniCam']]], + ['onbuttonup_510',['OnButtonUp',['../classmingfx_1_1_uni_cam.html#a2a9431dc3943c8dc485994d88ce2a58a',1,'mingfx::UniCam']]], + ['ondrag_511',['OnDrag',['../classmingfx_1_1_uni_cam.html#a33f1b41fcf53ea78ca2b3640902c5bbe',1,'mingfx::UniCam']]], + ['one_512',['One',['../classmingfx_1_1_point2.html#a38149d8797bf7406fc34cab0ea5a3ac8',1,'mingfx::Point2::One()'],['../classmingfx_1_1_point3.html#a2cfcbefe652720779e0d7beff1c86ece',1,'mingfx::Point3::One()'],['../classmingfx_1_1_vector2.html#a5b51e62f03e95d6be1262f037aecf0fd',1,'mingfx::Vector2::One()'],['../classmingfx_1_1_vector3.html#af71b12760516a9cc4837ba9e1dee28db',1,'mingfx::Vector3::One()']]], + ['onkeydown_513',['OnKeyDown',['../classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01',1,'mingfx::GraphicsApp']]], + ['onkeyrepeat_514',['OnKeyRepeat',['../classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0',1,'mingfx::GraphicsApp']]], + ['onkeyup_515',['OnKeyUp',['../classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c',1,'mingfx::GraphicsApp']]], + ['onleftmousedown_516',['OnLeftMouseDown',['../classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17',1,'mingfx::GraphicsApp']]], + ['onleftmousedrag_517',['OnLeftMouseDrag',['../classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b',1,'mingfx::GraphicsApp']]], + ['onleftmouseup_518',['OnLeftMouseUp',['../classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613',1,'mingfx::GraphicsApp']]], + ['onmiddlemousedown_519',['OnMiddleMouseDown',['../classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48',1,'mingfx::GraphicsApp']]], + ['onmiddlemousedrag_520',['OnMiddleMouseDrag',['../classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6',1,'mingfx::GraphicsApp']]], + ['onmiddlemouseup_521',['OnMiddleMouseUp',['../classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08',1,'mingfx::GraphicsApp']]], + ['onmousemove_522',['OnMouseMove',['../classmingfx_1_1_craft_cam.html#a8366e9d8e9bb3b048d1dd14af2f76311',1,'mingfx::CraftCam::OnMouseMove()'],['../classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f',1,'mingfx::GraphicsApp::OnMouseMove(const Point2 &pos, const Vector2 &delta)']]], + ['onrightmousedown_523',['OnRightMouseDown',['../classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c',1,'mingfx::GraphicsApp']]], + ['onrightmousedrag_524',['OnRightMouseDrag',['../classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7',1,'mingfx::GraphicsApp']]], + ['onrightmouseup_525',['OnRightMouseUp',['../classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3',1,'mingfx::GraphicsApp']]], + ['onspecialkeydown_526',['OnSpecialKeyDown',['../classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952',1,'mingfx::GraphicsApp']]], + ['onspecialkeyrepeat_527',['OnSpecialKeyRepeat',['../classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22',1,'mingfx::GraphicsApp']]], + ['onspecialkeyup_528',['OnSpecialKeyUp',['../classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14',1,'mingfx::GraphicsApp']]], + ['onwindowresize_529',['OnWindowResize',['../classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a',1,'mingfx::GraphicsApp']]], + ['opengl_5fid_530',['opengl_id',['../classmingfx_1_1_texture2_d.html#ad4e0faadfe016e6ee501e66fc0244504',1,'mingfx::Texture2D']]], + ['operator_21_3d_531',['operator!=',['../classmingfx_1_1_color.html#acf92f9f413cf11639b73dc0d7d431244',1,'mingfx::Color::operator!=()'],['../classmingfx_1_1_matrix4.html#ab186b0ae1ae669346c0718c2489cd71b',1,'mingfx::Matrix4::operator!=()'],['../classmingfx_1_1_point2.html#a5b99fcf93a0c6d2b247290f5564f8a84',1,'mingfx::Point2::operator!=()'],['../classmingfx_1_1_point3.html#acccf9d3fca27174c18ada3b33209c71e',1,'mingfx::Point3::operator!=()'],['../classmingfx_1_1_quaternion.html#ad72c021d2d1fa543c96ac4a8b360dd2e',1,'mingfx::Quaternion::operator!=()'],['../classmingfx_1_1_ray.html#ab62fa6ea1c20870f67c58401aefe3eff',1,'mingfx::Ray::operator!=()'],['../classmingfx_1_1_vector2.html#a1cf3488f1f14a9bf7f6e1278c1c63cdb',1,'mingfx::Vector2::operator!=()'],['../classmingfx_1_1_vector3.html#ab93acb916c310920b9c011159eaaa016',1,'mingfx::Vector3::operator!=()']]], + ['operator_28_29_532',['operator()',['../classmingfx_1_1_matrix4.html#aa324d0cec02c452fb938af28725d5df9',1,'mingfx::Matrix4::operator()(const int row, const int col) const'],['../classmingfx_1_1_matrix4.html#a470bba77b8e3c47de7adaa18046e6096',1,'mingfx::Matrix4::operator()(const int row, const int col)']]], + ['operator_2a_533',['operator*',['../namespacemingfx.html#a0a456bccfb238b9644cf21669cf35b8c',1,'mingfx::operator*(const Quaternion &q1, const Quaternion &q2)'],['../namespacemingfx.html#a55f694123e83d1649c112e806359d4b6',1,'mingfx::operator*(const float s, const Quaternion &q)'],['../namespacemingfx.html#aadc0e86a31d54469e730669067b102c2',1,'mingfx::operator*(const Matrix4 &m1, const Matrix4 &m2)'],['../namespacemingfx.html#aa8a18cb8506dee589eaf6883a32e6fb5',1,'mingfx::operator*(const Vector3 &v, const float s)'],['../namespacemingfx.html#a7e3941689c65388690916d00e0d423d4',1,'mingfx::operator*(const float s, const Vector3 &v)'],['../namespacemingfx.html#a8358de6421374fb037e8c51e8f2d5878',1,'mingfx::operator*(const Vector2 &v, const float s)'],['../namespacemingfx.html#a8bc25e621d21323fdd96f2c4a4141432',1,'mingfx::operator*(const float s, const Vector2 &v)'],['../namespacemingfx.html#adb96b0188d1ceda03ed8d297817502c9',1,'mingfx::operator*(const Quaternion &q, const float s)'],['../namespacemingfx.html#a1af1c07624961984759120b7af7f9ce4',1,'mingfx::operator*(const Matrix4 &m, const Ray &r)'],['../namespacemingfx.html#abb2cfd42e696494e4797d8f7e11f6d77',1,'mingfx::operator*(const Matrix4 &m, const Vector3 &v)'],['../namespacemingfx.html#a5b8dabff5d6c9ddcef5e15b0ef807c80',1,'mingfx::operator*(const Matrix4 &m, const Point3 &p)'],['../namespacemingfx.html#a061ff38340cf1aad4612790b0a600aeb',1,'mingfx::operator*(const float &s, const Matrix4 &m)'],['../namespacemingfx.html#ae5708e414f585dde2a5418ddae259a57',1,'mingfx::operator*(const Matrix4 &m, const float &s)']]], + ['operator_2b_534',['operator+',['../namespacemingfx.html#aeeeb04b70f8e8becbcda7a3dc7024c1b',1,'mingfx::operator+(const Vector3 &v1, const Vector3 &v2)'],['../namespacemingfx.html#aadea317107a50ec6847ce01927b61c82',1,'mingfx::operator+(const Point3 &p, const Vector3 &v)'],['../namespacemingfx.html#a4b4428d2cf65ba5226ef4036352d311e',1,'mingfx::operator+(const Vector3 &v, const Point3 &p)'],['../namespacemingfx.html#acdffada748181cc17ec93784f858ff9f',1,'mingfx::operator+(const Vector2 &v1, const Vector2 &v2)'],['../namespacemingfx.html#ab2083f9992ba509a275db11522f16a2e',1,'mingfx::operator+(const Point2 &p, const Vector2 &v)'],['../namespacemingfx.html#ac71c01d7c300671cb343a24b68a875bf',1,'mingfx::operator+(const Vector2 &v, const Point2 &p)'],['../namespacemingfx.html#ad49375487853a642b3f372c95cff1a96',1,'mingfx::operator+(const Quaternion &q1, const Quaternion &q2)'],['../namespacemingfx.html#a3c3b45ed6edf3fe76f98a7fd165dca03',1,'mingfx::operator+(const AABB &A, const AABB &B)']]], + ['operator_2d_535',['operator-',['../namespacemingfx.html#a61f2d974c78e8884bb64c2759e455101',1,'mingfx::operator-(const Quaternion &q1, const Quaternion &q2)'],['../namespacemingfx.html#a2f5a225a54f07164d5172a3721a3aee6',1,'mingfx::operator-(const Quaternion &q)'],['../namespacemingfx.html#a5daeaa383c40eed6f41b2c1b7930499f',1,'mingfx::operator-(const Vector2 &v)'],['../namespacemingfx.html#ae81fac825c0f6eca59cc1a1cc06d63f2',1,'mingfx::operator-(const Point2 &p, const Vector2 &v)'],['../namespacemingfx.html#a128585c0b87e03beda4a660d4e58789b',1,'mingfx::operator-(const Vector2 &v1, const Vector2 &v2)'],['../namespacemingfx.html#ad370bce0bb5b88beb974aad1d44890e8',1,'mingfx::operator-(const Point2 &p1, const Point2 &p2)'],['../namespacemingfx.html#afd07add6169773bae12d40201f8af7db',1,'mingfx::operator-(const Vector3 &v)'],['../namespacemingfx.html#a579b90d99a1d6f794ca44017ded3a8db',1,'mingfx::operator-(const Point3 &p, const Vector3 &v)'],['../namespacemingfx.html#aecdf7f36c4feb04034f1d07c49d5c0e3',1,'mingfx::operator-(const Vector3 &v1, const Vector3 &v2)'],['../namespacemingfx.html#a77d92da8f1a866306518422cd9d2f0af',1,'mingfx::operator-(const Point3 &p1, const Point3 &p2)']]], + ['operator_2f_536',['operator/',['../namespacemingfx.html#a444ae88d836b913ac8307fbf4357f7ed',1,'mingfx::operator/(const Quaternion &q, const float s)'],['../namespacemingfx.html#a79ffb6c38c6c0b68ce1fdb7ae76ea6bd',1,'mingfx::operator/(const Vector2 &v, const float s)'],['../namespacemingfx.html#aa19b1dea0b7aa468950e56044fda328a',1,'mingfx::operator/(const Vector3 &v, const float s)']]], + ['operator_3c_3c_537',['operator<<',['../namespacemingfx.html#a1584104dea1f0a5636c868b67ddf6b10',1,'mingfx::operator<<(std::ostream &os, const Matrix4 &m)'],['../namespacemingfx.html#a6bc967741341f4f318a505d884192906',1,'mingfx::operator<<(std::ostream &os, const Color &c)'],['../namespacemingfx.html#a58ddc500b8c3e12f8af4515f258540cb',1,'mingfx::operator<<(std::ostream &os, const Point2 &p)'],['../namespacemingfx.html#a53ce6bc4f4abdd3797d7af47adecbaf6',1,'mingfx::operator<<(std::ostream &os, const Point3 &p)'],['../namespacemingfx.html#ac4b78a682ff8d1ec298e0df7f742658d',1,'mingfx::operator<<(std::ostream &os, const Quaternion &q)'],['../namespacemingfx.html#ad7c839e598b7be6c1b407330dfacc980',1,'mingfx::operator<<(std::ostream &os, const Ray &r)'],['../namespacemingfx.html#acbe43aa24ecedf663c65becf2be282c7',1,'mingfx::operator<<(std::ostream &os, const Vector2 &v)'],['../namespacemingfx.html#a3425c24faf923364cd3a764d50601c52',1,'mingfx::operator<<(std::ostream &os, const Vector3 &v)']]], + ['operator_3d_538',['operator=',['../classmingfx_1_1_vector3.html#aa5b1c05c285fad7f2709f6f351a63608',1,'mingfx::Vector3::operator=()'],['../classmingfx_1_1_vector2.html#a28c44a323e5bd1a251dee9e00e2e1769',1,'mingfx::Vector2::operator=()'],['../classmingfx_1_1_quaternion.html#ac5f82b7ed1d620c3c15f57aca028fcdd',1,'mingfx::Quaternion::operator=()'],['../classmingfx_1_1_point3.html#a8e54b18bfaa39f4b7048b85c9ca43c3d',1,'mingfx::Point3::operator=()'],['../classmingfx_1_1_point2.html#afc68153cce7dc528e95cf5ad81c63902',1,'mingfx::Point2::operator=()'],['../classmingfx_1_1_matrix4.html#a9ad8a8bc180ce213956d6d7d3fa19770',1,'mingfx::Matrix4::operator=()'],['../classmingfx_1_1_color.html#ae51a066a9bb018e4f050d9b8cc7f330e',1,'mingfx::Color::operator=()']]], + ['operator_3d_3d_539',['operator==',['../classmingfx_1_1_vector3.html#a85486d0a355417fe4b41fa64146c9e98',1,'mingfx::Vector3::operator==()'],['../classmingfx_1_1_vector2.html#ad7acc2cf4dcd2eca210899c846bb7dfe',1,'mingfx::Vector2::operator==()'],['../classmingfx_1_1_ray.html#a87b07c4f7c9f33189efade7e519b5d9d',1,'mingfx::Ray::operator==()'],['../classmingfx_1_1_quaternion.html#aa89165641485cf9337cd6279df40a403',1,'mingfx::Quaternion::operator==()'],['../classmingfx_1_1_point3.html#ab22d5cc4631f26274ada550c90d39699',1,'mingfx::Point3::operator==()'],['../classmingfx_1_1_matrix4.html#a9ec2ee167a450cd7b992384e4cc5bb73',1,'mingfx::Matrix4::operator==()'],['../classmingfx_1_1_color.html#a5411077527ff2a12d18ce1ae52688cf0',1,'mingfx::Color::operator==()'],['../classmingfx_1_1_point2.html#ae8729260293b993bbf3cb31c0a33edfa',1,'mingfx::Point2::operator==()']]], + ['operator_3e_3e_540',['operator>>',['../namespacemingfx.html#a256924759a6718882a2b40e17d3e523d',1,'mingfx::operator>>(std::istream &is, Point2 &p)'],['../namespacemingfx.html#ad95e9b494b9761895d57e2b698b69afd',1,'mingfx::operator>>(std::istream &is, Point3 &p)'],['../namespacemingfx.html#a59fb7a99df5c572849e31065884b2235',1,'mingfx::operator>>(std::istream &is, Quaternion &q)'],['../namespacemingfx.html#a0412270963460363fa015b9b4785cc59',1,'mingfx::operator>>(std::istream &is, Ray &r)'],['../namespacemingfx.html#ab3f12496d7a5028b71882373d6fa7203',1,'mingfx::operator>>(std::istream &is, Vector2 &v)'],['../namespacemingfx.html#a8cc2f52569661416cb2ca67c516b7c93',1,'mingfx::operator>>(std::istream &is, Vector3 &v)'],['../namespacemingfx.html#a6eb31e6e81c6e29144799be4c9db404d',1,'mingfx::operator>>(std::istream &is, Color &c)'],['../namespacemingfx.html#a05fc1c0b2b6011283c019242d6a2de74',1,'mingfx::operator>>(std::istream &is, Matrix4 &m)']]], + ['operator_5b_5d_541',['operator[]',['../classmingfx_1_1_quaternion.html#a40e6587cc0511572297c5507634db7e1',1,'mingfx::Quaternion::operator[]()'],['../classmingfx_1_1_vector2.html#ae1fc0ce3ca1af3d0546af32742e13000',1,'mingfx::Vector2::operator[](const int i) const'],['../classmingfx_1_1_vector2.html#a93acf7f4f150cfe53859e31d90eddd1e',1,'mingfx::Vector2::operator[](const int i)'],['../classmingfx_1_1_vector3.html#aa37b1fc4b1df9f72726d981c08cd0d1b',1,'mingfx::Vector3::operator[](const int i) const'],['../classmingfx_1_1_vector3.html#abcdda4627b24af879aba38d4fc0e6f71',1,'mingfx::Vector3::operator[](const int i)'],['../classmingfx_1_1_quaternion.html#a548d09ecd25788241d734240c0dd7ea8',1,'mingfx::Quaternion::operator[]()'],['../classmingfx_1_1_matrix4.html#af9b02807d81eac55d66238f246c53656',1,'mingfx::Matrix4::operator[](const int i)'],['../classmingfx_1_1_matrix4.html#acd64f0db45e255d61dde4f6fa10a4127',1,'mingfx::Matrix4::operator[](const int i) const'],['../classmingfx_1_1_color.html#a474ed028db8b31e359d8bfec50147bcc',1,'mingfx::Color::operator[](const int i)'],['../classmingfx_1_1_color.html#aa879c4f6e90c419a2c121e323ce31500',1,'mingfx::Color::operator[](const int i) const'],['../classmingfx_1_1_point3.html#a790468d68b6d957b22959f9078f85c3e',1,'mingfx::Point3::operator[](const int i)'],['../classmingfx_1_1_point3.html#a3a586db5b58d5f1fdaddb1e33e84d566',1,'mingfx::Point3::operator[](const int i) const'],['../classmingfx_1_1_point2.html#a50f09df619fd226e6dc3ccff452abab3',1,'mingfx::Point2::operator[](const int i)'],['../classmingfx_1_1_point2.html#af4c0cc334dfbfe8e8068156e6da16542',1,'mingfx::Point2::operator[](const int i) const']]], + ['origin_542',['origin',['../classmingfx_1_1_ray.html#a2fe0ca901c1a5f3ce5f74aa8e5f0d0fe',1,'mingfx::Ray']]], + ['origin_543',['Origin',['../classmingfx_1_1_point2.html#a24d7a5121fceba01b46f3ba0f6525630',1,'mingfx::Point2::Origin()'],['../classmingfx_1_1_point3.html#aecb7c3137356cd4470851c54a47c7930',1,'mingfx::Point3::Origin()']]], + ['orthonormal_544',['Orthonormal',['../classmingfx_1_1_matrix4.html#a9ad5c85784e84fa0a941361eaaae0250',1,'mingfx::Matrix4']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_d.html b/dev/MinGfx/docs/html/search/functions_d.html new file mode 100644 index 0000000..7a1ed06 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_d.js b/dev/MinGfx/docs/html/search/functions_d.js new file mode 100644 index 0000000..85f19fd --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['perspective_545',['Perspective',['../classmingfx_1_1_matrix4.html#a0e34aee86758a0397074590b87712c5e',1,'mingfx::Matrix4']]], + ['pixel_546',['Pixel',['../classmingfx_1_1_texture2_d.html#a1e843f3d8904f9c7a99f7614f87de73b',1,'mingfx::Texture2D']]], + ['pixelstonormalizeddevicecoords_547',['PixelsToNormalizedDeviceCoords',['../classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a',1,'mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords(const Point2 &pointInPixels)'],['../classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1',1,'mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords(const Vector2 &vectorInPixels)']]], + ['point2_548',['Point2',['../classmingfx_1_1_point2.html#a2e5869d810b52be4ba43c8a4f4e117a1',1,'mingfx::Point2::Point2()'],['../classmingfx_1_1_point2.html#a716fcff21456f29561ec27118a646483',1,'mingfx::Point2::Point2(float x, float y)'],['../classmingfx_1_1_point2.html#a4ba487a2038ebc78b461b66f1987053f',1,'mingfx::Point2::Point2(float *p)'],['../classmingfx_1_1_point2.html#a97464af92444984e275dca38a3f4eef0',1,'mingfx::Point2::Point2(const Point2 &p)']]], + ['point3_549',['Point3',['../classmingfx_1_1_point3.html#ae8ab322852c24c6e03bed03cac443664',1,'mingfx::Point3::Point3()'],['../classmingfx_1_1_point3.html#a29d113f0fa37fa04a642817c680fe953',1,'mingfx::Point3::Point3(float x, float y, float z)'],['../classmingfx_1_1_point3.html#a062caf579ef643b25129cc35b3dbe756',1,'mingfx::Point3::Point3(float *p)'],['../classmingfx_1_1_point3.html#a23534a1ce3d4466c303b9205bd21cd97',1,'mingfx::Point3::Point3(const Point3 &p)']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_e.html b/dev/MinGfx/docs/html/search/functions_e.html new file mode 100644 index 0000000..22d2a6b --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_e.js b/dev/MinGfx/docs/html/search/functions_e.js new file mode 100644 index 0000000..975d4f8 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quaternion_550',['Quaternion',['../classmingfx_1_1_quaternion.html#ad58ac80804ec63af354912a71361f165',1,'mingfx::Quaternion::Quaternion()'],['../classmingfx_1_1_quaternion.html#a5c6cbe4fc70e8e4ec23142d0a5a2ba97',1,'mingfx::Quaternion::Quaternion(float qx, float qy, float qz, float qw)'],['../classmingfx_1_1_quaternion.html#a07bb09eb7d0b368ef5e8d9da02fbdad6',1,'mingfx::Quaternion::Quaternion(float *ptr)'],['../classmingfx_1_1_quaternion.html#a0be885a1b3f2d54675c6866ec3578243',1,'mingfx::Quaternion::Quaternion(const Quaternion &other)']]], + ['quickshapes_551',['QuickShapes',['../classmingfx_1_1_quick_shapes.html#a5764a0953013ece013bf3e2a72e4afa2',1,'mingfx::QuickShapes']]] +]; diff --git a/dev/MinGfx/docs/html/search/functions_f.html b/dev/MinGfx/docs/html/search/functions_f.html new file mode 100644 index 0000000..54b7dee --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/functions_f.js b/dev/MinGfx/docs/html/search/functions_f.js new file mode 100644 index 0000000..4bb3e28 --- /dev/null +++ b/dev/MinGfx/docs/html/search/functions_f.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['ray_552',['Ray',['../classmingfx_1_1_ray.html#aee3fe586869e00ae657a74bb4bbbbfda',1,'mingfx::Ray::Ray()'],['../classmingfx_1_1_ray.html#ab38cdd0793b3acfe55fa9ebca5ddebf6',1,'mingfx::Ray::Ray(const Point3 &origin, const Vector3 &direction)']]], + ['read_5fcolor_5fdata_553',['read_color_data',['../classmingfx_1_1_mesh.html#ac5fc517fd8ea4cea8459d3f4d5d6ced3',1,'mingfx::Mesh']]], + ['read_5fnormal_5fdata_554',['read_normal_data',['../classmingfx_1_1_mesh.html#a439361e454ca63c35f564aed5cd0de65',1,'mingfx::Mesh']]], + ['read_5ftex_5fcoords_5fdata_555',['read_tex_coords_data',['../classmingfx_1_1_mesh.html#a51aaa8d6a80af46f22ea9dfecd2f0b31',1,'mingfx::Mesh']]], + ['read_5ftriangle_5findices_5fdata_556',['read_triangle_indices_data',['../classmingfx_1_1_mesh.html#a15d79cbc48a6ef72ef1208d734cc2f8a',1,'mingfx::Mesh']]], + ['read_5fvertex_5fdata_557',['read_vertex_data',['../classmingfx_1_1_mesh.html#ada9371e85aa0b61df79b26fc880b1863',1,'mingfx::Mesh']]], + ['readzvalueatpixel_558',['ReadZValueAtPixel',['../classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646',1,'mingfx::GraphicsApp']]], + ['resizewindow_559',['ResizeWindow',['../classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5',1,'mingfx::GraphicsApp']]], + ['rotation_560',['Rotation',['../classmingfx_1_1_matrix4.html#acf4abaf4a45826f14b435edf80a8d0e0',1,'mingfx::Matrix4']]], + ['rotation_5fscale_561',['rotation_scale',['../classmingfx_1_1_craft_cam.html#a9fe22cc3b933b12674a5b8f1b5c834ac',1,'mingfx::CraftCam']]], + ['rotationx_562',['RotationX',['../classmingfx_1_1_matrix4.html#a48615deb30590055c0aa9f207eee7f08',1,'mingfx::Matrix4']]], + ['rotationy_563',['RotationY',['../classmingfx_1_1_matrix4.html#aef94f0e9d298a7ba57e0119ef09b71b6',1,'mingfx::Matrix4']]], + ['rotationz_564',['RotationZ',['../classmingfx_1_1_matrix4.html#a4bf1dced8875fdc5827b5b8869e9de93',1,'mingfx::Matrix4']]], + ['run_565',['Run',['../classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9',1,'mingfx::GraphicsApp']]] +]; diff --git a/dev/MinGfx/docs/html/search/mag_sel.svg b/dev/MinGfx/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/dev/MinGfx/docs/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/dev/MinGfx/docs/html/search/namespaces_0.html b/dev/MinGfx/docs/html/search/namespaces_0.html new file mode 100644 index 0000000..21db2c3 --- /dev/null +++ b/dev/MinGfx/docs/html/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/namespaces_0.js b/dev/MinGfx/docs/html/search/namespaces_0.js new file mode 100644 index 0000000..c7dae22 --- /dev/null +++ b/dev/MinGfx/docs/html/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mingfx_373',['mingfx',['../namespacemingfx.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/nomatches.html b/dev/MinGfx/docs/html/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/dev/MinGfx/docs/html/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/dev/MinGfx/docs/html/search/pages_0.html b/dev/MinGfx/docs/html/search/pages_0.html new file mode 100644 index 0000000..8517b48 --- /dev/null +++ b/dev/MinGfx/docs/html/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/pages_0.js b/dev/MinGfx/docs/html/search/pages_0.js new file mode 100644 index 0000000..8907ede --- /dev/null +++ b/dev/MinGfx/docs/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_20_2d_20mingfx_20programming_20reference_20organized_20by_20topic_719',['API - MinGfx Programming Reference Organized by Topic',['../api.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/pages_1.html b/dev/MinGfx/docs/html/search/pages_1.html new file mode 100644 index 0000000..a0fb679 --- /dev/null +++ b/dev/MinGfx/docs/html/search/pages_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/pages_1.js b/dev/MinGfx/docs/html/search/pages_1.js new file mode 100644 index 0000000..de07d2e --- /dev/null +++ b/dev/MinGfx/docs/html/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['installation_20guide_720',['Installation Guide',['../installation.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/pages_2.html b/dev/MinGfx/docs/html/search/pages_2.html new file mode 100644 index 0000000..084edfd --- /dev/null +++ b/dev/MinGfx/docs/html/search/pages_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/pages_2.js b/dev/MinGfx/docs/html/search/pages_2.js new file mode 100644 index 0000000..8ea29fe --- /dev/null +++ b/dev/MinGfx/docs/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mingfx_20toolkit_20documentation_721',['MinGfx Toolkit Documentation',['../index.html',1,'']]] +]; diff --git a/dev/MinGfx/docs/html/search/related_0.html b/dev/MinGfx/docs/html/search/related_0.html new file mode 100644 index 0000000..506aaec --- /dev/null +++ b/dev/MinGfx/docs/html/search/related_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/related_0.js b/dev/MinGfx/docs/html/search/related_0.js new file mode 100644 index 0000000..b70d264 --- /dev/null +++ b/dev/MinGfx/docs/html/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_2b_711',['operator+',['../classmingfx_1_1_a_a_b_b.html#a60e301aa632dd49eccdc27bab7c6d231',1,'mingfx::AABB']]] +]; diff --git a/dev/MinGfx/docs/html/search/search.css b/dev/MinGfx/docs/html/search/search.css new file mode 100644 index 0000000..d41a75c --- /dev/null +++ b/dev/MinGfx/docs/html/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #A0A0A0; + background-color: #FAFAFA; + 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: #505050; + 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: #F0F0F0; + 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: #585858; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #585858; + 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; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F2F2F2; +} + +.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/dev/MinGfx/docs/html/search/search.js b/dev/MinGfx/docs/html/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/dev/MinGfx/docs/html/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @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 + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + 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-block'; + 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.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == '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 + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/typedefs_0.js b/dev/MinGfx/docs/html/search/typedefs_0.js new file mode 100644 index 0000000..b14dc1d --- /dev/null +++ b/dev/MinGfx/docs/html/search/typedefs_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['stbrp_5fcontext_691',['stbrp_context',['../stb__rect__pack_8h.html#a0455046a8d5457bbc4f3f3ec995c338f',1,'stb_rect_pack.h']]], + ['stbrp_5fcoord_692',['stbrp_coord',['../stb__rect__pack_8h.html#ac2c2491b95dea6a298b7423dc762dfd9',1,'stb_rect_pack.h']]], + ['stbrp_5fnode_693',['stbrp_node',['../stb__rect__pack_8h.html#ae8f871c209d2e6218baf9c0e2a209ea1',1,'stb_rect_pack.h']]], + ['stbrp_5frect_694',['stbrp_rect',['../stb__rect__pack_8h.html#a7c4a99b31ea2207a0b2bbcbdab8f3840',1,'stb_rect_pack.h']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_0.html b/dev/MinGfx/docs/html/search/variables_0.html new file mode 100644 index 0000000..1e477c0 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_0.js b/dev/MinGfx/docs/html/search/variables_0.js new file mode 100644 index 0000000..8c9043a --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['active_5fhead_658',['active_head',['../structstbrp__context.html#a13277239636803aff28f00b0a0376120',1,'stbrp_context']]], + ['align_659',['align',['../structstbrp__context.html#ae36053e2001a725aec2b5756dc990481',1,'stbrp_context']]], + ['ambient_5fintensity_660',['ambient_intensity',['../classmingfx_1_1_default_shader_1_1_light_properties.html#a226c173b193459af291687dd45280fbb',1,'mingfx::DefaultShader::LightProperties']]], + ['ambient_5freflectance_661',['ambient_reflectance',['../classmingfx_1_1_default_shader_1_1_material_properties.html#ad4db9a1b0636db84f57f022c51ce7657',1,'mingfx::DefaultShader::MaterialProperties']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_1.html b/dev/MinGfx/docs/html/search/variables_1.html new file mode 100644 index 0000000..ea73d9a --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_1.js b/dev/MinGfx/docs/html/search/variables_1.js new file mode 100644 index 0000000..0294691 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['color_662',['color',['../classmingfx_1_1_text_shader_1_1_text_format.html#af0483874ac3fcea58b6ff99ef6644ff7',1,'mingfx::TextShader::TextFormat']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_2.html b/dev/MinGfx/docs/html/search/variables_2.html new file mode 100644 index 0000000..0580462 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_2.js b/dev/MinGfx/docs/html/search/variables_2.js new file mode 100644 index 0000000..f7ba507 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['diffuse_5fintensity_663',['diffuse_intensity',['../classmingfx_1_1_default_shader_1_1_light_properties.html#a9a010057c15e3db5661b07a03d5176d7',1,'mingfx::DefaultShader::LightProperties']]], + ['diffuse_5freflectance_664',['diffuse_reflectance',['../classmingfx_1_1_default_shader_1_1_material_properties.html#aa7b75f95a45d7a1030c297192b14014f',1,'mingfx::DefaultShader::MaterialProperties']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_3.html b/dev/MinGfx/docs/html/search/variables_3.html new file mode 100644 index 0000000..0d69e76 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_3.js b/dev/MinGfx/docs/html/search/variables_3.js new file mode 100644 index 0000000..62868c5 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['extra_665',['extra',['../structstbrp__context.html#a0b80e1fbdac125427526f3500d4e7624',1,'stbrp_context']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_4.html b/dev/MinGfx/docs/html/search/variables_4.html new file mode 100644 index 0000000..a4b6506 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_4.js b/dev/MinGfx/docs/html/search/variables_4.js new file mode 100644 index 0000000..6f9192b --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['free_5fhead_666',['free_head',['../structstbrp__context.html#a1336ae32373663847866cc65904c2839',1,'stbrp_context']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_5.html b/dev/MinGfx/docs/html/search/variables_5.html new file mode 100644 index 0000000..7e345d1 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_5.js b/dev/MinGfx/docs/html/search/variables_5.js new file mode 100644 index 0000000..82e20a2 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['h_667',['h',['../structstbrp__rect.html#af68de2dadc7972b7c089d5e0c0558398',1,'stbrp_rect']]], + ['h_5falign_668',['h_align',['../classmingfx_1_1_text_shader_1_1_text_format.html#acde55d28b0446e788e6c68b85df83066',1,'mingfx::TextShader::TextFormat']]], + ['half_5fpi_669',['HALF_PI',['../classmingfx_1_1_gfx_math.html#ab5ba8ba54257d86dcf95bd2bbeb534c0',1,'mingfx::GfxMath']]], + ['height_670',['height',['../structstbrp__context.html#af3715a6f3faecfb4fac8f6ccbb71f9c7',1,'stbrp_context']]], + ['heuristic_671',['heuristic',['../structstbrp__context.html#a4b61a7f94e50a54c075e2a8f99f6503a',1,'stbrp_context']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_6.html b/dev/MinGfx/docs/html/search/variables_6.html new file mode 100644 index 0000000..7d48e75 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_6.js b/dev/MinGfx/docs/html/search/variables_6.js new file mode 100644 index 0000000..aa6ee2c --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['id_672',['id',['../structstbrp__rect.html#a92da8626bc99df041c0c3bfd01c25f7a',1,'stbrp_rect']]], + ['init_5fmode_673',['init_mode',['../structstbrp__context.html#a007509feee322404083034e4c2d3dc5d',1,'stbrp_context']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_7.html b/dev/MinGfx/docs/html/search/variables_7.html new file mode 100644 index 0000000..5c26340 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_7.js b/dev/MinGfx/docs/html/search/variables_7.js new file mode 100644 index 0000000..9237abb --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['max_5flights_674',['MAX_LIGHTS',['../classmingfx_1_1_default_shader.html#a21c1fd93273eaf643e7ac9b05ba0fb24',1,'mingfx::DefaultShader']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_8.html b/dev/MinGfx/docs/html/search/variables_8.html new file mode 100644 index 0000000..dc9ec54 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_8.js b/dev/MinGfx/docs/html/search/variables_8.js new file mode 100644 index 0000000..753e50e --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['next_675',['next',['../structstbrp__node.html#a933cb2dd6cddc4fcaf10e3b40634bed4',1,'stbrp_node']]], + ['num_5fnodes_676',['num_nodes',['../structstbrp__context.html#afa8105d4ef6d3e0ae5aaf8e1ed4b2c58',1,'stbrp_context']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_9.html b/dev/MinGfx/docs/html/search/variables_9.html new file mode 100644 index 0000000..7b01475 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_9.js b/dev/MinGfx/docs/html/search/variables_9.js new file mode 100644 index 0000000..f6145ff --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pi_677',['PI',['../classmingfx_1_1_gfx_math.html#aaa14e60a5f7c158db443f8b6d87958b4',1,'mingfx::GfxMath']]], + ['position_678',['position',['../classmingfx_1_1_default_shader_1_1_light_properties.html#a160b58a0e70294008b9dac8eb6291d3e',1,'mingfx::DefaultShader::LightProperties']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_a.html b/dev/MinGfx/docs/html/search/variables_a.html new file mode 100644 index 0000000..52a724d --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_a.js b/dev/MinGfx/docs/html/search/variables_a.js new file mode 100644 index 0000000..0aea1c4 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['shinniness_679',['shinniness',['../classmingfx_1_1_default_shader_1_1_material_properties.html#ad77e4c78a2bf60776c673b91bc4c8a13',1,'mingfx::DefaultShader::MaterialProperties']]], + ['size_680',['size',['../classmingfx_1_1_text_shader_1_1_text_format.html#aeecda817624276f0cfb812ddcdbbc2f0',1,'mingfx::TextShader::TextFormat']]], + ['specular_5fintensity_681',['specular_intensity',['../classmingfx_1_1_default_shader_1_1_light_properties.html#abef7666629dbb9da661b163e0584c9a4',1,'mingfx::DefaultShader::LightProperties']]], + ['specular_5freflectance_682',['specular_reflectance',['../classmingfx_1_1_default_shader_1_1_material_properties.html#acfd78796e08f527a24cce3c1e206148c',1,'mingfx::DefaultShader::MaterialProperties']]], + ['surface_5ftexture_683',['surface_texture',['../classmingfx_1_1_default_shader_1_1_material_properties.html#ae26eed46a279c73e947880858763514e',1,'mingfx::DefaultShader::MaterialProperties']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_b.html b/dev/MinGfx/docs/html/search/variables_b.html new file mode 100644 index 0000000..f376b27 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_b.js b/dev/MinGfx/docs/html/search/variables_b.js new file mode 100644 index 0000000..ff2a95f --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['two_5fpi_684',['TWO_PI',['../classmingfx_1_1_gfx_math.html#a0e5c7562116babf11c61f4c7f20f8b69',1,'mingfx::GfxMath']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_c.html b/dev/MinGfx/docs/html/search/variables_c.html new file mode 100644 index 0000000..6019eba --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_c.js b/dev/MinGfx/docs/html/search/variables_c.js new file mode 100644 index 0000000..d3e4719 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['v_5falign_685',['v_align',['../classmingfx_1_1_text_shader_1_1_text_format.html#a8455382a6829022020eb307ae9168bd7',1,'mingfx::TextShader::TextFormat']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_d.html b/dev/MinGfx/docs/html/search/variables_d.html new file mode 100644 index 0000000..f61ae75 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_d.js b/dev/MinGfx/docs/html/search/variables_d.js new file mode 100644 index 0000000..ddd4c60 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['w_686',['w',['../structstbrp__rect.html#a248d43f1eb979c1e7b92ba6df431dec5',1,'stbrp_rect']]], + ['was_5fpacked_687',['was_packed',['../structstbrp__rect.html#a74ba347755ce17f2f8a2ea66c612af49',1,'stbrp_rect']]], + ['width_688',['width',['../structstbrp__context.html#a70cfcb2044ce8397cc440d28b30c09b2',1,'stbrp_context']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_e.html b/dev/MinGfx/docs/html/search/variables_e.html new file mode 100644 index 0000000..7bfd372 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_e.js b/dev/MinGfx/docs/html/search/variables_e.js new file mode 100644 index 0000000..ebb638d --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x_689',['x',['../structstbrp__rect.html#a4cc623a3e29f0bc0d3375f6645c84d18',1,'stbrp_rect::x()'],['../structstbrp__node.html#a45ab31a88025db27d08040d715b129ea',1,'stbrp_node::x()']]] +]; diff --git a/dev/MinGfx/docs/html/search/variables_f.html b/dev/MinGfx/docs/html/search/variables_f.html new file mode 100644 index 0000000..d97920d --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/dev/MinGfx/docs/html/search/variables_f.js b/dev/MinGfx/docs/html/search/variables_f.js new file mode 100644 index 0000000..6a14e35 --- /dev/null +++ b/dev/MinGfx/docs/html/search/variables_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['y_690',['y',['../structstbrp__rect.html#ae3034c1fbf86043b568f5a4dddf946fa',1,'stbrp_rect::y()'],['../structstbrp__node.html#ad0415cb102a4f37aa45073653307e67e',1,'stbrp_node::y()']]] +]; diff --git a/dev/MinGfx/docs/html/shader__program_8h.html b/dev/MinGfx/docs/html/shader__program_8h.html new file mode 100644 index 0000000..f3b879f --- /dev/null +++ b/dev/MinGfx/docs/html/shader__program_8h.html @@ -0,0 +1,119 @@ + + + + + + + +MinGfx Toolkit: src/shader_program.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    shader_program.h File Reference
    +
    +
    +
    #include "color.h"
    +#include "matrix4.h"
    +#include "opengl_headers.h"
    +#include "point2.h"
    +#include "point3.h"
    +#include "texture2d.h"
    +#include "vector2.h"
    +#include "vector3.h"
    +#include <string>
    +#include <map>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::ShaderProgram
     A wrapper around GLSL shader programs. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/shader__program_8h_source.html b/dev/MinGfx/docs/html/shader__program_8h_source.html new file mode 100644 index 0000000..ff40d8e --- /dev/null +++ b/dev/MinGfx/docs/html/shader__program_8h_source.html @@ -0,0 +1,274 @@ + + + + + + + +MinGfx Toolkit: src/shader_program.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    shader_program.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_SHADERPROGRAM_H_
    +
    15 #define SRC_SHADERPROGRAM_H_
    +
    16 
    +
    17 #include "color.h"
    +
    18 #include "matrix4.h"
    +
    19 #include "opengl_headers.h"
    +
    20 #include "point2.h"
    +
    21 #include "point3.h"
    +
    22 #include "texture2d.h"
    +
    23 #include "vector2.h"
    +
    24 #include "vector3.h"
    +
    25 
    +
    26 #include <string>
    +
    27 #include <map>
    +
    28 
    +
    29 namespace mingfx {
    +
    30 
    + +
    67 public:
    + +
    70 
    +
    71  virtual ~ShaderProgram();
    +
    72 
    +
    73 
    +
    74  // ---- These should be called during startup (e.g., in InitOpenGL()) ----
    +
    75 
    +
    80  bool AddVertexShaderFromFile(const std::string &file);
    +
    81 
    +
    84  bool AddVertexShaderFromSource(const std::string &code);
    +
    85 
    +
    90  bool AddFragmentShaderFromFile(const std::string &file);
    +
    91 
    +
    94  bool AddFragmentShaderFromSource(const std::string &code);
    +
    95 
    +
    99  bool LinkProgram();
    +
    100 
    +
    101 
    +
    102 
    +
    103  // ---- These should be called during rendering (e.g., in DrawUsingOpenGL()) ----
    +
    104 
    +
    110  void UseProgram();
    +
    111 
    +
    112  // Set Uniform Variables in the Shader
    +
    113 
    +
    114  // MinGfx types
    +
    115 
    +
    118  void SetUniform(const std::string &name, const Point2 &p);
    +
    119 
    +
    122  void SetUniform(const std::string &name, const Vector2 &v);
    +
    123 
    +
    126  void SetUniform(const std::string &name, const Point3 &p);
    +
    127 
    +
    130  void SetUniform(const std::string &name, const Vector3 &v);
    +
    131 
    +
    134  void SetUniform(const std::string &name, const Matrix4 &m);
    +
    135 
    +
    138  void SetUniform(const std::string &name, const Color &c);
    +
    139 
    +
    140 
    +
    141  // built-in types
    +
    142 
    +
    145  void SetUniform(const std::string &name, int i);
    +
    146 
    +
    149  void SetUniform(const std::string &name, unsigned int ui);
    +
    150 
    +
    153  void SetUniform(const std::string &name, float f);
    +
    154 
    +
    155 
    +
    156  // built-in types (arrays)
    +
    157 
    +
    160  void SetUniformArray1(const std::string &name, int *i, int count);
    +
    161 
    +
    164  void SetUniformArray1(const std::string &name, unsigned int *ui, int count);
    +
    165 
    +
    168  void SetUniformArray1(const std::string &name, float *f, int count);
    +
    169 
    +
    170 
    +
    173  void SetUniformArray2(const std::string &name, int *i, int count);
    +
    174 
    +
    177  void SetUniformArray2(const std::string &name, unsigned int *ui, int count);
    +
    178 
    +
    181  void SetUniformArray2(const std::string &name, float *f, int count);
    +
    182 
    +
    183 
    +
    186  void SetUniformArray3(const std::string &name, int *i, int count);
    +
    187 
    +
    190  void SetUniformArray3(const std::string &name, unsigned int *ui, int count);
    +
    191 
    +
    194  void SetUniformArray3(const std::string &name, float *f, int count);
    +
    195 
    +
    196 
    +
    199  void SetUniformArray4(const std::string &name, int *i, int count);
    +
    200 
    +
    203  void SetUniformArray4(const std::string &name, unsigned int *ui, int count);
    +
    204 
    +
    207  void SetUniformArray4(const std::string &name, float *f, int count);
    +
    208 
    +
    209 
    +
    210  // Set Textures (Sampler Variables in the Shader)
    +
    211 
    +
    215  void BindTexture(const std::string &name, const Texture2D &tex);
    +
    216 
    +
    219  void BindTexture(const std::string &name, const Texture2D &tex, int texUnit);
    +
    220 
    +
    221 
    +
    223  void StopProgram();
    +
    224 
    +
    226  bool initialized();
    +
    227 
    +
    228 private:
    +
    229  GLuint vertexShader_;
    +
    230  GLuint fragmentShader_;
    +
    231  GLuint program_;
    +
    232  std::map<std::string, int> texBindings_;
    +
    233 };
    +
    234 
    +
    235 
    +
    236 } // end namespace
    +
    237 
    +
    238 #endif
    +
    Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...
    Definition: color.h:41
    +
    A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...
    Definition: matrix4.h:50
    +
    A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...
    Definition: point2.h:28
    +
    A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
    Definition: point3.h:52
    +
    A wrapper around GLSL shader programs.
    +
    void SetUniform(const std::string &name, const Vector3 &v)
    Passes the x,y,z,0 values of vector v to the shader program and stores the result in the shader varia...
    +
    ShaderProgram()
    Creates an empty ShaderProgram object.
    +
    void SetUniformArray4(const std::string &name, unsigned int *ui, int count)
    Passes an array of count 4D unsigned int arrays to the shader program and stores the result in the sh...
    +
    void StopProgram()
    Call this after rendering geometry to deactivate the shader.
    +
    bool initialized()
    Returns true if the shader program has been successfully compiled and linked.
    +
    void SetUniform(const std::string &name, const Point2 &p)
    Passes the x,y values of point p to the shader program and stores the result in the shader variable n...
    +
    void BindTexture(const std::string &name, const Texture2D &tex)
    Binds a Texture2D to a sampler2D in the shader program. This version automatically selects an availab...
    +
    void SetUniformArray1(const std::string &name, int *i, int count)
    Passes an array of count ints to the shader program and stores the result in the shader variable name...
    +
    void SetUniformArray1(const std::string &name, float *f, int count)
    Passes an array of count floats to the shader program and stores the result in the shader variable na...
    +
    bool AddVertexShaderFromFile(const std::string &file)
    Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL())....
    +
    void SetUniform(const std::string &name, float f)
    Passes the float to the shader program and stores the result in the shader variable named name,...
    +
    void SetUniformArray2(const std::string &name, unsigned int *ui, int count)
    Passes an array of count 2D unsigned int arrays to the shader program and stores the result in the sh...
    +
    void SetUniform(const std::string &name, unsigned int ui)
    Passes the unsigned int to the shader program and stores the result in the shader variable named name...
    +
    void SetUniform(const std::string &name, const Matrix4 &m)
    Passes the column-major 16 float values of matrix m to the shader program and stores the result in th...
    +
    bool AddFragmentShaderFromSource(const std::string &code)
    This loads and compiles a shader from a string. An error will be printed to stderr if there are any c...
    +
    void SetUniformArray3(const std::string &name, unsigned int *ui, int count)
    Passes an array of count 3D unsigned int arrays to the shader program and stores the result in the sh...
    +
    void SetUniformArray2(const std::string &name, float *f, int count)
    Passes an array of count 2D float arrays to the shader program and stores the result in the shader va...
    + +
    void SetUniformArray4(const std::string &name, float *f, int count)
    Passes an array of count 4D float arrays to the shader program and stores the result in the shader va...
    +
    void SetUniformArray2(const std::string &name, int *i, int count)
    Passes an array of count 2D int arrays to the shader program and stores the result in the shader vari...
    +
    void SetUniform(const std::string &name, const Color &c)
    Passes the r,g,b,a values of color c to the shader program and stores the result in the shader variab...
    +
    void SetUniformArray4(const std::string &name, int *i, int count)
    Passes an array of count 4D int arrays to the shader program and stores the result in the shader vari...
    +
    void SetUniform(const std::string &name, int i)
    Passes the int to the shader program and stores the result in the shader variable named name,...
    +
    bool AddVertexShaderFromSource(const std::string &code)
    This loads and compiles a shader from a string. An error will be printed to stderr if there are any c...
    +
    void SetUniformArray1(const std::string &name, unsigned int *ui, int count)
    Passes an array of count unsigned ints to the shader program and stores the result in the shader vari...
    +
    void SetUniformArray3(const std::string &name, int *i, int count)
    Passes an array of count 3D int arrays to the shader program and stores the result in the shader vari...
    +
    void SetUniform(const std::string &name, const Point3 &p)
    Passes the x,y,z,1 values of point p to the shader program and stores the result in the shader variab...
    +
    bool AddFragmentShaderFromFile(const std::string &file)
    Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL())....
    +
    bool LinkProgram()
    Call this after adding vertex and fragment shaders in order to link them together to create the full ...
    +
    void SetUniform(const std::string &name, const Vector2 &v)
    Passes the x,y values of vector v to the shader program and stores the result in the shader variable ...
    +
    void UseProgram()
    Call this first to make the shader program active, then call SetUniform() to pass data from your C++ ...
    +
    void BindTexture(const std::string &name, const Texture2D &tex, int texUnit)
    Binds a Texture2D to a sampler2D in the shader program. This version allows you to specify the textur...
    +
    void SetUniformArray3(const std::string &name, float *f, int count)
    Passes an array of count 3D float arrays to the shader program and stores the result in the shader va...
    +
    A wrapper around a 2D texture that supports loading images from files or setting texture color data d...
    Definition: texture2d.h:42
    +
    A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...
    Definition: vector2.h:28
    +
    A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
    Definition: vector3.h:62
    + + +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    + + + + + + +
    + + + + + diff --git a/dev/MinGfx/docs/html/splitbar.png b/dev/MinGfx/docs/html/splitbar.png new file mode 100644 index 0000000..fbb5e55 Binary files /dev/null and b/dev/MinGfx/docs/html/splitbar.png differ diff --git a/dev/MinGfx/docs/html/stb__rect__pack_8h.html b/dev/MinGfx/docs/html/stb__rect__pack_8h.html new file mode 100644 index 0000000..654ccfc --- /dev/null +++ b/dev/MinGfx/docs/html/stb__rect__pack_8h.html @@ -0,0 +1,403 @@ + + + + + + + +MinGfx Toolkit: src/stb_rect_pack.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    stb_rect_pack.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Classes

    struct  stbrp_rect
     
    struct  stbrp_node
     
    struct  stbrp_context
     
    + + + + + +

    +Macros

    #define STB_RECT_PACK_VERSION   1
     
    #define STBRP_DEF   extern
     
    + + + + + + + + + +

    +Typedefs

    typedef struct stbrp_context stbrp_context
     
    typedef struct stbrp_node stbrp_node
     
    typedef struct stbrp_rect stbrp_rect
     
    typedef unsigned short stbrp_coord
     
    + + + +

    +Enumerations

    enum  { STBRP_HEURISTIC_Skyline_default =0 +, STBRP_HEURISTIC_Skyline_BL_sortHeight = STBRP_HEURISTIC_Skyline_default +, STBRP_HEURISTIC_Skyline_BF_sortHeight + }
     
    + + + + + + + + + +

    +Functions

    STBRP_DEF int stbrp_pack_rects (stbrp_context *context, stbrp_rect *rects, int num_rects)
     
    STBRP_DEF void stbrp_init_target (stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes)
     
    STBRP_DEF void stbrp_setup_allow_out_of_mem (stbrp_context *context, int allow_out_of_mem)
     
    STBRP_DEF void stbrp_setup_heuristic (stbrp_context *context, int heuristic)
     
    +

    Macro Definition Documentation

    + +

    ◆ STB_RECT_PACK_VERSION

    + +
    +
    + + + + +
    #define STB_RECT_PACK_VERSION   1
    +
    + +

    Definition at line 59 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ STBRP_DEF

    + +
    +
    + + + + +
    #define STBRP_DEF   extern
    +
    + +

    Definition at line 64 of file stb_rect_pack.h.

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ stbrp_context

    + +
    +
    + + + + +
    typedef struct stbrp_context stbrp_context
    +
    + +

    Definition at line 1 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ stbrp_coord

    + +
    +
    + + + + +
    typedef unsigned short stbrp_coord
    +
    + +

    Definition at line 78 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ stbrp_node

    + +
    +
    + + + + +
    typedef struct stbrp_node stbrp_node
    +
    + +

    Definition at line 1 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ stbrp_rect

    + +
    +
    + + + + +
    typedef struct stbrp_rect stbrp_rect
    +
    + +

    Definition at line 1 of file stb_rect_pack.h.

    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ anonymous enum

    + +
    +
    + + + + +
    anonymous enum
    +
    + + + + +
    Enumerator
    STBRP_HEURISTIC_Skyline_default 
    STBRP_HEURISTIC_Skyline_BL_sortHeight 
    STBRP_HEURISTIC_Skyline_BF_sortHeight 
    + +

    Definition at line 153 of file stb_rect_pack.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ stbrp_init_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    STBRP_DEF void stbrp_init_target (stbrp_contextcontext,
    int width,
    int height,
    stbrp_nodenodes,
    int num_nodes 
    )
    +
    + +
    +
    + +

    ◆ stbrp_pack_rects()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    STBRP_DEF int stbrp_pack_rects (stbrp_contextcontext,
    stbrp_rectrects,
    int num_rects 
    )
    +
    + +
    +
    + +

    ◆ stbrp_setup_allow_out_of_mem()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    STBRP_DEF void stbrp_setup_allow_out_of_mem (stbrp_contextcontext,
    int allow_out_of_mem 
    )
    +
    + +
    +
    + +

    ◆ stbrp_setup_heuristic()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    STBRP_DEF void stbrp_setup_heuristic (stbrp_contextcontext,
    int heuristic 
    )
    +
    + +
    +
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/stb__rect__pack_8h_source.html b/dev/MinGfx/docs/html/stb__rect__pack_8h_source.html new file mode 100644 index 0000000..2d2f39e --- /dev/null +++ b/dev/MinGfx/docs/html/stb__rect__pack_8h_source.html @@ -0,0 +1,742 @@ + + + + + + + +MinGfx Toolkit: src/stb_rect_pack.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    stb_rect_pack.h
    +
    +
    +Go to the documentation of this file.
    1 // stb_rect_pack.h - v0.11 - public domain - rectangle packing
    +
    2 // Sean Barrett 2014
    +
    3 //
    +
    4 // Useful for e.g. packing rectangular textures into an atlas.
    +
    5 // Does not do rotation.
    +
    6 //
    +
    7 // Not necessarily the awesomest packing method, but better than
    +
    8 // the totally naive one in stb_truetype (which is primarily what
    +
    9 // this is meant to replace).
    +
    10 //
    +
    11 // Has only had a few tests run, may have issues.
    +
    12 //
    +
    13 // More docs to come.
    +
    14 //
    +
    15 // No memory allocations; uses qsort() and assert() from stdlib.
    +
    16 // Can override those by defining STBRP_SORT and STBRP_ASSERT.
    +
    17 //
    +
    18 // This library currently uses the Skyline Bottom-Left algorithm.
    +
    19 //
    +
    20 // Please note: better rectangle packers are welcome! Please
    +
    21 // implement them to the same API, but with a different init
    +
    22 // function.
    +
    23 //
    +
    24 // Credits
    +
    25 //
    +
    26 // Library
    +
    27 // Sean Barrett
    +
    28 // Minor features
    +
    29 // Martins Mozeiko
    +
    30 // github:IntellectualKitty
    +
    31 //
    +
    32 // Bugfixes / warning fixes
    +
    33 // Jeremy Jaussaud
    +
    34 //
    +
    35 // Version history:
    +
    36 //
    +
    37 // 0.11 (2017-03-03) return packing success/fail result
    +
    38 // 0.10 (2016-10-25) remove cast-away-const to avoid warnings
    +
    39 // 0.09 (2016-08-27) fix compiler warnings
    +
    40 // 0.08 (2015-09-13) really fix bug with empty rects (w=0 or h=0)
    +
    41 // 0.07 (2015-09-13) fix bug with empty rects (w=0 or h=0)
    +
    42 // 0.06 (2015-04-15) added STBRP_SORT to allow replacing qsort
    +
    43 // 0.05: added STBRP_ASSERT to allow replacing assert
    +
    44 // 0.04: fixed minor bug in STBRP_LARGE_RECTS support
    +
    45 // 0.01: initial release
    +
    46 //
    +
    47 // LICENSE
    +
    48 //
    +
    49 // See end of file for license information.
    +
    50 
    +
    52 //
    +
    53 // INCLUDE SECTION
    +
    54 //
    +
    55 
    +
    56 #ifndef STB_INCLUDE_STB_RECT_PACK_H
    +
    57 #define STB_INCLUDE_STB_RECT_PACK_H
    +
    58 
    +
    59 #define STB_RECT_PACK_VERSION 1
    +
    60 
    +
    61 #ifdef STBRP_STATIC
    +
    62 #define STBRP_DEF static
    +
    63 #else
    +
    64 #define STBRP_DEF extern
    +
    65 #endif
    +
    66 
    +
    67 #ifdef __cplusplus
    +
    68 extern "C" {
    +
    69 #endif
    +
    70 
    +
    71 typedef struct stbrp_context stbrp_context;
    +
    72 typedef struct stbrp_node stbrp_node;
    +
    73 typedef struct stbrp_rect stbrp_rect;
    +
    74 
    +
    75 #ifdef STBRP_LARGE_RECTS
    +
    76 typedef int stbrp_coord;
    +
    77 #else
    +
    78 typedef unsigned short stbrp_coord;
    +
    79 #endif
    +
    80 
    +
    81 STBRP_DEF int stbrp_pack_rects (stbrp_context *context, stbrp_rect *rects, int num_rects);
    +
    82 // Assign packed locations to rectangles. The rectangles are of type
    +
    83 // 'stbrp_rect' defined below, stored in the array 'rects', and there
    +
    84 // are 'num_rects' many of them.
    +
    85 //
    +
    86 // Rectangles which are successfully packed have the 'was_packed' flag
    +
    87 // set to a non-zero value and 'x' and 'y' store the minimum location
    +
    88 // on each axis (i.e. bottom-left in cartesian coordinates, top-left
    +
    89 // if you imagine y increasing downwards). Rectangles which do not fit
    +
    90 // have the 'was_packed' flag set to 0.
    +
    91 //
    +
    92 // You should not try to access the 'rects' array from another thread
    +
    93 // while this function is running, as the function temporarily reorders
    +
    94 // the array while it executes.
    +
    95 //
    +
    96 // To pack into another rectangle, you need to call stbrp_init_target
    +
    97 // again. To continue packing into the same rectangle, you can call
    +
    98 // this function again. Calling this multiple times with multiple rect
    +
    99 // arrays will probably produce worse packing results than calling it
    +
    100 // a single time with the full rectangle array, but the option is
    +
    101 // available.
    +
    102 //
    +
    103 // The function returns 1 if all of the rectangles were successfully
    +
    104 // packed and 0 otherwise.
    +
    105 
    + +
    107 {
    +
    108  // reserved for your use:
    +
    109  int id;
    +
    110 
    +
    111  // input:
    + +
    113 
    +
    114  // output:
    + +
    116  int was_packed; // non-zero if valid packing
    +
    117 
    +
    118 }; // 16 bytes, nominally
    +
    119 
    +
    120 
    +
    121 STBRP_DEF void stbrp_init_target (stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes);
    +
    122 // Initialize a rectangle packer to:
    +
    123 // pack a rectangle that is 'width' by 'height' in dimensions
    +
    124 // using temporary storage provided by the array 'nodes', which is 'num_nodes' long
    +
    125 //
    +
    126 // You must call this function every time you start packing into a new target.
    +
    127 //
    +
    128 // There is no "shutdown" function. The 'nodes' memory must stay valid for
    +
    129 // the following stbrp_pack_rects() call (or calls), but can be freed after
    +
    130 // the call (or calls) finish.
    +
    131 //
    +
    132 // Note: to guarantee best results, either:
    +
    133 // 1. make sure 'num_nodes' >= 'width'
    +
    134 // or 2. call stbrp_allow_out_of_mem() defined below with 'allow_out_of_mem = 1'
    +
    135 //
    +
    136 // If you don't do either of the above things, widths will be quantized to multiples
    +
    137 // of small integers to guarantee the algorithm doesn't run out of temporary storage.
    +
    138 //
    +
    139 // If you do #2, then the non-quantized algorithm will be used, but the algorithm
    +
    140 // may run out of temporary storage and be unable to pack some rectangles.
    +
    141 
    +
    142 STBRP_DEF void stbrp_setup_allow_out_of_mem (stbrp_context *context, int allow_out_of_mem);
    +
    143 // Optionally call this function after init but before doing any packing to
    +
    144 // change the handling of the out-of-temp-memory scenario, described above.
    +
    145 // If you call init again, this will be reset to the default (false).
    +
    146 
    +
    147 
    +
    148 STBRP_DEF void stbrp_setup_heuristic (stbrp_context *context, int heuristic);
    +
    149 // Optionally select which packing heuristic the library should use. Different
    +
    150 // heuristics will produce better/worse results for different data sets.
    +
    151 // If you call init again, this will be reset to the default.
    +
    152 
    +
    153 enum
    +
    154 {
    + + + +
    158 };
    +
    159 
    +
    160 
    +
    162 //
    +
    163 // the details of the following structures don't matter to you, but they must
    +
    164 // be visible so you can handle the memory allocations for them
    +
    165 
    + +
    167 {
    + + +
    170 };
    +
    171 
    + +
    173 {
    +
    174  int width;
    +
    175  int height;
    +
    176  int align;
    + + + + + +
    182  stbrp_node extra[2]; // we allocate two extra nodes so optimal user-node-count is 'width' not 'width+2'
    +
    183 };
    +
    184 
    +
    185 #ifdef __cplusplus
    +
    186 }
    +
    187 #endif
    +
    188 
    +
    189 #endif
    +
    190 
    +
    192 //
    +
    193 // IMPLEMENTATION SECTION
    +
    194 //
    +
    195 
    +
    196 #ifdef STB_RECT_PACK_IMPLEMENTATION
    +
    197 #ifndef STBRP_SORT
    +
    198 #include <stdlib.h>
    +
    199 #define STBRP_SORT qsort
    +
    200 #endif
    +
    201 
    +
    202 #ifndef STBRP_ASSERT
    +
    203 #include <assert.h>
    +
    204 #define STBRP_ASSERT assert
    +
    205 #endif
    +
    206 
    +
    207 #ifdef _MSC_VER
    +
    208 #define STBRP__NOTUSED(v) (void)(v)
    +
    209 #else
    +
    210 #define STBRP__NOTUSED(v) (void)sizeof(v)
    +
    211 #endif
    +
    212 
    +
    213 enum
    +
    214 {
    +
    215  STBRP__INIT_skyline = 1
    +
    216 };
    +
    217 
    +
    218 STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic)
    +
    219 {
    +
    220  switch (context->init_mode) {
    +
    221  case STBRP__INIT_skyline:
    +
    222  STBRP_ASSERT(heuristic == STBRP_HEURISTIC_Skyline_BL_sortHeight || heuristic == STBRP_HEURISTIC_Skyline_BF_sortHeight);
    +
    223  context->heuristic = heuristic;
    +
    224  break;
    +
    225  default:
    +
    226  STBRP_ASSERT(0);
    +
    227  }
    +
    228 }
    +
    229 
    +
    230 STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int allow_out_of_mem)
    +
    231 {
    +
    232  if (allow_out_of_mem)
    +
    233  // if it's ok to run out of memory, then don't bother aligning them;
    +
    234  // this gives better packing, but may fail due to OOM (even though
    +
    235  // the rectangles easily fit). @TODO a smarter approach would be to only
    +
    236  // quantize once we've hit OOM, then we could get rid of this parameter.
    +
    237  context->align = 1;
    +
    238  else {
    +
    239  // if it's not ok to run out of memory, then quantize the widths
    +
    240  // so that num_nodes is always enough nodes.
    +
    241  //
    +
    242  // I.e. num_nodes * align >= width
    +
    243  // align >= width / num_nodes
    +
    244  // align = ceil(width/num_nodes)
    +
    245 
    +
    246  context->align = (context->width + context->num_nodes-1) / context->num_nodes;
    +
    247  }
    +
    248 }
    +
    249 
    +
    250 STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes)
    +
    251 {
    +
    252  int i;
    +
    253 #ifndef STBRP_LARGE_RECTS
    +
    254  STBRP_ASSERT(width <= 0xffff && height <= 0xffff);
    +
    255 #endif
    +
    256 
    +
    257  for (i=0; i < num_nodes-1; ++i)
    +
    258  nodes[i].next = &nodes[i+1];
    +
    259  nodes[i].next = NULL;
    +
    260  context->init_mode = STBRP__INIT_skyline;
    + +
    262  context->free_head = &nodes[0];
    +
    263  context->active_head = &context->extra[0];
    +
    264  context->width = width;
    +
    265  context->height = height;
    +
    266  context->num_nodes = num_nodes;
    +
    267  stbrp_setup_allow_out_of_mem(context, 0);
    +
    268 
    +
    269  // node 0 is the full width, node 1 is the sentinel (lets us not store width explicitly)
    +
    270  context->extra[0].x = 0;
    +
    271  context->extra[0].y = 0;
    +
    272  context->extra[0].next = &context->extra[1];
    +
    273  context->extra[1].x = (stbrp_coord) width;
    +
    274 #ifdef STBRP_LARGE_RECTS
    +
    275  context->extra[1].y = (1<<30);
    +
    276 #else
    +
    277  context->extra[1].y = 65535;
    +
    278 #endif
    +
    279  context->extra[1].next = NULL;
    +
    280 }
    +
    281 
    +
    282 // find minimum y position if it starts at x1
    +
    283 static int stbrp__skyline_find_min_y(stbrp_context *c, stbrp_node *first, int x0, int width, int *pwaste)
    +
    284 {
    +
    285  stbrp_node *node = first;
    +
    286  int x1 = x0 + width;
    +
    287  int min_y, visited_width, waste_area;
    +
    288 
    +
    289  STBRP__NOTUSED(c);
    +
    290 
    +
    291  STBRP_ASSERT(first->x <= x0);
    +
    292 
    +
    293  #if 0
    +
    294  // skip in case we're past the node
    +
    295  while (node->next->x <= x0)
    +
    296  ++node;
    +
    297  #else
    +
    298  STBRP_ASSERT(node->next->x > x0); // we ended up handling this in the caller for efficiency
    +
    299  #endif
    +
    300 
    +
    301  STBRP_ASSERT(node->x <= x0);
    +
    302 
    +
    303  min_y = 0;
    +
    304  waste_area = 0;
    +
    305  visited_width = 0;
    +
    306  while (node->x < x1) {
    +
    307  if (node->y > min_y) {
    +
    308  // raise min_y higher.
    +
    309  // we've accounted for all waste up to min_y,
    +
    310  // but we'll now add more waste for everything we've visted
    +
    311  waste_area += visited_width * (node->y - min_y);
    +
    312  min_y = node->y;
    +
    313  // the first time through, visited_width might be reduced
    +
    314  if (node->x < x0)
    +
    315  visited_width += node->next->x - x0;
    +
    316  else
    +
    317  visited_width += node->next->x - node->x;
    +
    318  } else {
    +
    319  // add waste area
    +
    320  int under_width = node->next->x - node->x;
    +
    321  if (under_width + visited_width > width)
    +
    322  under_width = width - visited_width;
    +
    323  waste_area += under_width * (min_y - node->y);
    +
    324  visited_width += under_width;
    +
    325  }
    +
    326  node = node->next;
    +
    327  }
    +
    328 
    +
    329  *pwaste = waste_area;
    +
    330  return min_y;
    +
    331 }
    +
    332 
    +
    333 typedef struct
    +
    334 {
    +
    335  int x,y;
    +
    336  stbrp_node **prev_link;
    +
    337 } stbrp__findresult;
    +
    338 
    +
    339 static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int width, int height)
    +
    340 {
    +
    341  int best_waste = (1<<30), best_x, best_y = (1 << 30);
    +
    342  stbrp__findresult fr;
    +
    343  stbrp_node **prev, *node, *tail, **best = NULL;
    +
    344 
    +
    345  // align to multiple of c->align
    +
    346  width = (width + c->align - 1);
    +
    347  width -= width % c->align;
    +
    348  STBRP_ASSERT(width % c->align == 0);
    +
    349 
    +
    350  node = c->active_head;
    +
    351  prev = &c->active_head;
    +
    352  while (node->x + width <= c->width) {
    +
    353  int y,waste;
    +
    354  y = stbrp__skyline_find_min_y(c, node, node->x, width, &waste);
    +
    355  if (c->heuristic == STBRP_HEURISTIC_Skyline_BL_sortHeight) { // actually just want to test BL
    +
    356  // bottom left
    +
    357  if (y < best_y) {
    +
    358  best_y = y;
    +
    359  best = prev;
    +
    360  }
    +
    361  } else {
    +
    362  // best-fit
    +
    363  if (y + height <= c->height) {
    +
    364  // can only use it if it first vertically
    +
    365  if (y < best_y || (y == best_y && waste < best_waste)) {
    +
    366  best_y = y;
    +
    367  best_waste = waste;
    +
    368  best = prev;
    +
    369  }
    +
    370  }
    +
    371  }
    +
    372  prev = &node->next;
    +
    373  node = node->next;
    +
    374  }
    +
    375 
    +
    376  best_x = (best == NULL) ? 0 : (*best)->x;
    +
    377 
    +
    378  // if doing best-fit (BF), we also have to try aligning right edge to each node position
    +
    379  //
    +
    380  // e.g, if fitting
    +
    381  //
    +
    382  // ____________________
    +
    383  // |____________________|
    +
    384  //
    +
    385  // into
    +
    386  //
    +
    387  // | |
    +
    388  // | ____________|
    +
    389  // |____________|
    +
    390  //
    +
    391  // then right-aligned reduces waste, but bottom-left BL is always chooses left-aligned
    +
    392  //
    +
    393  // This makes BF take about 2x the time
    +
    394 
    + +
    396  tail = c->active_head;
    +
    397  node = c->active_head;
    +
    398  prev = &c->active_head;
    +
    399  // find first node that's admissible
    +
    400  while (tail->x < width)
    +
    401  tail = tail->next;
    +
    402  while (tail) {
    +
    403  int xpos = tail->x - width;
    +
    404  int y,waste;
    +
    405  STBRP_ASSERT(xpos >= 0);
    +
    406  // find the left position that matches this
    +
    407  while (node->next->x <= xpos) {
    +
    408  prev = &node->next;
    +
    409  node = node->next;
    +
    410  }
    +
    411  STBRP_ASSERT(node->next->x > xpos && node->x <= xpos);
    +
    412  y = stbrp__skyline_find_min_y(c, node, xpos, width, &waste);
    +
    413  if (y + height < c->height) {
    +
    414  if (y <= best_y) {
    +
    415  if (y < best_y || waste < best_waste || (waste==best_waste && xpos < best_x)) {
    +
    416  best_x = xpos;
    +
    417  STBRP_ASSERT(y <= best_y);
    +
    418  best_y = y;
    +
    419  best_waste = waste;
    +
    420  best = prev;
    +
    421  }
    +
    422  }
    +
    423  }
    +
    424  tail = tail->next;
    +
    425  }
    +
    426  }
    +
    427 
    +
    428  fr.prev_link = best;
    +
    429  fr.x = best_x;
    +
    430  fr.y = best_y;
    +
    431  return fr;
    +
    432 }
    +
    433 
    +
    434 static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, int width, int height)
    +
    435 {
    +
    436  // find best position according to heuristic
    +
    437  stbrp__findresult res = stbrp__skyline_find_best_pos(context, width, height);
    +
    438  stbrp_node *node, *cur;
    +
    439 
    +
    440  // bail if:
    +
    441  // 1. it failed
    +
    442  // 2. the best node doesn't fit (we don't always check this)
    +
    443  // 3. we're out of memory
    +
    444  if (res.prev_link == NULL || res.y + height > context->height || context->free_head == NULL) {
    +
    445  res.prev_link = NULL;
    +
    446  return res;
    +
    447  }
    +
    448 
    +
    449  // on success, create new node
    +
    450  node = context->free_head;
    +
    451  node->x = (stbrp_coord) res.x;
    +
    452  node->y = (stbrp_coord) (res.y + height);
    +
    453 
    +
    454  context->free_head = node->next;
    +
    455 
    +
    456  // insert the new node into the right starting point, and
    +
    457  // let 'cur' point to the remaining nodes needing to be
    +
    458  // stiched back in
    +
    459 
    +
    460  cur = *res.prev_link;
    +
    461  if (cur->x < res.x) {
    +
    462  // preserve the existing one, so start testing with the next one
    +
    463  stbrp_node *next = cur->next;
    +
    464  cur->next = node;
    +
    465  cur = next;
    +
    466  } else {
    +
    467  *res.prev_link = node;
    +
    468  }
    +
    469 
    +
    470  // from here, traverse cur and free the nodes, until we get to one
    +
    471  // that shouldn't be freed
    +
    472  while (cur->next && cur->next->x <= res.x + width) {
    +
    473  stbrp_node *next = cur->next;
    +
    474  // move the current node to the free list
    +
    475  cur->next = context->free_head;
    +
    476  context->free_head = cur;
    +
    477  cur = next;
    +
    478  }
    +
    479 
    +
    480  // stitch the list back in
    +
    481  node->next = cur;
    +
    482 
    +
    483  if (cur->x < res.x + width)
    +
    484  cur->x = (stbrp_coord) (res.x + width);
    +
    485 
    +
    486 #ifdef _DEBUG
    +
    487  cur = context->active_head;
    +
    488  while (cur->x < context->width) {
    +
    489  STBRP_ASSERT(cur->x < cur->next->x);
    +
    490  cur = cur->next;
    +
    491  }
    +
    492  STBRP_ASSERT(cur->next == NULL);
    +
    493 
    +
    494  {
    +
    495  stbrp_node *L1 = NULL, *L2 = NULL;
    +
    496  int count=0;
    +
    497  cur = context->active_head;
    +
    498  while (cur) {
    +
    499  L1 = cur;
    +
    500  cur = cur->next;
    +
    501  ++count;
    +
    502  }
    +
    503  cur = context->free_head;
    +
    504  while (cur) {
    +
    505  L2 = cur;
    +
    506  cur = cur->next;
    +
    507  ++count;
    +
    508  }
    +
    509  STBRP_ASSERT(count == context->num_nodes+2);
    +
    510  }
    +
    511 #endif
    +
    512 
    +
    513  return res;
    +
    514 }
    +
    515 
    +
    516 static int rect_height_compare(const void *a, const void *b)
    +
    517 {
    +
    518  const stbrp_rect *p = (const stbrp_rect *) a;
    +
    519  const stbrp_rect *q = (const stbrp_rect *) b;
    +
    520  if (p->h > q->h)
    +
    521  return -1;
    +
    522  if (p->h < q->h)
    +
    523  return 1;
    +
    524  return (p->w > q->w) ? -1 : (p->w < q->w);
    +
    525 }
    +
    526 
    +
    527 static int rect_original_order(const void *a, const void *b)
    +
    528 {
    +
    529  const stbrp_rect *p = (const stbrp_rect *) a;
    +
    530  const stbrp_rect *q = (const stbrp_rect *) b;
    +
    531  return (p->was_packed < q->was_packed) ? -1 : (p->was_packed > q->was_packed);
    +
    532 }
    +
    533 
    +
    534 #ifdef STBRP_LARGE_RECTS
    +
    535 #define STBRP__MAXVAL 0xffffffff
    +
    536 #else
    +
    537 #define STBRP__MAXVAL 0xffff
    +
    538 #endif
    +
    539 
    +
    540 STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int num_rects)
    +
    541 {
    +
    542  int i, all_rects_packed = 1;
    +
    543 
    +
    544  // we use the 'was_packed' field internally to allow sorting/unsorting
    +
    545  for (i=0; i < num_rects; ++i) {
    +
    546  rects[i].was_packed = i;
    +
    547  #ifndef STBRP_LARGE_RECTS
    +
    548  STBRP_ASSERT(rects[i].w <= 0xffff && rects[i].h <= 0xffff);
    +
    549  #endif
    +
    550  }
    +
    551 
    +
    552  // sort according to heuristic
    +
    553  STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_height_compare);
    +
    554 
    +
    555  for (i=0; i < num_rects; ++i) {
    +
    556  if (rects[i].w == 0 || rects[i].h == 0) {
    +
    557  rects[i].x = rects[i].y = 0; // empty rect needs no space
    +
    558  } else {
    +
    559  stbrp__findresult fr = stbrp__skyline_pack_rectangle(context, rects[i].w, rects[i].h);
    +
    560  if (fr.prev_link) {
    +
    561  rects[i].x = (stbrp_coord) fr.x;
    +
    562  rects[i].y = (stbrp_coord) fr.y;
    +
    563  } else {
    +
    564  rects[i].x = rects[i].y = STBRP__MAXVAL;
    +
    565  }
    +
    566  }
    +
    567  }
    +
    568 
    +
    569  // unsort
    +
    570  STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_original_order);
    +
    571 
    +
    572  // set was_packed flags and all_rects_packed status
    +
    573  for (i=0; i < num_rects; ++i) {
    +
    574  rects[i].was_packed = !(rects[i].x == STBRP__MAXVAL && rects[i].y == STBRP__MAXVAL);
    +
    575  if (!rects[i].was_packed)
    +
    576  all_rects_packed = 0;
    +
    577  }
    +
    578 
    +
    579  // return the all_rects_packed status
    +
    580  return all_rects_packed;
    +
    581 }
    +
    582 #endif
    +
    583 
    +
    584 /*
    +
    585 ------------------------------------------------------------------------------
    +
    586 This software is available under 2 licenses -- choose whichever you prefer.
    +
    587 ------------------------------------------------------------------------------
    +
    588 ALTERNATIVE A - MIT License
    +
    589 Copyright (c) 2017 Sean Barrett
    +
    590 Permission is hereby granted, free of charge, to any person obtaining a copy of
    +
    591 this software and associated documentation files (the "Software"), to deal in
    +
    592 the Software without restriction, including without limitation the rights to
    +
    593 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
    +
    594 of the Software, and to permit persons to whom the Software is furnished to do
    +
    595 so, subject to the following conditions:
    +
    596 The above copyright notice and this permission notice shall be included in all
    +
    597 copies or substantial portions of the Software.
    +
    598 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +
    599 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +
    600 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +
    601 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +
    602 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +
    603 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +
    604 SOFTWARE.
    +
    605 ------------------------------------------------------------------------------
    +
    606 ALTERNATIVE B - Public Domain (www.unlicense.org)
    +
    607 This is free and unencumbered software released into the public domain.
    +
    608 Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
    +
    609 software, either in source code form or as a compiled binary, for any purpose,
    +
    610 commercial or non-commercial, and by any means.
    +
    611 In jurisdictions that recognize copyright laws, the author or authors of this
    +
    612 software dedicate any and all copyright interest in the software to the public
    +
    613 domain. We make this dedication for the benefit of the public at large and to
    +
    614 the detriment of our heirs and successors. We intend this dedication to be an
    +
    615 overt act of relinquishment in perpetuity of all present and future rights to
    +
    616 this software under copyright law.
    +
    617 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +
    618 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +
    619 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +
    620 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    +
    621 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    +
    622 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    +
    623 ------------------------------------------------------------------------------
    +
    624 */
    +
    @ STBRP_HEURISTIC_Skyline_BF_sortHeight
    +
    @ STBRP_HEURISTIC_Skyline_BL_sortHeight
    +
    @ STBRP_HEURISTIC_Skyline_default
    +
    #define STBRP_DEF
    Definition: stb_rect_pack.h:64
    +
    STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int allow_out_of_mem)
    +
    STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic)
    +
    STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes)
    +
    unsigned short stbrp_coord
    Definition: stb_rect_pack.h:78
    +
    STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int num_rects)
    + + +
    stbrp_node extra[2]
    +
    stbrp_node * active_head
    +
    stbrp_node * free_head
    + + + + + + +
    stbrp_coord x
    +
    stbrp_node * next
    +
    stbrp_coord y
    + +
    stbrp_coord w
    +
    stbrp_coord x
    + + +
    stbrp_coord y
    +
    stbrp_coord h
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/structstbrp__context-members.html b/dev/MinGfx/docs/html/structstbrp__context-members.html new file mode 100644 index 0000000..affff9c --- /dev/null +++ b/dev/MinGfx/docs/html/structstbrp__context-members.html @@ -0,0 +1,99 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    stbrp_context Member List
    +
    + + + + + + diff --git a/dev/MinGfx/docs/html/structstbrp__context.html b/dev/MinGfx/docs/html/structstbrp__context.html new file mode 100644 index 0000000..0336ebc --- /dev/null +++ b/dev/MinGfx/docs/html/structstbrp__context.html @@ -0,0 +1,265 @@ + + + + + + + +MinGfx Toolkit: stbrp_context Struct Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    stbrp_context Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 172 of file stb_rect_pack.h.

    +
    +

    #include <stb_rect_pack.h>

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

    +Public Attributes

    int width
     
    int height
     
    int align
     
    int init_mode
     
    int heuristic
     
    int num_nodes
     
    stbrp_nodeactive_head
     
    stbrp_nodefree_head
     
    stbrp_node extra [2]
     
    +

    Member Data Documentation

    + +

    ◆ active_head

    + +
    +
    + + + + +
    stbrp_node* stbrp_context::active_head
    +
    + +

    Definition at line 180 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ align

    + +
    +
    + + + + +
    int stbrp_context::align
    +
    + +

    Definition at line 176 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ extra

    + +
    +
    + + + + +
    stbrp_node stbrp_context::extra[2]
    +
    + +

    Definition at line 182 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ free_head

    + +
    +
    + + + + +
    stbrp_node* stbrp_context::free_head
    +
    + +

    Definition at line 181 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    int stbrp_context::height
    +
    + +

    Definition at line 175 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ heuristic

    + +
    +
    + + + + +
    int stbrp_context::heuristic
    +
    + +

    Definition at line 178 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ init_mode

    + +
    +
    + + + + +
    int stbrp_context::init_mode
    +
    + +

    Definition at line 177 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ num_nodes

    + +
    +
    + + + + +
    int stbrp_context::num_nodes
    +
    + +

    Definition at line 179 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    int stbrp_context::width
    +
    + +

    Definition at line 174 of file stb_rect_pack.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/dev/MinGfx/docs/html/structstbrp__node-members.html b/dev/MinGfx/docs/html/structstbrp__node-members.html new file mode 100644 index 0000000..f5f798d --- /dev/null +++ b/dev/MinGfx/docs/html/structstbrp__node-members.html @@ -0,0 +1,93 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    stbrp_node Member List
    +
    +
    + +

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

    + + + + +
    nextstbrp_node
    xstbrp_node
    ystbrp_node
    + + + + + diff --git a/dev/MinGfx/docs/html/structstbrp__node.html b/dev/MinGfx/docs/html/structstbrp__node.html new file mode 100644 index 0000000..cc4ebe6 --- /dev/null +++ b/dev/MinGfx/docs/html/structstbrp__node.html @@ -0,0 +1,157 @@ + + + + + + + +MinGfx Toolkit: stbrp_node Struct Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    stbrp_node Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 166 of file stb_rect_pack.h.

    +
    +

    #include <stb_rect_pack.h>

    + + + + + + + + +

    +Public Attributes

    stbrp_coord x
     
    stbrp_coord y
     
    stbrp_nodenext
     
    +

    Member Data Documentation

    + +

    ◆ next

    + +
    +
    + + + + +
    stbrp_node* stbrp_node::next
    +
    + +

    Definition at line 169 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ x

    + +
    +
    + + + + +
    stbrp_coord stbrp_node::x
    +
    + +

    Definition at line 168 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ y

    + +
    +
    + + + + +
    stbrp_coord stbrp_node::y
    +
    + +

    Definition at line 168 of file stb_rect_pack.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/dev/MinGfx/docs/html/structstbrp__rect-members.html b/dev/MinGfx/docs/html/structstbrp__rect-members.html new file mode 100644 index 0000000..e73efd1 --- /dev/null +++ b/dev/MinGfx/docs/html/structstbrp__rect-members.html @@ -0,0 +1,96 @@ + + + + + + + +MinGfx Toolkit: Member List + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    stbrp_rect Member List
    +
    +
    + +

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

    + + + + + + + +
    hstbrp_rect
    idstbrp_rect
    wstbrp_rect
    was_packedstbrp_rect
    xstbrp_rect
    ystbrp_rect
    + + + + + diff --git a/dev/MinGfx/docs/html/structstbrp__rect.html b/dev/MinGfx/docs/html/structstbrp__rect.html new file mode 100644 index 0000000..782b5df --- /dev/null +++ b/dev/MinGfx/docs/html/structstbrp__rect.html @@ -0,0 +1,211 @@ + + + + + + + +MinGfx Toolkit: stbrp_rect Struct Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    stbrp_rect Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 106 of file stb_rect_pack.h.

    +
    +

    #include <stb_rect_pack.h>

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

    +Public Attributes

    int id
     
    stbrp_coord w
     
    stbrp_coord h
     
    stbrp_coord x
     
    stbrp_coord y
     
    int was_packed
     
    +

    Member Data Documentation

    + +

    ◆ h

    + +
    +
    + + + + +
    stbrp_coord stbrp_rect::h
    +
    + +

    Definition at line 112 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ id

    + +
    +
    + + + + +
    int stbrp_rect::id
    +
    + +

    Definition at line 109 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ w

    + +
    +
    + + + + +
    stbrp_coord stbrp_rect::w
    +
    + +

    Definition at line 112 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ was_packed

    + +
    +
    + + + + +
    int stbrp_rect::was_packed
    +
    + +

    Definition at line 116 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ x

    + +
    +
    + + + + +
    stbrp_coord stbrp_rect::x
    +
    + +

    Definition at line 115 of file stb_rect_pack.h.

    + +
    +
    + +

    ◆ y

    + +
    +
    + + + + +
    stbrp_coord stbrp_rect::y
    +
    + +

    Definition at line 115 of file stb_rect_pack.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/dev/MinGfx/docs/html/sync_off.png b/dev/MinGfx/docs/html/sync_off.png new file mode 100644 index 0000000..f8b5a50 Binary files /dev/null and b/dev/MinGfx/docs/html/sync_off.png differ diff --git a/dev/MinGfx/docs/html/sync_on.png b/dev/MinGfx/docs/html/sync_on.png new file mode 100644 index 0000000..172451a Binary files /dev/null and b/dev/MinGfx/docs/html/sync_on.png differ diff --git a/dev/MinGfx/docs/html/tab_a.png b/dev/MinGfx/docs/html/tab_a.png new file mode 100644 index 0000000..98b9de2 Binary files /dev/null and b/dev/MinGfx/docs/html/tab_a.png differ diff --git a/dev/MinGfx/docs/html/tab_b.png b/dev/MinGfx/docs/html/tab_b.png new file mode 100644 index 0000000..eca9b7b Binary files /dev/null and b/dev/MinGfx/docs/html/tab_b.png differ diff --git a/dev/MinGfx/docs/html/tab_h.png b/dev/MinGfx/docs/html/tab_h.png new file mode 100644 index 0000000..b46c7fe Binary files /dev/null and b/dev/MinGfx/docs/html/tab_h.png differ diff --git a/dev/MinGfx/docs/html/tab_s.png b/dev/MinGfx/docs/html/tab_s.png new file mode 100644 index 0000000..65a5c21 Binary files /dev/null and b/dev/MinGfx/docs/html/tab_s.png differ diff --git a/dev/MinGfx/docs/html/tabs.css b/dev/MinGfx/docs/html/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/dev/MinGfx/docs/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:0/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:0 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:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.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);-moz-border-radius:5px;-webkit-border-radius:5px;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{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;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{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;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{-moz-border-radius:0;-webkit-border-radius:0;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:white;text-shadow:0 1px 1px black}.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;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white 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;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);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:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.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;-moz-border-radius:5px;-webkit-border-radius:5px;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}} \ No newline at end of file diff --git a/dev/MinGfx/docs/html/text__shader_8h.html b/dev/MinGfx/docs/html/text__shader_8h.html new file mode 100644 index 0000000..c8b6d7f --- /dev/null +++ b/dev/MinGfx/docs/html/text__shader_8h.html @@ -0,0 +1,117 @@ + + + + + + + +MinGfx Toolkit: src/text_shader.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    text_shader.h File Reference
    +
    +
    +
    #include <string>
    +#include <map>
    +#include "matrix4.h"
    +#include "mesh.h"
    +#include "shader_program.h"
    +#include "texture2d.h"
    +#include <stb_truetype.h>
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Classes

    class  mingfx::TextShader
     
    class  mingfx::TextShader::TextFormat
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/text__shader_8h_source.html b/dev/MinGfx/docs/html/text__shader_8h_source.html new file mode 100644 index 0000000..7c88741 --- /dev/null +++ b/dev/MinGfx/docs/html/text__shader_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + +MinGfx Toolkit: src/text_shader.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    text_shader.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_TEXT_SHADER_H_
    +
    15 #define SRC_TEXT_SHADER_H_
    +
    16 
    +
    17 #include <string>
    +
    18 #include <map>
    +
    19 
    +
    20 #include "matrix4.h"
    +
    21 #include "mesh.h"
    +
    22 #include "shader_program.h"
    +
    23 #include "texture2d.h"
    +
    24 
    +
    25 // disable warnings for this 3rd party code
    +
    26 #pragma warning ( push, 0 )
    +
    27 #include <stb_truetype.h>
    +
    28 #pragma warning ( pop )
    +
    29 
    +
    30 namespace mingfx {
    +
    31 
    +
    32 
    +
    33 
    +
    36 class TextShader {
    +
    37 public:
    + +
    39  virtual ~TextShader();
    +
    40 
    +
    45  bool Init(const std::string &font_file, int native_font_size);
    +
    46 
    +
    47  enum class HorizAlign {
    + + + +
    51  };
    +
    52 
    +
    53  enum class VertAlign {
    + + + + +
    58  };
    +
    59 
    +
    60  class TextFormat {
    +
    61  public:
    +
    62  // constructor sets defaults
    + +
    64  size(0.1f),
    +
    65  color(1,1,1,1),
    +
    66  h_align(HorizAlign::HORIZ_ALIGN_CENTER),
    +
    67  v_align(VertAlign::VERT_ALIGN_BASELINE) {}
    +
    68 
    +
    69  float size;
    + + + +
    73  };
    +
    74 
    +
    75 
    +
    76  //void Draw2D(const Point2 &pos,
    +
    77  // const std::string &text, TextFormat format, bool cache=false);
    +
    78 
    +
    79 
    +
    80  void Draw3D(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection,
    +
    81  const std::string &text, TextFormat format, bool cache=false);
    +
    82 
    +
    83 
    +
    84  Vector2 TextExtents(const std::string &text, TextFormat format, bool cache=false);
    +
    85 
    + +
    87 
    +
    88 private:
    +
    89  Texture2D atlas_;
    +
    90  float native_font_size_;
    +
    91 
    +
    92  stbtt_packedchar chardata_[128];
    +
    93 
    +
    94  struct MeshData {
    +
    95  Mesh mesh;
    +
    96  Point2 min;
    +
    97  Point2 max;
    +
    98  };
    +
    99 
    +
    100  void SetTextMesh(const std::string &text, MeshData *md);
    +
    101 
    +
    102  std::map<std::string, MeshData> cache_;
    +
    103  MeshData tmp_md_;
    +
    104 
    +
    105  ShaderProgram shader_;
    +
    106 };
    +
    107 
    +
    108 } // end namespace
    +
    109 
    +
    110 #endif
    +
    Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...
    Definition: color.h:41
    +
    A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...
    Definition: matrix4.h:50
    +
    A triangle mesh data structure that can be rendered with a ShaderProgram like DefaultShader.
    Definition: mesh.h:127
    +
    A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...
    Definition: point2.h:28
    +
    A wrapper around GLSL shader programs.
    + + + + + + + + +
    void Draw3D(const Matrix4 &model, const Matrix4 &view, const Matrix4 &projection, const std::string &text, TextFormat format, bool cache=false)
    +
    virtual ~TextShader()
    +
    float native_font_size()
    + + + + + +
    Vector2 TextExtents(const std::string &text, TextFormat format, bool cache=false)
    +
    bool Init(const std::string &font_file, int native_font_size)
    Call this from within the InitOpenGL() function since it will initialize not just the Font's internal...
    + + + + +
    A wrapper around a 2D texture that supports loading images from files or setting texture color data d...
    Definition: texture2d.h:42
    +
    A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...
    Definition: vector2.h:28
    + + +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    + + +
    + + + + + diff --git a/dev/MinGfx/docs/html/texture2d_8h.html b/dev/MinGfx/docs/html/texture2d_8h.html new file mode 100644 index 0000000..5324545 --- /dev/null +++ b/dev/MinGfx/docs/html/texture2d_8h.html @@ -0,0 +1,112 @@ + + + + + + + +MinGfx Toolkit: src/texture2d.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    texture2d.h File Reference
    +
    +
    +
    #include "opengl_headers.h"
    +#include "color.h"
    +#include <string>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Texture2D
     A wrapper around a 2D texture that supports loading images from files or setting texture color data directly. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/texture2d_8h_source.html b/dev/MinGfx/docs/html/texture2d_8h_source.html new file mode 100644 index 0000000..2a1f2ea --- /dev/null +++ b/dev/MinGfx/docs/html/texture2d_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +MinGfx Toolkit: src/texture2d.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    texture2d.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_TEXTURE2D_H_
    +
    15 #define SRC_TEXTURE2D_H_
    +
    16 
    +
    17 
    +
    18 #include "opengl_headers.h"
    +
    19 #include "color.h"
    +
    20 
    +
    21 #include <string>
    +
    22 
    +
    23 
    +
    24 namespace mingfx {
    +
    25 
    +
    42 class Texture2D {
    +
    43 public:
    +
    44 
    +
    47  Texture2D(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR);
    +
    48  virtual ~Texture2D();
    +
    49 
    +
    50 
    +
    55  bool InitFromFile(const std::string &filename);
    +
    56 
    +
    66  bool InitFromBytes(int width, int height, const unsigned char * data);
    +
    67 
    +
    77  bool InitFromFloats(int width, int height, const float * data);
    +
    78 
    +
    79 
    +
    83  bool UpdateFromBytes(const unsigned char * data);
    +
    84 
    +
    88  bool UpdateFromFloats(const float * data);
    +
    89 
    +
    90 
    +
    92  bool initialized() const;
    +
    93 
    +
    95  int width() const;
    +
    96 
    +
    98  int height() const;
    +
    99 
    +
    101  GLuint opengl_id() const;
    +
    102 
    +
    104  GLenum wrap_mode() const;
    +
    105 
    +
    107  GLenum filter_mode() const;
    +
    108 
    +
    110  void set_wrap_mode(GLenum wrapMode);
    +
    111 
    +
    113  void set_filter_mode(GLenum filterMode);
    +
    114 
    +
    117  Color Pixel(int x, int y) const;
    +
    118 
    +
    119 private:
    +
    120 
    +
    121  bool InitOpenGL();
    +
    122 
    +
    123  GLenum dataType_; // GL_UNSIGNED_BYTE or GL_FLOAT
    +
    124  const unsigned char * data_ubyte_;
    +
    125  const float * data_float_;
    +
    126 
    +
    127  int width_;
    +
    128  int height_;
    +
    129  bool handleMemInternally_;
    +
    130 
    +
    131  GLuint texID_;
    +
    132  GLenum wrapMode_;
    +
    133  GLenum filterMode_;
    +
    134 };
    +
    135 
    +
    136 
    +
    137 } // end namespace
    +
    138 
    +
    139 #endif
    +
    Represents a 4-component (R,G,B,A) color, stored internally in a float array to be compatable with Op...
    Definition: color.h:41
    +
    A wrapper around a 2D texture that supports loading images from files or setting texture color data d...
    Definition: texture2d.h:42
    +
    bool UpdateFromBytes(const unsigned char *data)
    This function may be called to re-read the texture data from an array formated the same as in InitFro...
    +
    bool initialized() const
    Returns true if the texture data has been successfully transferred to OpenGL.
    +
    GLenum wrap_mode() const
    Returns an enumerated constant for the OpenGL wrap mode used by the texture.
    +
    Color Pixel(int x, int y) const
    Returns the color at the specified pixel. The top left corner of the image is (0,0) and the bottom ri...
    +
    int height() const
    Returns the height in pixels of the texture.
    +
    int width() const
    Returns the width in pixels of the texture.
    +
    void set_filter_mode(GLenum filterMode)
    Uses the OpenGL texture filter mode arguments.
    +
    bool InitFromFile(const std::string &filename)
    Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's int...
    +
    Texture2D(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR)
    Creates an empty texture. Optional parameters can be provided to set the texture wrap mode and filter...
    +
    void set_wrap_mode(GLenum wrapMode)
    Uses the OpenGL texture wrap mode arguments.
    +
    virtual ~Texture2D()
    +
    bool InitFromBytes(int width, int height, const unsigned char *data)
    Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's int...
    +
    GLuint opengl_id() const
    Returns the unsigned int used as the texture handle by OpenGL.
    +
    bool UpdateFromFloats(const float *data)
    This function may be called to re-read the texture data from an array formated the same as in InitFro...
    +
    bool InitFromFloats(int width, int height, const float *data)
    Call this from within the InitOpenGL() function since it will initialize not just the Texture2D's int...
    +
    GLenum filter_mode() const
    Returns an enumerated constant for the OpenGL filter mode used by the texture.
    + +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    + +
    + + + + + diff --git a/dev/MinGfx/docs/html/unicam_8h.html b/dev/MinGfx/docs/html/unicam_8h.html new file mode 100644 index 0000000..bb51c32 --- /dev/null +++ b/dev/MinGfx/docs/html/unicam_8h.html @@ -0,0 +1,114 @@ + + + + + + + +MinGfx Toolkit: src/unicam.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    unicam.h File Reference
    +
    +
    +
    #include "quick_shapes.h"
    +#include "point2.h"
    +#include "point3.h"
    +#include "vector2.h"
    +#include "vector3.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::UniCam
     This implements a user interface for controlling the camera with the mouse. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/unicam_8h_source.html b/dev/MinGfx/docs/html/unicam_8h_source.html new file mode 100644 index 0000000..80fa0dc --- /dev/null +++ b/dev/MinGfx/docs/html/unicam_8h_source.html @@ -0,0 +1,234 @@ + + + + + + + +MinGfx Toolkit: src/unicam.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    unicam.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_UNICAM_H_
    +
    15 #define SRC_UNICAM_H_
    +
    16 
    +
    17 #include "quick_shapes.h"
    +
    18 #include "point2.h"
    +
    19 #include "point3.h"
    +
    20 #include "vector2.h"
    +
    21 #include "vector3.h"
    +
    22 
    +
    23 
    +
    24 namespace mingfx {
    +
    25 
    +
    26 
    +
    105 class UniCam {
    +
    106 public:
    +
    107 
    + +
    110 
    +
    112  UniCam(const Matrix4 &initialViewMatrix);
    +
    113 
    +
    114  virtual ~UniCam();
    +
    115 
    +
    116 
    +
    117  // To make the interaction work, the following set of functions need to be
    +
    118  // called from your GraphicsApp or whatever main application class you use
    +
    119  // to receive user input events and a draw callback.
    +
    120 
    +
    132  void OnButtonDown(const Point2 &normalizedMousePos, float mouseZ);
    +
    133 
    +
    142  void OnDrag(const Point2 &normalizedMousePos);
    +
    143 
    +
    152  void OnButtonUp(const Point2 &normalizedMousePos);
    +
    153 
    +
    159  void AdvanceAnimation(double dt);
    +
    160 
    +
    166  void Draw(const Matrix4 &projectionMatrix);
    +
    167 
    +
    168 
    + +
    179 
    +
    180 
    + +
    184 
    + +
    188 
    +
    189 
    +
    190  // -------------
    +
    191 
    +
    194  void set_view_matrix(Matrix4 viewMatrix);
    +
    195 
    +
    202  void set_default_depth(float d);
    +
    203 
    +
    204 
    +
    205 private:
    +
    206 
    +
    207  void recalc_angular_vel();
    +
    208 
    +
    209  enum class UniCamState {
    +
    210  START,
    +
    211  PAN_DOLLY_ROT_DECISION,
    +
    212  PAN_DOLLY_DECISION,
    +
    213  ROT_WAIT_FOR_SECOND_CLICK,
    +
    214  PAN,
    +
    215  DOLLY,
    +
    216  ROT,
    +
    217  SPINNING
    +
    218  };
    +
    219  UniCamState state_;
    +
    220 
    +
    221  Point2 mouseLast_;
    +
    222  double elapsedTime_;
    +
    223 
    +
    224  Point2 initialClickPos_;
    +
    225  bool hitGeometry_;
    +
    226  Point3 hitPoint_;
    +
    227 
    +
    228  bool rotInitialized_;
    +
    229  Point3 rotLastIPoint_;
    +
    230  float boundingSphereRad_;
    +
    231  Point3 boundingSphereCtr_;
    +
    232  double rotLastTime_;
    +
    233  std::vector<std::pair<double, double>> rotAngularVelBuffer_;
    +
    234  double rotAngularVel_;
    +
    235  Vector3 rotAxis_;
    +
    236 
    +
    237  bool dollyInitialized_;
    +
    238  float dollyFactor_;
    +
    239  float defaultDepth_;
    +
    240 
    +
    241  bool showIcon_;
    +
    242  QuickShapes quickShapes_;
    +
    243 
    +
    244  Matrix4 V_;
    +
    245  Matrix4 Vstart_;
    +
    246 
    +
    247  // saved from the last draw call in order to unproject the mouse pos
    +
    248  Matrix4 Pdraw_;
    +
    249 };
    +
    250 
    +
    251 
    +
    252 } // end namespace
    +
    253 
    +
    254 #endif
    +
    255 
    +
    256 
    +
    A 4x4 transformation matrix stored internally as an array of floats in column-major order so as to be...
    Definition: matrix4.h:50
    +
    A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...
    Definition: point2.h:28
    +
    A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
    Definition: point3.h:52
    +
    This class provides a quick way to draw shapes for use in debugging or simple scenes.
    Definition: quick_shapes.h:69
    +
    This implements a user interface for controlling the camera with the mouse.
    Definition: unicam.h:105
    +
    void OnButtonUp(const Point2 &normalizedMousePos)
    Attach this to the corresponding button up event, for example, call this from within GraphicsApp::OnR...
    +
    void OnDrag(const Point2 &normalizedMousePos)
    Attach this to the corresponding mouse move event, for example, call this from within GraphicsApp::On...
    +
    Point3 eye()
    Returns the "eye" point (i.e., focal point) of the camera in world space coordinates.
    +
    void set_view_matrix(Matrix4 viewMatrix)
    This is not required, but you may use this if you wish to set an initial view matrix or reset the vie...
    +
    UniCam()
    Creates a UniCam object with an initial view matrix = identity.
    +
    void set_default_depth(float d)
    This sets the depth of the center of rotation for the case when the user's click does not intersect a...
    +
    Vector3 look()
    Returns the look direction (i.e., -Z axis of the camera matrix) in world space coordinates.
    +
    void OnButtonDown(const Point2 &normalizedMousePos, float mouseZ)
    Attach this to whatever mouse button you wish, for example, call this from within GraphicsApp::OnRigh...
    +
    void AdvanceAnimation(double dt)
    Attach this to a callback that can be used to control animation. Within GraphicsApp::UpdateSimulation...
    +
    void Draw(const Matrix4 &projectionMatrix)
    Finally, attach this to your draw callback routine. Within GraphicsApp::DrawUsingOpenGL(),...
    +
    UniCam(const Matrix4 &initialViewMatrix)
    Creates a UniCam object with the supplied initial view matrix.
    +
    Matrix4 view_matrix()
    Access the camera view matrix created by the UniCam interactions via this method and use it to draw t...
    +
    virtual ~UniCam()
    +
    A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
    Definition: vector3.h:62
    +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    + + + + + +
    + + + + + diff --git a/dev/MinGfx/docs/html/vector2_8h.html b/dev/MinGfx/docs/html/vector2_8h.html new file mode 100644 index 0000000..b035960 --- /dev/null +++ b/dev/MinGfx/docs/html/vector2_8h.html @@ -0,0 +1,149 @@ + + + + + + + +MinGfx Toolkit: src/vector2.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    vector2.h File Reference
    +
    +
    +
    #include <iostream>
    +#include "point2.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Vector2
     A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements, and screen-space vectors. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Vector2 mingfx::operator/ (const Vector2 &v, const float s)
     Divide the vector by the scalar s. More...
     
    Vector2 mingfx::operator* (const float s, const Vector2 &v)
     Multiply the vector by the scalar s. More...
     
    Vector2 mingfx::operator* (const Vector2 &v, const float s)
     Multiply the vector by the scalar s. More...
     
    Vector2 mingfx::operator- (const Vector2 &v)
     Negate the vector. More...
     
    Point2 mingfx::operator+ (const Vector2 &v, const Point2 &p)
     Adds a vector and a point, returns a point. More...
     
    Point2 mingfx::operator+ (const Point2 &p, const Vector2 &v)
     Adds a point and a vector, returns a point. More...
     
    Vector2 mingfx::operator+ (const Vector2 &v1, const Vector2 &v2)
     Adds a vector and a vector, returns a vector. More...
     
    Point2 mingfx::operator- (const Point2 &p, const Vector2 &v)
     Subtracts a vector from a point, returns a point. More...
     
    Vector2 mingfx::operator- (const Vector2 &v1, const Vector2 &v2)
     Subtracts v2 from v1, returns a vector. More...
     
    Vector2 mingfx::operator- (const Point2 &p1, const Point2 &p2)
     Returns the vector spanning p1 and p2. More...
     
    std::ostream & mingfx::operator<< (std::ostream &os, const Vector2 &v)
     
    std::istream & mingfx::operator>> (std::istream &is, Vector2 &v)
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/vector2_8h_source.html b/dev/MinGfx/docs/html/vector2_8h_source.html new file mode 100644 index 0000000..935000d --- /dev/null +++ b/dev/MinGfx/docs/html/vector2_8h_source.html @@ -0,0 +1,261 @@ + + + + + + + +MinGfx Toolkit: src/vector2.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    vector2.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_VECTOR2_H_
    +
    15 #define SRC_VECTOR2_H_
    +
    16 
    +
    17 #include <iostream>
    +
    18 
    +
    19 #include "point2.h"
    +
    20 
    +
    21 
    +
    22 namespace mingfx {
    +
    23 
    +
    24 
    +
    28 class Vector2 {
    +
    29 public:
    +
    30 
    + +
    33 
    +
    36  Vector2(float x, float y);
    +
    37 
    +
    39  Vector2(float *v);
    +
    40 
    +
    42  Vector2(const Vector2& v);
    +
    43 
    +
    45  virtual ~Vector2();
    +
    46 
    +
    48  bool operator==(const Vector2& v) const;
    +
    49 
    +
    51  bool operator!=(const Vector2& v) const;
    +
    52 
    + +
    55 
    +
    57  float operator[](const int i) const;
    +
    58 
    +
    66  float& operator[](const int i);
    +
    67 
    +
    70  float x() const { return v[0]; }
    +
    71 
    +
    74  float y() const { return v[1]; }
    +
    75 
    +
    77  float w() const { return 0.0; }
    +
    78 
    +
    79 
    +
    80  // --- Vector operations ---
    +
    81 
    +
    83  float Dot(const Vector2& v) const;
    +
    84 
    +
    86  float Length() const;
    +
    87 
    +
    89  void Normalize();
    +
    90 
    +
    93  Vector2 ToUnit() const;
    +
    94 
    +
    98  Vector2 Lerp(const Vector2 &b, float alpha) const;
    +
    99 
    +
    101  const float * value_ptr() const;
    +
    102 
    +
    103 
    +
    104 
    +
    106  static Vector2 Normalize(const Vector2 &v);
    +
    107 
    +
    109  static float Dot(const Vector2 &v1, const Vector2 &v2);
    +
    110 
    +
    112  static const Vector2& Zero();
    +
    113 
    +
    115  static const Vector2& One();
    +
    116 
    +
    118  static const Vector2& UnitX();
    +
    119 
    +
    121  static const Vector2& UnitY();
    +
    122 
    +
    125  static Vector2 Lerp(const Vector2 &a, const Vector2 &b, float alpha);
    +
    126 
    +
    127 private:
    +
    128  float v[2];
    +
    129 };
    +
    130 
    +
    131 
    +
    132 // ---------- Operator Overloads for Working with Vectors ----------
    +
    133 
    +
    134 
    +
    135 // --- Scalers ---
    +
    136 
    +
    138 Vector2 operator/(const Vector2& v, const float s);
    +
    139 
    +
    141 Vector2 operator*(const float s, const Vector2& v);
    +
    142 
    +
    144 Vector2 operator*(const Vector2& v, const float s);
    +
    145 
    + +
    148 
    +
    149 // Note: no -(point) operator, that's an undefined operation
    +
    150 
    +
    151 
    +
    152 // --- Point and Vector Arithmetic ---
    +
    153 
    +
    155 Point2 operator+(const Vector2& v, const Point2& p);
    +
    156 
    +
    158 Point2 operator+(const Point2& p, const Vector2& v);
    +
    159 
    +
    161 Vector2 operator+(const Vector2& v1, const Vector2& v2);
    +
    162 
    +
    163 // Note: no (point + point) operator, that's an undefined operation
    +
    164 
    +
    166 Point2 operator-(const Point2& p, const Vector2& v);
    +
    167 
    +
    169 Vector2 operator-(const Vector2& v1, const Vector2& v2);
    +
    170 
    +
    172 Vector2 operator-(const Point2& p1, const Point2& p2);
    +
    173 
    +
    174 // Note: no (vector - point) operator, that's an undefined operation
    +
    175 
    +
    176 
    +
    177 // --- Stream operators ---
    +
    178 
    +
    179 // Vector2
    +
    180 std::ostream & operator<< ( std::ostream &os, const Vector2 &v);
    +
    181 std::istream & operator>> ( std::istream &is, Vector2 &v);
    +
    182 
    +
    183 
    +
    184 } // end namespace
    +
    185 
    +
    186 #endif
    +
    A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...
    Definition: point2.h:28
    +
    A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...
    Definition: vector2.h:28
    +
    static Vector2 Normalize(const Vector2 &v)
    Returns a new vector that is the unit version of v.
    +
    bool operator!=(const Vector2 &v) const
    Check for "inequality", taking floating point imprecision into account.
    +
    float w() const
    In homogeneous coordinates, the w coordinate for all vectors is 0.0.
    Definition: vector2.h:77
    +
    Vector2 & operator=(const Vector2 &v)
    Vector assignment operator.
    +
    Vector2(const Vector2 &v)
    Copy constructor for vector.
    +
    Vector2 Lerp(const Vector2 &b, float alpha) const
    Linear interpolation between this vector and another. Alpha=0.0 returns this vector,...
    +
    static const Vector2 & One()
    (1,1) - a shortcut for a special vector that is frequently needed
    +
    void Normalize()
    Normalizes the vector by making it unit length.
    +
    Vector2(float *v)
    Constructs a vector given a pointer to x,y,z data.
    +
    Vector2 ToUnit() const
    Returns a normalized (i.e., unit length) version of the vector without modifying the original ('this'...
    +
    float Length() const
    Returns the length of the vector.
    +
    static const Vector2 & Zero()
    (0,0) - a shortcut for a special vector that is frequently needed
    +
    const float * value_ptr() const
    Returns a const pointer to the raw data array.
    +
    static const Vector2 & UnitX()
    (1,0) - a shortcut for a special vector that is frequently needed
    +
    float & operator[](const int i)
    Returns a reference to the ith coordinate of the vector. Use this accessor if you wish to set the coo...
    +
    Vector2()
    Default constructor to create zero vector.
    +
    static float Dot(const Vector2 &v1, const Vector2 &v2)
    Returns v1 dot v2.
    +
    static const Vector2 & UnitY()
    (0,1) - a shortcut for a special vector that is frequently needed
    +
    static Vector2 Lerp(const Vector2 &a, const Vector2 &b, float alpha)
    Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...
    +
    float y() const
    Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1....
    Definition: vector2.h:74
    +
    virtual ~Vector2()
    Vector destructor.
    +
    Vector2(float x, float y)
    Constructs a vector (x,y,0), where the 0 comes from the use of homogeneous coordinates in computer gr...
    +
    bool operator==(const Vector2 &v) const
    Check for "equality", taking floating point imprecision into account.
    +
    float operator[](const int i) const
    Read only access to the ith coordinate of the vector.
    +
    float Dot(const Vector2 &v) const
    Returns "this dot v".
    +
    float x() const
    Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1....
    Definition: vector2.h:70
    +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    +
    Quaternion operator-(const Quaternion &q)
    +
    AABB operator+(const AABB &A, const AABB &B)
    +
    Quaternion operator/(const Quaternion &q, const float s)
    +
    std::ostream & operator<<(std::ostream &os, const Color &c)
    +
    std::istream & operator>>(std::istream &is, Color &c)
    +
    Matrix4 operator*(const Matrix4 &m, const float &s)
    Multiply matrix and scalar, returns the new matrix.
    + +
    + + + + + diff --git a/dev/MinGfx/docs/html/vector3_8h.html b/dev/MinGfx/docs/html/vector3_8h.html new file mode 100644 index 0000000..d2c0502 --- /dev/null +++ b/dev/MinGfx/docs/html/vector3_8h.html @@ -0,0 +1,149 @@ + + + + + + + +MinGfx Toolkit: src/vector3.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    vector3.h File Reference
    +
    +
    +
    #include <iostream>
    +#include "point3.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  mingfx::Vector3
     A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graphics operations. More...
     
    + + + + +

    +Namespaces

     mingfx
     Namespace for the MinGfx Toolkit.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Vector3 mingfx::operator/ (const Vector3 &v, const float s)
     Divide the vector by the scalar s. More...
     
    Vector3 mingfx::operator* (const float s, const Vector3 &v)
     Multiply the vector by the scalar s. More...
     
    Vector3 mingfx::operator* (const Vector3 &v, const float s)
     Multiply the vector by the scalar s. More...
     
    Vector3 mingfx::operator- (const Vector3 &v)
     Negate the vector. More...
     
    Point3 mingfx::operator+ (const Vector3 &v, const Point3 &p)
     Adds a vector and a point, returns a point. More...
     
    Point3 mingfx::operator+ (const Point3 &p, const Vector3 &v)
     Adds a point and a vector, returns a point. More...
     
    Vector3 mingfx::operator+ (const Vector3 &v1, const Vector3 &v2)
     Adds a vector and a vector, returns a vector. More...
     
    Point3 mingfx::operator- (const Point3 &p, const Vector3 &v)
     Subtracts a vector from a point, returns a point. More...
     
    Vector3 mingfx::operator- (const Vector3 &v1, const Vector3 &v2)
     Subtracts v2 from v1, returns a vector. More...
     
    Vector3 mingfx::operator- (const Point3 &p1, const Point3 &p2)
     Returns the vector spanning p1 and p2. More...
     
    std::ostream & mingfx::operator<< (std::ostream &os, const Vector3 &v)
     
    std::istream & mingfx::operator>> (std::istream &is, Vector3 &v)
     
    +
    + + + + + diff --git a/dev/MinGfx/docs/html/vector3_8h_source.html b/dev/MinGfx/docs/html/vector3_8h_source.html new file mode 100644 index 0000000..a64d797 --- /dev/null +++ b/dev/MinGfx/docs/html/vector3_8h_source.html @@ -0,0 +1,275 @@ + + + + + + + +MinGfx Toolkit: src/vector3.h Source File + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    MinGfx Toolkit +  1.0 +
    +
    A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    vector3.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of the MinGfx Project.
    +
    3 
    +
    4  Copyright (c) 2017,2018 Regents of the University of Minnesota.
    +
    5  All Rights Reserved.
    +
    6 
    +
    7  Original Author(s) of this File:
    +
    8  Dan Keefe, 2018, University of Minnesota
    +
    9 
    +
    10  Author(s) of Significant Updates/Modifications to the File:
    +
    11  ...
    +
    12  */
    +
    13 
    +
    14 #ifndef SRC_VECTOR3_H_
    +
    15 #define SRC_VECTOR3_H_
    +
    16 
    +
    17 #include <iostream>
    +
    18 
    +
    19 #include "point3.h"
    +
    20 
    +
    21 
    +
    22 namespace mingfx {
    +
    23 
    +
    24 
    +
    62 class Vector3 {
    +
    63 public:
    +
    64 
    + +
    67 
    +
    70  Vector3(float x, float y, float z);
    +
    71 
    +
    73  Vector3(float *v);
    +
    74 
    +
    76  Vector3(const Vector3& v);
    +
    77 
    +
    79  virtual ~Vector3();
    +
    80 
    +
    82  bool operator==(const Vector3& v) const;
    +
    83 
    +
    85  bool operator!=(const Vector3& v) const;
    +
    86 
    + +
    89 
    +
    91  float operator[](const int i) const;
    +
    92 
    +
    100  float& operator[](const int i);
    +
    101 
    +
    104  float x() const { return v[0]; }
    +
    105 
    +
    108  float y() const { return v[1]; }
    +
    109 
    +
    112  float z() const { return v[2]; }
    +
    113 
    +
    115  float w() const { return 0.0; }
    +
    116 
    +
    117 
    +
    118  // --- Vector operations ---
    +
    119 
    +
    127  float Dot(const Vector3& v) const;
    +
    128 
    +
    136  Vector3 Cross(const Vector3& v) const;
    +
    137 
    +
    139  float Length() const;
    +
    140 
    +
    142  void Normalize();
    +
    143 
    +
    146  Vector3 ToUnit() const;
    +
    147 
    +
    149  const float * value_ptr() const;
    +
    150 
    +
    154  Vector3 Lerp(const Vector3 &b, float alpha) const;
    +
    155 
    +
    156 
    +
    158  static const Vector3& Zero();
    +
    159 
    +
    161  static const Vector3& One();
    +
    162 
    +
    164  static const Vector3& UnitX();
    +
    165 
    +
    167  static const Vector3& UnitY();
    +
    168 
    +
    170  static const Vector3& UnitZ();
    +
    171 
    +
    172 
    +
    182  static Vector3 Normalize(const Vector3 &v);
    +
    183 
    +
    194  static Vector3 Cross(const Vector3 &v1, const Vector3 &v2);
    +
    195 
    +
    206  static float Dot(const Vector3 &v1, const Vector3 &v2);
    +
    207 
    +
    210  static Vector3 Lerp(const Vector3 &a, const Vector3 &b, float alpha);
    +
    211 
    +
    212 private:
    +
    213  float v[3];
    +
    214 };
    +
    215 
    +
    216 
    +
    217 // ---------- Operator Overloads for Working with Vectors ----------
    +
    218 
    +
    219 
    +
    220 // --- Scalers ---
    +
    221 
    +
    223 Vector3 operator/(const Vector3& v, const float s);
    +
    224 
    +
    226 Vector3 operator*(const float s, const Vector3& v);
    +
    227 
    +
    229 Vector3 operator*(const Vector3& v, const float s);
    +
    230 
    + +
    233 
    +
    234 // Note: no -(point) operator, that's an undefined operation
    +
    235 
    +
    236 
    +
    237 // --- Point and Vector Arithmetic ---
    +
    238 
    +
    240 Point3 operator+(const Vector3& v, const Point3& p);
    +
    241 
    +
    243 Point3 operator+(const Point3& p, const Vector3& v);
    +
    244 
    +
    246 Vector3 operator+(const Vector3& v1, const Vector3& v2);
    +
    247 
    +
    248 // Note: no (point + point) operator, that's an undefined operation
    +
    249 
    +
    251 Point3 operator-(const Point3& p, const Vector3& v);
    +
    252 
    +
    254 Vector3 operator-(const Vector3& v1, const Vector3& v2);
    +
    255 
    +
    257 Vector3 operator-(const Point3& p1, const Point3& p2);
    +
    258 
    +
    259 // Note: no (vector - point) operator, that's an undefined operation
    +
    260 
    +
    261 
    +
    262 
    +
    263 
    +
    264 // --- Stream operators ---
    +
    265 
    +
    266 // Vector3
    +
    267 std::ostream & operator<< ( std::ostream &os, const Vector3 &v);
    +
    268 std::istream & operator>> ( std::istream &is, Vector3 &v);
    +
    269 
    +
    270 
    +
    271 } // end namespace
    +
    272 
    +
    273 #endif
    +
    A 3D Point with floating point coordinates, used for storing vertices and all sorts of other 3D graph...
    Definition: point3.h:52
    +
    A 3D Vector with floating point coordinates, used for storing normals and all sorts of other 3D graph...
    Definition: vector3.h:62
    +
    static float Dot(const Vector3 &v1, const Vector3 &v2)
    Returns v1 dot v2.
    +
    float w() const
    In homogeneous coordinates, the w coordinate for all vectors is 0.0.
    Definition: vector3.h:115
    +
    Vector3(float x, float y, float z)
    Constructs a vector (x,y,z,0), where the 0 comes from the use of homogeneous coordinates in computer ...
    +
    float Dot(const Vector3 &v) const
    Returns "this dot v", for example:
    +
    Vector3 Cross(const Vector3 &v) const
    Returns "this cross v", for example:
    +
    Vector3 ToUnit() const
    Returns a normalized (i.e., unit length) version of the vector without modifying the original 'this' ...
    +
    static Vector3 Cross(const Vector3 &v1, const Vector3 &v2)
    Returns v1 cross v2.
    +
    static Vector3 Lerp(const Vector3 &a, const Vector3 &b, float alpha)
    Linear interpolation between two vectors. Alpha=0.0 returns 'a' and alpha=1.0 returns 'b',...
    +
    static const Vector3 & UnitZ()
    (0,0,1) - a shortcut for a special vector that is frequently needed
    +
    static const Vector3 & Zero()
    (0,0,0) - a shortcut for a special vector that is frequently needed
    +
    virtual ~Vector3()
    Vector destructor.
    +
    float Length() const
    Returns the length of the vector.
    +
    float z() const
    Read only access to the z coordinate. Can also use my_vector[2]. Use the my_vector[2] = 1....
    Definition: vector3.h:112
    +
    Vector3()
    Default constructor to create zero vector.
    +
    bool operator==(const Vector3 &v) const
    Check for "equality", taking floating point imprecision into account.
    +
    static const Vector3 & UnitY()
    (0,1,0) - a shortcut for a special vector that is frequently needed
    +
    Vector3 Lerp(const Vector3 &b, float alpha) const
    Linear interpolation between this vector and another. Alpha=0.0 returns this vector,...
    +
    Vector3(float *v)
    Constructs a vector given a pointer to x,y,z data.
    +
    void Normalize()
    Normalizes the vector by making it unit length.
    +
    float operator[](const int i) const
    Read only access to the ith coordinate of the vector.
    +
    Vector3 & operator=(const Vector3 &v)
    Vector assignment operator.
    +
    const float * value_ptr() const
    Returns a const pointer to the raw data array.
    +
    bool operator!=(const Vector3 &v) const
    Check for "inequality", taking floating point imprecision into account.
    +
    float & operator[](const int i)
    Returns a reference to the ith coordinate of the vector. Use this accessor if you wish to set the coo...
    +
    float x() const
    Read only access to the x coordinate. Can also use my_vector[0]. Use the my_vector[0] = 1....
    Definition: vector3.h:104
    +
    static const Vector3 & UnitX()
    (1,0,0) - a shortcut for a special vector that is frequently needed
    +
    float y() const
    Read only access to the y coordinate. Can also use my_vector[1]. Use the my_vector[1] = 1....
    Definition: vector3.h:108
    +
    static Vector3 Normalize(const Vector3 &v)
    Returns a new vector that is the unit version of v.
    +
    Vector3(const Vector3 &v)
    Copy constructor for vector.
    +
    static const Vector3 & One()
    (1,1,1) - a shortcut for a special vector that is frequently needed
    +
    Namespace for the MinGfx Toolkit.
    Definition: aabb.h:21
    +
    Quaternion operator-(const Quaternion &q)
    +
    AABB operator+(const AABB &A, const AABB &B)
    +
    Quaternion operator/(const Quaternion &q, const float s)
    +
    std::ostream & operator<<(std::ostream &os, const Color &c)
    +
    std::istream & operator>>(std::istream &is, Color &c)
    +
    Matrix4 operator*(const Matrix4 &m, const float &s)
    Multiply matrix and scalar, returns the new matrix.
    + +
    + + + + + -- cgit v1.2.3